onerror 的对立事件是什么
What is the opposing event for onerror
我有一张图片正在通过将图片的 src
更改为 javascript 进行更新。我添加了一个 error
事件侦听器来测试图像是否损坏,如果是则重新加载图像。但如果它没有损坏,我想删除 error
事件侦听器。在处理图像时似乎无法找出与 onerror
相反的正确事件。
<img src="path/to/img.jpg" id="img">
<script>
var img = document.getElementById('img');
var imgURL = "/path/to/new_img.png";
img.addEventListener('error', refresh);
img.src = imgURL;
function refresh(e) {
img.src = imgURL;
if(e.type !== "error") img.removeEventListener('error', refresh);
};
</script>
最后一条语句 e.type !== error
仍然属于错误函数,因此仍然是 false
。如果事件没有产生错误,我需要一些我可以调用的东西。有点像 onsuccess
如果有类似的话。
相反,对于这种特定情况,load
事件指示图像已加载。我很惊讶没有找到记录 on MDN.
var img = document.getElementById('img');
var imgURL = "/path/to/new_img.png";
img.addEventListener('error', refresh);
img.addEventListener('load', refresh); // ***
img.src = imgURL;
然后
function refresh(e) {
img.src = imgURL;
if (e.type !== "error") {
img.removeEventListener('error', refresh);
img.removeEventListener('load', refresh);
}
}
你可以在那里添加一些超时 and/or 延迟逻辑,否则这将不断地重新请求图像 until/unless 它成功了(它可能永远不会这样做,如果 URL无效)。
我有一张图片正在通过将图片的 src
更改为 javascript 进行更新。我添加了一个 error
事件侦听器来测试图像是否损坏,如果是则重新加载图像。但如果它没有损坏,我想删除 error
事件侦听器。在处理图像时似乎无法找出与 onerror
相反的正确事件。
<img src="path/to/img.jpg" id="img">
<script>
var img = document.getElementById('img');
var imgURL = "/path/to/new_img.png";
img.addEventListener('error', refresh);
img.src = imgURL;
function refresh(e) {
img.src = imgURL;
if(e.type !== "error") img.removeEventListener('error', refresh);
};
</script>
最后一条语句 e.type !== error
仍然属于错误函数,因此仍然是 false
。如果事件没有产生错误,我需要一些我可以调用的东西。有点像 onsuccess
如果有类似的话。
相反,对于这种特定情况,load
事件指示图像已加载。我很惊讶没有找到记录 on MDN.
var img = document.getElementById('img');
var imgURL = "/path/to/new_img.png";
img.addEventListener('error', refresh);
img.addEventListener('load', refresh); // ***
img.src = imgURL;
然后
function refresh(e) {
img.src = imgURL;
if (e.type !== "error") {
img.removeEventListener('error', refresh);
img.removeEventListener('load', refresh);
}
}
你可以在那里添加一些超时 and/or 延迟逻辑,否则这将不断地重新请求图像 until/unless 它成功了(它可能永远不会这样做,如果 URL无效)。