等待脚本对象加载

我正在尝试创建一个jquery脚本,该脚本将从谷歌浏览器的控制台运行,并将分析页面。 我的问题是,当我运行以下代码时:

var jq = document.createElement('script'); jq.src = "http://code.jquery.com/jquery-latest.min.js"; document.getElementsByTagName('head')[0].appendChild(jq); alert($('a')); 

我得到一个带有null的消息框(结果不好)但是如果我把它分成这样的执行:

步骤1:

 var jq = document.createElement('script'); jq.src = "http://code.jquery.com/jquery-latest.min.js"; document.getElementsByTagName('head')[0].appendChild(jq); 

第2步:

 alert($('a')); 

它工作得很好,我得到[对象]这是我想要的结果。

问题是如何在一个批次中运行此操作?

通常,您需要在script nodes onload事件上附加一个侦听器。 jQuery在完全转移并执行之前将无法使用。 喜欢

 var jq = document.createElement('script'), head = document.head || document.getElementsByTagName('head')[0] || document.documentElement; jq.src = "http://code.jquery.com/jquery-latest.min.js"; jq.onload = jq.onreadystatechange = function() { if(!jq.readyState || /loaded|complete/.test( jq.readyState ) ) { jq.onload = jq.onreadystatechange = null; jq = undefined; } } head.insertBefore(jq, head.firstChild); 

上面的代码几乎是rockolid并且在IE6 +中工作。

您可以尝试这样的操作并检查脚本的就绪状态:

 jq.onreadystatechange = function() { if (this.readyState == 'complete') { alert($('a')); } } 

如果您想要一个可靠的方式和经过测试的监听器来完整加载脚本,请尝试第三方库,如:http: //yepnopejs.com/

不建议从头开始脚本加载器,而不是今天。