正在等待加载脚本对象
Waiting for a script object to load
我正在尝试创建一个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'));
我收到一个空的消息框(结果不好)但如果我把它与这样的处决分开:
步骤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);
上面的代码非常坚固,也可以在IE6+中使用。
您可以尝试这样的操作并检查脚本的就绪状态:
jq.onreadystatechange = function() {
if (this.readyState == 'complete') {
alert($('a'));
}
}
如果您想要一个完整的脚本负载的可靠方法和经过测试的监听器,请尝试第三方库,如:http://yepnopejs.com/
不建议从头开始启动脚本加载程序,今天也不建议。
相关文章:
- 在使用客户端脚本时拾取JSON对象
- 如何在java脚本中传递对象数组
- Firefox插件SDK:在侧边栏和主脚本之间通信对象
- inDesign脚本”;对象无效”;
- 如何打开文件对象(HTML)并在谷歌应用程序脚本中解析它
- 如何使用巴别塔脚本's对象在Javascript中
- 如何为输出Json对象的ajax调用编写客户端脚本
- 谷歌应用程序脚本-正在尝试使用getUrl.TypeError:在对象工作表中找不到函数getUrl
- 如何使用webbrower对象中的脚本调用C#事件
- 重建有角度的java脚本数组对象
- 从PHP脚本获取音频文件时,更改JavaScript音频对象的当前时间
- 如何像java脚本中给定的对象一样,将对象的属性保持在相同的顺序
- 如何向客户端返回带有双引号的字符串?脚本将其解析为JSON对象
- 在执行脚本之前,请查看对象是否未定义
- 在Firefox中与Web内容(页面对象)共享插件对象(内容脚本)
- 正在等待加载脚本对象
- java脚本错误对象没有'不支持此属性或方法
- 如何从从内的