正在等待加载脚本对象

Waiting for a script object to load

本文关键字:对象 脚本 加载 在等待      更新时间:2024-02-26

我正在尝试创建一个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 nodesonload事件上附加一个侦听器。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/

不建议从头开始启动脚本加载程序,今天也不建议。

相关文章: