typescript - TS2554 预期 1 个参数,但 HTMLImageElement onerror() 为 0
问题描述
我正在创建一个图像并附加一个在发生坏事时onload
调用的处理程序:onerror
var image = new Image();
image.onload = function() {
let img = this as HTMLImageElement;
if (...) {
img.onerror();
}
};
但我收到此img.onerror()
行的错误:
TS2554 Expected 1 argument but got 0
我该如何解决?期望的论点是onerror
什么?
解决方案
正如 MDN 的GlobalEventHandlers.onerror文档中所解释的:
element.onerror
接受具有事件类型的单个参数的函数
这适用于所有元素类型,包括HTMLImageElement
. 对于错误处理程序,使用对象似乎是合乎逻辑的ErrorEvent
,因此您可以在代码中执行以下操作:
if (...) {
let event = new ErrorEvent('error', {
message: 'Something bad happened.'
});
img.onerror(event);
}
但是请注意,上面的代码只是立即调用附加的事件处理程序(如果img.onerror
未设置为函数,则会失败)。
一个更优雅的解决方案是触发事件并让浏览器以与处理所有其他事件相同的方式处理它,包括冒泡到父元素等。您可以通过替换img.onerror(event)
为img.dispatchEvent(event)
.
更多关于触发事件的信息可以在这个 MDN 页面中找到。
推荐阅读
- python - 如何从url读取和写入csv.gz到python
- html - Angular 8 从全屏尺寸的打印垫对话框中删除打印介质中的奇怪线条
- r - 如何根据单列中的重复项在列之间复制数据
- django - Django - 如何将多个外键字段(在 1 个模型内)的计数注释到同一模型
- python - 从数据框中选择行,考虑列的重复值
- spring-boot - 如何在 Spring Boot 测试中编写参数化测试?
- java - Spring Boot 无法使用 findAll 或 findByColumnName 方法获取关系实体
- graphql - 使用 Product Tag 查询产品
- c++ - 如何让这款石头、剪纸、剪刀游戏从计算机中获得正确的输出?
- dcom - Windows 7 与 Windows XP 上的远程 COM 服务器激活有何不同?