2013-04-03 128 views
0

我添加腳本和樣式在head標籤,如果它們不存在這樣的:更改document.readyState屬性

$(function(){ 
    var script = CL.addScriptIfMissing('someurl'); 
    console.log(objectFromScript); 
}); 

addScriptIfMissing工作正常。 然後我從加載的腳本中調用objectFromScript並且它是未定義的,因爲在文檔加載時它不存在並且需要時間加載。我有一個解決辦法:

$(function(){ 
    var script = CL.addScriptIfMissing('someurl'); 
    script.addEventListener('load', function(){ 
     console.log(objectFromScript); 
    }); 
}); 

但我需要其他的解決辦法:我想改變document.readyState回到interactive。以便$(document).ready將在腳本加載時停止並被第二次調用

+0

'$(document).ready()'從來沒有打算等待腳本加載,那麼爲什麼你現在要這麼做呢? – Bergi

+0

@Bergi你是什麼意思?直到我知道 – karaxuna

+0

編號[RTFM!](http://api.jquery.com/ready/):「*處理程序傳遞給$(document).ready()纔會被觸發。 ready()保證在DOM層次結構完全構建後立即執行*「。沒有關於加載資產的信息,這就是'$(window).on('load')'所做的。 – Bergi

回答

1

您可以這樣做來重置就緒狀態。

$.isReady = false; 

發射準備好的事件。

$.ready(); 

不建議更改$.isReady的值,因爲它可能在將來不起作用。