对HTML标记对象的onerror事件

时间:2014-07-01 14:11:47

标签: javascript html onerror

在下面的代码中,除了" 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标记。

1 个答案:

答案 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事件。

MDNW3似乎都没有为<object>标记指定任何事件。