javascript - 从动态加载的外部javascript文件访问变量

标签 javascript jquery dom

我有一个正在使用 document.createElement() 加载的外部 js 文件(我无法修改),我需要从中访问一个变量。问题是,我不知道它什么时候完成加载。我尝试了 jQuery 的文档就绪功能,但它似乎比 javascript 文件部署得更快。我可以像这样访问变量:

setTimeout("console.log(swifttagdiv.firstChild.firstChild.src)", 5000);

但这只是一个检查变量是否是全局变量的测试。有什么想法吗?

最佳答案

您可以使用 Javascript 注入(inject)脚本,而不是将其放入您的页面。这样您就可以控制何时加载它。

这是我用来在页面中动态注入(inject)代码的函数:

    function inject(src, cb, target){
        target = target || document.body;
        var s = document.createElement('SCRIPT');
        s.charset = 'UTF-8';
        if(typeof cb === 'function'){ 
            s.onload = function(){
                cb(s);
            }; 
            s.onreadystatechange = function () {
                (/loaded|complete/).test(s.readyState) && cb(s);
            };                     
        }
        s.src = src;
        target.appendChild(s);
        return s;
    }

使用它:

inject('/path/to/file.js', function(script){
   //your code here
})

关于javascript - 从动态加载的外部javascript文件访问变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897414/

相关文章:

javascript - 创建一页视差样式,封面背景

javascript - Android 手机问题(100vh 和位置固定页脚错误)

javascript - ChartJS——当我必须缩放时如何更改刻度颜色?

javascript - jQuery val() 在动态生成的输入上失败

jquery - 按特定顺序对 div 进行排序

JQuery获取数组的第n个元素

javascript - 在 jQuery 'click' 中创建的对象仍然存在,即使创建了一个新对象

javascript - 通过 JavaScript 设置 anchor 标记的 innerHTML

javascript - 如何在 Knockout.js 模板中使用 jQuery?

javascript - Rangy - 替换innerHTML时恢复光标位置