Я разрабатываю расширение сафари и динамически вставляю jquery и jqueryui в соответствии с мое требование. и после успешного ввода и загрузки я пытаюсь добавить к нему html-контент. это бросает мне такую ошибку.
TypeError: нуль не является объектом (оценка '$ ("тело") добавить.)
вот моя функция, впрыснуть скрипт после загрузки страницы
function injectFiles(files){
var filesLoaded = 0;
for(type in files){
if(type=="css"){
files[type].forEach(function(v,k){
var linkTag = document.createElement('link');
linkTag.setAttribute("rel", "stylesheet");
linkTag.setAttribute("type", "text/css");
linkTag.setAttribute("href", safari.extension.baseURI +"Scripts/"+v);
document.body.appendChild(linkTag);
linkTag.onload = function(){
filesLoaded++;
};
});
}else if(type == "js"){
files[type].forEach(function(v,k){
var scriptTag = document.createElement('script');
scriptTag.src = safari.extension.baseURI +"Scripts/"+ v;
document.body.appendChild(scriptTag);
scriptTag.onload = function(){
filesLoaded++;
};
});
}
}
var interval = setInterval(function(){
if(filesLoaded == files.totalFiles){
clearInterval(interval);
showDialog();
}
},100);
}
функции to append html content
function showDialog(){
$("body").append('<div id="dialog-confirm" title="Question from university tool"><p><span class="ui-icon ui-icon-alert" style="float:left; margin:12px 12px 20px 0;"></span>Is this the right login page for your school?</p></div><div id="dialog-form" title="Please enter your University URL"><input type="text" size=60 name="txtUniversityUrl" id="txtUniversityUrl" value="" class="text ui-widget-content ui-corner-all"></div>');
}
Возможно, JQuery еще не загружен. вы пытались «jQuery (« body »). append();'? Предположение, что «null» не является объектом, предполагает, что он не видит элемент «body», и поэтому jQuery не может создать объект для этого селектора. – Twisty
Когда я запустил его в FireFox, я вижу следующую ошибку: 'files [type] .forEach не является функцией' – Twisty
У меня есть это до сих пор, которое должно работать так, как вы описали, но я вижу, что' filesLoaded' не выходит за пределы '0'. Это говорит о том, что событие onLoad не запускается при добавлении ссылок на файлы и источников сценариев. https://jsfiddle.net/Twisty/nt0c320p/ – Twisty