我有一个复杂的情况,涉及从不同来源加载脚本,但要理解我的问题,我认为如果我问一个关于我不太熟悉的AMD模块的简单问题会更容易。
在使用AMD模块的网站上,有一个可用的定义功能。 如果我尝试定义和加载这样的模块会发生什么:
define([], () => { return { thisIsMyTest: true } })
我如何才能知道我刚刚定义的那个模块的访问权限?
我尝试在 require._defined
中查看但是我无法看到它(我可能也错过了它,因为我不确定要查找的名称)。
想要访问该对象的脚本不是AMD兼容的脚本,但我可以控制该方面,所以我很乐意为它编写代码。
现在为问题添加更多澄清,我有一个加载到网站上的脚本(我无法控制),我的脚本远程加载另一个外部脚本(我没有任何控制权) )。在正常情况下,这个外部脚本将自身暴露为Window对象的变量,但是它支持AMD模块,并且这个站点使用AMD,因此在这种情况下,这个外部脚本使用了加载的define方法,我无法弄清楚如何访问它。
更新
以下是我的代码片段,用于加载我的外部库:
const libScript = document.createElement('script');
libScript.type = 'text/javascript';
libScript.src = '//some/3rdparty/lib.js'; // source
libScript.onload = () => {
// Use the library that normally exists on window.Lib
// However libScript in this site loads using AMD
// and window.Lib doesn't exist for sites that use AMD
// Other non AMD sites work fine.
};
document.head.appendChild(libScript);