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

如何在外部javascript文件的try块中访问函数,javascript,html,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('he

我的外部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()中传递的值

我也有一些限制:

  • 无法修改外部js文件
  • 这只需要在javascript中完成。我不能使用jQuery来实现这一点

  • 提前感谢

    我使用以下代码块实现了这一点

    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之后调用函数,方法如下:

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

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

    加载外部js。因此,您的代码中应该有一个方法,即
    函数callback(){console.log(arguments);}
    ,该方法应该在添加脚本之前定义。这就是JSONP的工作方式注入是由一个不同的js文件进行的,我在其中以类似的方式定义了函数回调,但它从未被触发。函数回调是在全局级别定义的还是在外部js文件中定义的块级别函数?请向我们展示您尝试访问在该文件中传递的值的方法
    calback()
    调用。你定义函数了吗?怎么用?在哪里?不要把它弄得那么复杂,尤其不要依赖函数的字符串化(在
    script.text=src
    )。为什么不干脆做
    window.callback=src