是匿名时执行的onload事件是在执行后发布的吗?
就像你这样做
var tempImg = new Image()
tempImg.onload = function () {
alert("loaded");
}
tempImg.src = "https://images.google.ca/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
Run Code Online (Sandbox Code Playgroud)
或这个
<img id='img' />
<script>
var tempImg = document.getElementById("img")
tempImg.onload = function () {
alert("loaded");
}
tempImg.src = "https://images.google.ca/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png";
</script>
Run Code Online (Sandbox Code Playgroud)
您是否必须以某种方式清除它以防止在其他地方更改图像时再次触发事件?如果是这样,那么正确的方法是什么?刚设置为undefined?你能在里面清楚吗?
小智 5
如果使用onload属性分配事件侦听器,则不会自动释放它.在某些情况下,它可以再次触发,例如图像源被修改.你可以将其设置为清除undefined或null,或delete荷兰国际集团的财产.这可以在事件处理函数本身内完成:
image.onload = function(event) {
delete image.onload;
/* do something */
};
Run Code Online (Sandbox Code Playgroud)
如果您正在使用addEventListener()来处理事件,则需要使用removeEventListener().我们可以为函数添加一个内部名称,以便我们可以引用它:
image.addEventListener('load', function myLoadHandler(event) {
image.removeEventListener(myLoadHandler);
/* do something */
});
Run Code Online (Sandbox Code Playgroud)
但是,在较新的浏览器中,有一个比其中任何一个更好的选择.您可以定义一个事件侦听器,它将使用新once选项自动删除自身:
image.addEventListener('load', function(event) {
/* do something */
}, { once: true });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
454 次 |
| 最近记录: |