首页 > 解决方案 > 带有无效 PDF 源的嵌入标签不会触发错误

问题描述

我有一个非常简单的网站,其中包含一个加载 PDF 的嵌入元素。如果 PDF 的来源无效,我想向用户显示错误消息。

    <embed src="test.pdf" onerror="showError('pdf')" type="application/pdf">
    <img src="test.png" onerror="showError('img')" alt="">

    <script>
        function showError(file) {
            console.log('failed to load ' + file);
        }
    </script>

test.pdf在上面的例子中,两个来源test.png都不存在。结果,在控制台中,我按预期收到了两个 404 错误。但我只从丢失的图像中获得 1 个控制台日志记录。似乎标签onerror上的事件永远不会触发。<embed>

控制台输出

我还尝试将事件侦听器手动附加到embed标签,甚至将全局侦听器附加到window. 当 PDF 源无效时,两者都不会触发。

所有这些都在 Chrome 浏览器(Chromium 80)中进行了测试。

有没有办法onerror在无效的情况下监听事件src而不必先发出单独的http请求来查看源是否返回错误?

标签: javascripthtml

解决方案


onerror 仅支持以下标签。

<img> <input type="image"> <object> <link>  <script>

我想这就是函数没有在嵌入标签上触发的原因。

请参阅此链接以进行进一步查询https://www.w3schools.com/tags/ev_onerror.asp


推荐阅读