脚本旧(1):
document.write('<scr'+'ipt src="http://example.com/script.js?'+Math.random()+'" type="text/javascript" onerror="checkScriptLoaded2();" onload="scriptLoaded2=true;"></scr'+'ipt>');
脚本新(2):
var sNew = document.createElement("script");
sNew.async = true;
sNew.src = "http://example.com/script.js?"+Math.random();
var s0 = document.getElementsByTagName('script')[0];
s0.parentNode.insertBefore(sNew, s0);
如何将此标记放在脚本2中才能正常工作。
onerror="checkScriptLoaded2();" onload="scriptLoaded2=true;"
答案 0 :(得分:0)
像这样:
sNew.onerror = checkScriptLoaded2;
sNew.onload = function() {
scriptLoaded2 = true;
};
你可以learn more about this type of event handling on quirksmode.org。基本上,对于元素支持的大多数事件,都是on<eventname>
属性,您可以为其分配一个函数来处理它。
请参阅MDN上的HTMLScriptElement
documentation(尽管它没有列出事件处理程序)。
另请注意
var s0 = document.getElementsByTagName('script')[0];
s0.parentNode.insertBefore(sNew, s0);
仅在已有另一个现有<script>
元素时才有效。如果脚本不必出现在任何特定位置,那么做MDN建议的更安全一点:
document.head.appendChild(sNew);
答案 1 :(得分:0)
这样。
创建属性并将其添加到脚本元素。
createAttribute()方法创建具有指定名称的属性,并将该属性作为Attr对象返回。
attribute.value属性用于设置属性的值。
element.setAttributeNode()方法用于将新创建的属性添加到元素中。
function checkScriptLoaded2()
{
alert("Error in loading.")
}
var sNew = document.createElement("script");
sNew.async = true;
sNew.src = "https://example.com/script.js?"+Math.random();
sNew.setAttribute('onerror', 'checkScriptLoaded2();') // Shorthand as suggested by Felix
var att = document.createAttribute("onload"); // Elaborated way
att.value = "scriptLoaded2=true;"
sNew.setAttributeNode(att)
var s0 = document.getElementsByTagName('script')[0];
s0.parentNode.insertBefore(sNew, s0);
&#13;
<div>hello</div>
&#13;