我制作了一个画布,可以拼接大量小图像,形成一个大图像。
我写了它来监听一个加载了一个单个图像对象的事件,然后将其绘制到画布中,加载下一个图像后将再次触发事件,它将按用户指定的数字停止此递归。
因此,在达到用户指定的数字后,我想停止收听我的图像对象的“加载”事件,如何让我的图像对象(即“img”)停止监听事件“加载”?< / p>
//在这里调试
网页:https://dl.dropbox.com/u/2321732/stitch_images/index.html
Javascript:https://dl.dropbox.com/u/2321732/stitch_images/script/main.js
//便于编辑
JSBin:http://jsbin.com/acakif/1/
注意:我怎么知道事件仍然存在
1.转到网络检查员,javascript控制台
2。
img.src = "https://dl.dropbox.com/u/2321732/stitch_images/images/0_3.jpg"
3。 它不应该记录“已加载的东西”
答案 0 :(得分:4)
在你的代码中我看到:
img.addEventListener("load", drawStitch, true);
但是你删除了这样的监听器:
img.removeEventListener("load", drawStitch);
如果你想删除一个监听器,只需简单地说明你必须将你传递给addEventListener
的所有参数传递给removeEventListener
。
所以在你的例子里有类似的东西:
img.removeEventListener("load", drawStitch, true);
我在Firefox / Firebug中测试了它,并且步骤2不再触发事件:)