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

时间:2016-11-18 18:33:16

标签: javascript html html5

让我们说有人想将以下内容插入其网站:

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

    Plugin.Setup({userId: 100});

</script>

在这种情况下,plugin.js会创建一个&#34;插件&#34;具有&#34;设置&#34;的对象方法

问题是将引发以下错误:

Uncaught ReferenceError: Plugin is not defined

这是可以理解的,因为你无法调用未定义对象的方法。

这种方法可以解决问题:

<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>

然而,我看到其他插件可以逃避这种事情。例如,TypeKit具有以下嵌入代码:

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

他们依赖的是外部脚本https://use.typekit.net/sgye3663.js的加载速度比本地脚本调用&#34; Typekit.load&#34;并且在抛出错误的情况下,Typekit将永远不会加载。

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

1 个答案:

答案 0 :(得分:0)

最好等到页面完全加载,然后从外部对象

执行方法