저는 외부 JS 파일을 포함하는 데 사용되는 자바 스크립트 함수가 있지만 한 번만 사용합니다. 이러한 함수가 필요한 이유는 AJAX를 통해 일부 내용이로드 될 때 호출되기 때문에 해당 내용에 대해 페이지 특정 코드를 실행해야하기 때문입니다 (아니요, 단지 .live
을 사용하면 해당 내용을 처리하지 못합니다). 이 외부 파일을로드, 함수가 호출되고,로드 할 때 해당 파일이 실행되는 :자바 스크립트 파일을 동적으로 한 번만 포함합니다.
$.include_once = function(filename) {
if ($("script[src='" + filename + "']").length === 0) {
var $node = $("<script></script>")
.attr({
src : filename,
type : "text/javascript"
})
;
$(document.body).append($node);
}
};
이 잘 작동 :
여기에 간결 단축 내 시도입니다. 완전한.
문제는 항상 외부 파일을 다시로드한다는 것입니다. 스크립트의 존재 여부를 확인하기 위해 사용하는 쿼리는 항상 아무 것도 찾지 않습니다!
이 디버깅
, 나는 몇 줄 추가 :alert($("script").length); // alerts: 4
$(document.body).append($node);
alert($("script").length); // alerts: 4
동적 소스 (방화범의 HTML 탭)에서 상대를, 나는 모든 스크립트 태그를 찾을 수 없습니다.
내가 이전에 포함시킨 파일 배열을 유지할 수 있다는 것을 알고 있지만, (작동하는 경우)이 같은 방법을 사용하기를 바랬습니다. JS 파일이 이런 식으로 포함됩니다.
누구나이 두 번째 발췌 문장의 동작을 설명 할 수 있습니까?
우수한 응답. 나는 jQuery가 그 자체 또는 뭔가를 위해 너무 영리하다고 생각했다. – nickf
@nickf : 대부분의 jQuery의 내부에 대해 그렇게 느낍니다. (너무 영리합니다.) 거기에 많은 악이 있습니다. –