加载异步时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=&planId=2594&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=&planId=2594&partnerId=-1';
var x = document.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s,x);
)();
但是当我使用后者时,代码不会运行。调试起来有点困难,因为文件被缩小了。
关于异步加载,我有什么遗漏吗?我还需要采取什么其他步骤吗?
谢谢!
【问题讨论】:
您是否尝试使用 html5 异步属性?为什么不把那个属性放在你的<script>
标签中呢?
异步属性只是为了将来验证代码。这是谷歌推荐的。我会删除它,以帮助您克服它。
您的标记上还有其他脚本标签吗?如果不这样做,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脚本 - 不起作用