网站延迟加载对讲脚本
Posted
技术标签:
【中文标题】网站延迟加载对讲脚本【英文标题】:Delayed loading intercom script in website 【发布时间】:2019-08-16 01:54:51 【问题描述】:我正在尝试延迟 5 秒加载对讲脚本。
我尝试使用函数 setTimeout 但对讲机无法启动
setTimeout(function ()
function inter()
var w = window;
var ic = w.Intercom;
if (typeof ic === "function")
ic('reattach_activator');
ic('update', w.intercomSettings);
else
var d = document;
var i = function ()
i.c(arguments);
;
i.q = [];
i.c = function (args)
i.q.push(args);
;
w.Intercom = i;
var l = function ()
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://widget.intercom.io/widget/my_id';
var x = d.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
;
if (w.attachEvent)
w.attachEvent('onload', l);
else
w.addEventListener('load', l, false);
console.log("test")
;
inter();
, 5000);
5s 后出现测试控制台日志,但没有对讲。当我不使用功能 setTimeout 对讲机开始正常。有什么想法吗?
【问题讨论】:
页面加载后能否加载脚本?一些库不能因为 document.write 或绑定到 window onload。 旁注;使用单个字符命名变量会大大降低代码的可读性和可维护性。您应该考虑自行记录您的代码的名称,并仅在投入生产时使用 uglifier 和最小化器来减小代码的大小。 您是否尝试在var l = function ()
中添加setTimeout
【参考方案1】:
试试这个
<script>
(function ()
var w = window;
var ic = w.Intercom;
if (typeof ic === "function")
ic('reattach_activator');
ic('update', w.intercomSettings);
else
var d = document;
var i = function ()
i.c(arguments);
;
i.q = [];
i.c = function (args)
i.q.push(args);
;
w.Intercom = i;
var l = function ()
setTimeout(function ()
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://widget.intercom.io/widget/yourID';
var x = d.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
, 5000);
;
if (w.attachEvent)
w.attachEvent('onload', l);
else
w.addEventListener('load', l, false);
)();
不确定您是否需要它,但将来可能会帮助某人
【讨论】:
好的,所以这主要是添加一个setTimeout(..., 5000)
,例如加载对讲前延迟 5 秒以上是关于网站延迟加载对讲脚本的主要内容,如果未能解决你的问题,请参考以下文章