Ajax 동적 으로 html 페이지 를 불 러 온 후 js 빠 른 해결 방법 을 실행 할 수 없습니다.
공용 페이지 는 여러 페이지 에서 호출 되 어야 합 니 다.그 중에서 일부 js 는 공용 페이지 에 쓰 여 있 습 니 다.ajax 를 통 해 이 페이지 를 불 러 온 후 js 를 실행 할 수 없습니다.
해결 방향
1.iframe 을 추가 하 는 방법 으로 js 를 집행 하고 저 등 코드 결벽 자 에 게 무시 당 합 니 다.
2.document.write 출력 코드 를 사용 합 니 다.저 등 간결 주의 자 들 이 원 하지 않 습 니 다.
3.가장 간단 한 방법 은 js 를 호출 이 필요 한 부모 페이지 에 두 는 것 입 니 다.이러한 공용 페이지 를 원 하 시 면 모든 곳 에서 한 번 씩 호출 하고 코드 가 불필요 합 니 다.
4.eval 은 해결 방법 이지 만 효과 가 없다.
5.복잡 한 해결 방법:로 딩 페이지 의 모든 js 와 일치 합 니 다.이 js 들 에 게 똑 같은
해결 방안
상기 여러 가지 방식 을 종합 하여 불리 한 요 소 를 제거 하고 비교적 실 용적 인 방법 을 정리 하면 이러한 공용 페이지 에서 ajax 로 딩 을 실행 하 는 js 의 수 요 를 만족 시 킬 수 있 습 니 다.ajax 로 딩 한 공용 함수 에 코드 를 추가 하면 됩 니 다.주요 코드 는 다음 과 같 습 니 다.
// 第一步:匹配加载的页面中是否含有js
var regDetectJs = /<script(.|
)*?>(.|
|\r
)*?<\/script>/ig;
var jsContained = ajaxLoadedData.match(regDetectJs); //ajaxLoadedData为ajax获取到的数据
// 第二步:如果包含js,则一段一段的取出js再加载执行
if(jsContained) {
// 分段取出js正则
var regGetJS = /<script(.|
)*?>((.|
|\r
)*)?<\/script>/im;
// 按顺序分段执行js
var jsNums = jsContained.length;
for (var i=0; i<jsNums; i++) {
var jsSection = jsContained[i].match(regGetJS);
if(jsSection[2]) {
if(window.execScript) {
// 给IE的特殊待遇
window.execScript(jsSection[2]);
} else {
// 给其他大部分浏览器用的
window.eval(jsSection[2]);
}
}
}
}
설명:window.execScript 는 IE 로 인식 하고 다른 브 라 우 저 는 eval 을 사용 해 야 합 니 다.총결산
위 에서 말 한 것 은 소 편 이 여러분 에 게 소개 한 Ajax 동적 으로 html 페이지 를 불 러 온 후에 그 중의 js 빠 른 해결 방법 을 실행 할 수 없습니다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 저 에 게 메 시 지 를 남 겨 주세요.소 편 은 신속하게 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Javascript Ajax에 대한 간단한 연습저는 약 4년 동안 프로그래밍 개인 튜터로 일한 경험이 있습니다. 약 5년 전에 " "이라는 제목의 페르시아어로 내 웹사이트에 블로그 게시물을 올렸고 사람들이 저에게 전화하기 시작했습니다. 나는 항상 사람들을 가르치...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.