我应该使用啥来代替已弃用的 `onerror` 属性?

Posted

技术标签:

【中文标题】我应该使用啥来代替已弃用的 `onerror` 属性?【英文标题】:What should I use instead of the deprecated `onerror` attribute?我应该使用什么来代替已弃用的 `onerror` 属性? 【发布时间】:2020-01-18 15:42:58 【问题描述】:

在我的图像上,我设置了onerror 属性,以便在图像由于某种原因不可用时使用占位符:

<img
    class="article-img"
    src="path-to-image.jpg"
    
    onerror="this.src='/images/fallback.png'"
>

现在,它看起来像 onerror has been deprecated,但我找不到任何好的资料来说明处理错误的建议替代方法(可能以类似紧凑的方式)。

知道为什么它被弃用也会很有趣。

【问题讨论】:

【参考方案1】:

根据 MDN,它似乎已被弃用为 img 标签属性,而不是全局事件; GlobalEventHandlers.onerror 仍然有效,并且似乎他们还没有将标记属性事件分类为已弃用(在该部分中),他们仍然显示 img 属性示例。

参考:https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/onerror

所以你仍然可以使用它,只是不要将它用作标签属性,你可以将它放在脚本标签或单独的文件中。

顺便说一句,我刚刚在 w3c 验证器上测试了一个带有 onerror 属性的 img 标签,它既没有将其标记为错误也没有作为警告。

【讨论】:

我在 JetBrains 软件中收到 IDE 警告,因为我将其用作属性,fwiw。 到处找,但看不到为什么 img 元素的 onerror 属性在 2017 年在 MDN 中用this commit 标记为弃用,不幸的是更改作者没有说。我已经通过了 html 规范,但我不明白这是基于什么。有什么想法吗?【参考方案2】:

我认为这是一个错误。

WHATWG 在他们的HTML living standard specification 中仍然提到onerror

另外,img 元素上的onerror 属性不包含在它们的obsolete features list 中。

【讨论】:

很高兴知道支持 IE 的替代方案(需要支持商业...否则我知道)

以上是关于我应该使用啥来代替已弃用的 `onerror` 属性?的主要内容,如果未能解决你的问题,请参考以下文章

GUITexture 已弃用,那么我应该使用啥来代替它?

jQuery.type() 已弃用。检查 var 是不是不是对象时,我应该使用啥来代替? [复制]

BaseJQueryEventObject、JQueryEventObject 等已弃用。我们用啥来代替它?

什么应该替换已弃用的 Facebook adView setAdListener 以获取回调?

Flutter:'onError' 在 runZoned 函数上已弃用

我应该如何在 Android 中使用/不使用已弃用的方法