让我们说有人想将以下内容插入其网站:
<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将永远不会加载。
这是进行插件设计的正确方法吗?或者等待窗口加载事件会更好吗?
答案 0 :(得分:0)
最好等到页面完全加载,然后从外部对象
执行方法