如何在外部javascript文件的try块中访问函数

时间:2017-07-06 21:40:16

标签: javascript html

我的外部js文件有以下脚本:

try {
callback({x: 'abc', y: 'cde' });
}
catch(e) {
}

我已使用以下方法动态注入此脚本:

const script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://example.com/external.js';
document.getElementsByTagName('head')[0].appendChild(script);

我能够注入脚本,但是我无法访问外部js的callback()中传递的值。

我也有一些限制:

  1. 无法修改外部js文件。
  2. 这只需要在javascript中完成。我不能使用jQuery。
  3. 提前致谢

1 个答案:

答案 0 :(得分:0)

我能够使用以下代码块实现此目的

const src = function callback(data) {
    console.log(data);
};
const injectFunc = () => {
    window.callback = src;
};
const injectScript = () => {
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.async = true;
    script.src = 'http://example.com/external.js';
    document.getElementsByTagName('head')[0].appendChild(script);
};

以下列方式在app.js初始化后调用该函数:

init () {
injectFunc();
injectScript();
}

通过这种方式,您将获得回调数据变量中的值,如果需要,可以在应用程序中进一步使用。