Javascript 正在等待加载脚本对象
我正在尝试创建一个jquery脚本,该脚本将从GoogleChrome的控制台运行,并将分析一个页面。 我的问题是,当我运行以下代码时:Javascript 正在等待加载脚本对象,javascript,jquery,Javascript,Jquery,我正在尝试创建一个jquery脚本,该脚本将从GoogleChrome的控制台运行,并将分析一个页面。 我的问题是,当我运行以下代码时: var jq = document.createElement('script'); jq.src = "http://code.jquery.com/jquery-latest.min.js"; document.getElementsByTagName('head')[0].appendChild(jq); alert($('a')); 我得到一个空的消
var jq = document.createElement('script');
jq.src = "http://code.jquery.com/jquery-latest.min.js";
document.getElementsByTagName('head')[0].appendChild(jq);
alert($('a'));
我得到一个空的消息框(坏结果)
但如果我把它和这样的处决分开:
步骤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'));
它工作得很好,我得到了我想要的结果
问题是如何在单个批处理中运行此操作?通常,您需要在
脚本节点上附加一个侦听器。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);
上面的代码非常可靠,在IE6+中也能正常工作。您可以尝试以下操作并检查脚本的就绪状态:
jq.onreadystatechange = function() {
if (this.readyState == 'complete') {
alert($('a'));
}
}
如果您想要一个可靠且经过测试的侦听器来完成脚本加载,请尝试以下第三方库:
不建议从零开始启动脚本加载程序,今天不建议。是否将此代码放入就绪事件中?不清楚“单独执行”是什么意思。我确信您的代码中没有“step1”和“step2”两个词,但是…我正在运行Google Chrome控制台上的代码勾选这个相关的答案:我应该在其中添加我的警报($('a')?记住我是在Google Chrome控制台上运行的