javascript - 等待脚本对象加载

标签 javascript jquery

<分区>

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

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'));

效果很好,我得到了 [object],这是我想要的结果。

问题是我该怎么做才能在单个批处理中运行它?

最佳答案

通常,您需要在脚本节点 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+。

关于javascript - 等待脚本对象加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11638354/

相关文章:

javascript - export default myVar 和 export default myFunc() 的区别

javascript 赋值和值 [和逗号运算符]

javascript - CSS 和 jQuery 制作一个滑动面板,将另一个 div 水平推,而不是向下推,并且右侧面板必须填充所有页面

jquery - 如何将 jQuery 1.9.0 中的事件绑定(bind)到通过 Ajax 加载的元素?

jQuery Select2 - 从原始选项的选择中获取样式属性

javascript - jQuery - element.on 点击​​匹配案例

javascript - Angular 翻译不会反射(reflect)在 View 中

javascript - 识别网站是否有 AJAX 请求

Javascript/jQuery 让函数在继续之前等待回调

javascript - 使用 input[type ="range"] 将值减去到 moment.js