2013-05-23 3 views
1

В JavaScript, я вставив <script tag> в IFRAME, как это:Как подождать, когда узел скрипта завершит загрузку?

var iframe = document.getElementById('iframe'); 
var doc= iframe.contentWindow.document.getElementsByTagName('head')[0]; 

var jquery = document.createElement("script"); 
jquery.type = "text/javascript"; 
jquery.src = "jquery-1.9.1.min.js"; 

var script = document.createElement("script"); 
script.type = "text/javascript"; 
script.src = "blah.js"; 

doc.appendChild(jquery); 
doc.appendChild(script); 

Однако есть JQuery код в blah.js, а иногда этот скрипт не потому, что скрипт JQuery не закончил загрузку еще. Есть ли способ подождать, пока он закончит загрузку?

Спасибо.

+0

используя 'onready'? – Ven

+0

как вы это используете? – omega

+0

'script.onready = function() {...}' (или быть классным парнем и использовать addEventListener/attachEvent) Я полагаю, что – Ven

ответ

1

Добавить обратный вызов в конце первого скрипта.

в конце jquery.js:

if (window.jqueryLoaded) 
    window.jqueryLoaded(); 

в вашем коде:

// create the function that will be called once jquery finishes loading 
function jqueryLoaded() 
{ 
    doc.appendChild(blah); 
} 

// load jquery 
doc.appendChild(jquery); 

Альтернатива (на самом деле не рекомендуется) способом с помощью таймера, если вы не можете изменить JQuery. JS файл:

var checkjQuery = window.setInterval(function() { 
    if (!window.jQuery) 
     return; 
    window.clearInterval(checkjQuery); 

    window.jqueryLoaded(); 
}, 10); 
+0

Есть ли другой способ, я не могу изменить файл 'jquery-1.9.1.min.js '' – omega

+0

, отредактировал ответ, чтобы показать подход с таймера. –

Смежные вопросы