2013-04-03 64 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的值,因为它可能在将来不起作用。