사파리 확장 프로그램의 웹 페이지에 jQuery를 삽입하고 싶습니다. 하지만 일부 페이지에만 jQuery를 시작/끝으로 추가하면 모든 페이지에 삽입되므로 탐색 속도가 느려집니다. 나는 그것의 온로드 기능을 사용하여 스크립트 태그를 생성하여 그것을 시도 :Safari 확장 프로그램에서 웹 페이지에 jQuery 삽입
initjquerycheck: function(callback) {
if(typeof(jQuery) != 'undefined'){
callback(jQuery);
}else {
window.setTimeout(function() { initjquerycheck(callback); }, 100);
}
}
그러나 대해서 typeof (jQuery를가) 정의되지 않은 남아 :
var node = document.createElement('script');
node.onload = function(){
initjquerycheck(function($) {
dosomethingusingjQuery($);
});
};
node.async = "async";
node.type = "text/javascript";
node.src = "https://code.jquery.com/jquery-2.0.3.min.js";
document.getElementsByTagName('head')[0].appendChild(node);
JQuery와로드하면 내가 사용 확인. (console.log()를 사용하여 확인). 디버깅 콘솔에서 console.log (typeof (jQuery)) 만 호출하면 'function'이 반환됩니다. 어떤 생각을 고치는 방법? 미리 감사드립니다!
이 첫 번째 옵션을 확장 할 수 ("페이지에 정상적인 방법을 jQuery를 주입을"), 당신을 'addContentScriptFromURL'을 통해 무슨 뜻입니까? – meleyal
또한, 삽입 된 스크립트가 다른 네임 스페이스를 가지고 있다면, 어떻게'window' 객체에 접근 할 수 있습니까 (즉, 어떻게'window'를 액세스 할 수 있습니까? 그것은 본질적으로 자신에게 메시지를 게시하는 것 같습니다. – meleyal
@meleyal, 예,'addContentScript'와'addContentScriptFromURL'을 의미합니다. 주입 된 스크립트가 윈도우 객체에 어떻게 접근하는지에 관해서는, 주입 된 스크립트와 페이지의 스크립트가 마치 두 개의 다른 윈도우에있는 것처럼 행동하는 것으로 보인다. 브라우저에서 같은 공간을 차지하는 가상 윈도우라고 생각할 수도 있습니다. 그러나 이러한 가상 윈도우는 동일한 위치와 원점을 공유하기 때문에 한 스크립트가 다른 가상 윈도우에 메시지를 보낼 수 있습니다. (또한 동일한 DOM을 공유하지만 메시지 전달의 목적과는 관련이 없습니다.) – canisbos