【问题标题】:onerror event to html tag objecthtml标签对象的onerror事件
【发布时间】:2014-07-01 14:11:47
【问题描述】:

在下面的代码中,所有的 onerror 事件都可以正常工作,除了“Object”标签中提到的那个。没有名为“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 : 请参阅链接“http://www.w3schools.com/jsref/event_onerror.asp”,其中明确表示“object” HTML 标记支持 onerror 事件。

【问题讨论】:

标签: javascript html onerror


【解决方案1】:

&lt;object&gt; 具有 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 来指代被订阅的元素的实例,而不是专门的 &lt;object&gt; 标记。这些示例引用了&lt;img&gt; 标记,它会触发error 事件。

MDNW3 似乎都没有为 &lt;object&gt; 标签指定任何事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2021-08-11
    • 2012-01-11
    • 1970-01-01
    相关资源
    最近更新 更多