Я просто хочу вставить jQuery на веб-страницу из расширения сафари. Но только на некоторые страницы, потому что добавление jQuery в качестве начального/endcript будет вводить его на все страницы, и это замедляет работу браузера. Я попробовал его, создав тег сценария, используя свою функцию OnLoad:Ввод jQuery на веб-страницу с расширением Safari
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 я использую:
initjquerycheck: function(callback) {
if(typeof(jQuery) != 'undefined'){
callback(jQuery);
}else {
window.setTimeout(function() { initjquerycheck(callback); }, 100);
}
}
Но TypeOf (JQuery) остается неопределенной. (проверили, что с помощью console.log()). Только если я вызываю console.log (typeof (jQuery)) из консоли отладки, он возвращает 'function'. Любые идеи, как это исправить? Заранее спасибо!
Не могли бы вы расширить на первый вариант ("впрыснуть Jquery на страницу нормальный путь"), да означает через 'addContentScriptFromURL'? – meleyal
Кроме того, если введенный сценарий имеет другое пространство имен, как он обращается к объекту 'window' (т. Е. Как он может обращаться к« окну », но не' $ ')? Похоже, что он по существу публикует сообщения для себя. – meleyal
@meleyal, да, я имею в виду 'addContentScript' и' addContentScriptFromURL'. Что касается того, как инъекционный скрипт обращается к объекту окна, мне кажется, что введенный скрипт и собственный скрипт страницы действуют так, как будто они обитают в двух разных окнах; можно подумать о них как о виртуальных окнах, которые занимают одно и то же место в браузере. Но эти виртуальные окна имеют одинаковое расположение и происхождение, поэтому один сценарий позволяет отправлять сообщения другому виртуальному окну. (Они также используют один и тот же DOM, но это не относится к цели передачи сообщений.) – canisbos