加载异步时Javascript不起作用

Posted

技术标签:

【中文标题】加载异步时Javascript不起作用【英文标题】:Javascript not working when loaded async 【发布时间】:2012-06-07 01:29:18 【问题描述】:

我的页面上有以下代码:

<script src="https://chatserver.comm100.com/js/LiveChat.js?siteId=&amp;planId=2594&amp;partnerId=-1" type="text/javascript"></script>

这个脚本需要很长时间才能加载,所以我想异步加载它,所以它在下载/渲染页面的其余部分时做它自己的事情。所以我输入了这段代码:

(function() 
    var s = document.createElement('script');
    s.type = "text/javascript";
    s.src = 'https://chatserver.comm100.com/js/LiveChat.js?siteId=&amp;planId=2594&amp;partnerId=-1';
    var x = document.getElementsByTagName('script')[0];
    x.parentNode.insertBefore(s,x);
  )();

但是当我使用后者时,代码不会运行。调试起来有点困难,因为文件被缩小了。

关于异步加载,我有什么遗漏吗?我还需要采取什么其他步骤吗?

谢谢!

【问题讨论】:

您是否尝试使用 html5 异步属性?为什么不把那个属性放在你的&lt;script&gt; 标签中呢? 异步属性只是为了将来验证代码。这是谷歌推荐的。我会删除它,以帮助您克服它。 您的标记上还有其他脚本标签吗?如果不这样做,x 将是未定义的。 x 不能未定义,因为您至少有一个包含上述 sn-p 的脚本。 js 文件使用 document.write 来加载额外的脚本,所以我猜这会破坏它。 @jasssonpet 显然!我怎么能错过! 【参考方案1】:

async 是 script 标签的新 HTML5 属性。你会想要check browser support。如果支持,您根本不必拥有自定义脚本;随便写:

<script ... async="async"></script>

【讨论】:

你是对的,但是还没有支持,所以这对我一点帮助都没有。感谢您抽出宝贵时间回答。

以上是关于加载异步时Javascript不起作用的主要内容,如果未能解决你的问题,请参考以下文章

从cookie异步加载身份验证令牌时,React react-router-dom私有路由不起作用

通过 Ajax (WooCommerce) 加载 single_product_content 时变体 Javascript 不起作用

从 UpdatePanel 异步回发后,嵌入式 javascript 不起作用

在ajax加载页面后执行javascript脚本 - 不起作用

通过 XML HttpRequest 加载时 OnClick() 函数不起作用

添加其他 JavaScript 时要求字段验证不起作用