Javascript JS加载外部脚本并在本地配置

Javascript JS加载外部脚本并在本地配置,javascript,html,Javascript,Html,假设有人希望在其站点中插入以下内容: <script type="text/javascript" src="https://foo.com/plugin.js"></script> <script type="text/javascript"> Plugin.Setup({userId: 100}); </script> 这是可以理解的,因为您不能调用未定义对象的方法 这种方法可以解决这个问题: <script type="t

假设有人希望在其站点中插入以下内容:

<script type="text/javascript" src="https://foo.com/plugin.js"></script>
<script type="text/javascript">

    Plugin.Setup({userId: 100});

</script>
这是可以理解的,因为您不能调用未定义对象的方法

这种方法可以解决这个问题:

<script type="text/javascript" src="https://foo.com/plugin.js"></script>
<script type="text/javascript">
    function initiatePlugin() {
        Plugin.Setup({userId: 100});
    }

    window.addEventListener ? window.addEventListener('load', initiatePlugin) : window.attachEvent && window.attachEvent('onload', initiatePlugin);
</script>

函数initiatePlugin(){
Plugin.Setup({userId:100});
}
window.addEventListener?window.addEventListener('load',initiatePlugin):window.attachEvent和window.attachEvent('onload',initiatePlugin);
然而,我看到其他插件也能摆脱这种情况。例如,TypeKit具有以下嵌入代码:

<script src="https://use.typekit.net/sgye3663.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>

尝试{Typekit.load({async:true});}catch(e){}
他们所依赖的是外部脚本
https://use.typekit.net/sgye3663.js
加载速度比调用“Typekit.load”的本地脚本快,并且在抛出错误的情况下,Typekit将永远不会加载


这是插件设计的正确方法吗?或者等待窗口onload事件会更好吗?

最好等到页面完全加载,然后从外部对象执行一个方法。

最好等到页面完全加载,然后从外部对象执行一个方法。

最好等到页面加载开始执行代码。很可能
typekit.load()
只是一个事件侦听器,就像您想要的那样。最好等到页面加载后才开始执行代码。很可能
typekit.load()
只是一个事件侦听器,就像您想要的一样。
<script src="https://use.typekit.net/sgye3663.js"></script>
<script>try{Typekit.load({ async: true });}catch(e){}</script>