我很好奇,当某些脚本src被浏览器阻止时(例如由于隐身模式),是否可以创建一些HTML元素。考虑下面的代码,如何对其进行修改以实现它?
(function() {
var w = window;
var ic = w.Intercom;
if (typeof ic === "function") {
ic('reattach_activator');
ic('update', intercomSettings);
} else {
var d = document;
var i = function() {
i.c(arguments)
};
i.q = [];
i.c = function(args) {
i.q.push(args)
};
w.Intercom = i;
function l() {
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = 'https://widget.intercom.io/widget/viov7xor';
var x = d.getElementsByTagName('script')[0];
x.parentNode.insertBefore(s, x);
}
if (w.attachEvent) {
w.attachEvent('onload', l);
} else {
w.addEventListener('load', l, false);
}
}
})()
答案 0 :(得分:0)
我已经在上述代码的l
函数中添加了这一行代码...现在,当发生内部通信脚本错误时,它将创建div。
s.onerror=()=>{var ierr=d.createElement('div');ierr.id='intercom-error';d.body.appendChild(ierr)};