在下面的代码中,除了" Object"中提到的那个之外,所有的onerror事件都正常工作。标签。没有名称为" helloworld.swf"的文件。但是不会触发onerror事件。任何人都可以解释一下。
<html>
<head>
<script type="text/javascript">
<!--
window.onerror = function (msg, url, line) {
alert("Message : " + msg );
alert("url : " + url );
alert("Line number : " + line );
}
//-->
</script>
</head>
<body>
<p>Click the following to see the result:</p>
<form>
<input type="button" value="Click Me" onclick="myFunc1();" /><br/>
<input type="text" dir="rtl">
</form>
<object width="400" height="400" data="helloworld.swf" onerror="alert('helloworld.swf not found')"><br/>
</object>
<img src="myimage.gif" onerror="alert('image not found')"/><br/>
</body>
</html>
P.S:请参阅链接&#34; http://www.w3schools.com/jsref/event_onerror.asp&#34;其中明确表示onerror事件由&#34; object&#34; HTML标记。
答案 0 :(得分:1)
<object>
有load
个事件,但不会始终有error
个事件。后者似乎取决于加载的对象的类型。
在Chrome中,以下内容仅触发load
,在Edge,IE和FX中触发error
:
var logDiv = document.getElementById('log');
function logEvt(e) {
logDiv.appendChild(document.createTextNode("\n\t" + e.type + ": " + JSON.stringify(e)));
}
var obj = document.getElementById('obj');
obj.addEventListener('error', logEvt);
obj.addEventListener('load', logEvt);
#log { border:1px solid black; }
<object id="obj" width="100" height="100" data="not-there" type="image/png">Content shown on error.</object>
<pre id="log">Log:</pre>
这可能只是Chrome中的错误。
documentation you have referenced使用术语 object 来引用要订阅的元素的实例,而不是<object>
标记。这些示例引用<img>
标记,该标记会触发error
事件。