我有一个在页面加载时示例化的方法。该方法触发两个事件,window.onload
和image.onclick
。问题是在任何给定时间只有一个事件工作(即:如果我注解image.onclick
方法,window.onload
方法就可以工作)。如何让两者都工作?
这在Firefox(Mozilla)中可以正常工作,但在IE中不行
- 示例 *
test.method = function()
{
window.onload = this.doSomeWork;
for (i = 0; i < images.length; i++) {
var image = images[i];
image.onclick = this.imageClickEvent;
}
}
5条答案
按热度按时间ujv3wf0j1#
问题在于你只能有一个onload事件。
我建议yuu应该试试这里的addEvent方法:
http://ejohn.org/projects/flexible-javascript-events/
oo7oh9g92#
问题中没有足够的信息来找出问题所在,但需要注意的事项包括:
plicqrtu3#
当你在页面加载时触发test.method后,你用一个新值覆盖你的window.onload:this.dosomework,所以在body load的时间范围内,你调用第一个函数,然后立即覆盖,然后第二个函数接管,并执行...你有没有试着把window.onload语句推到test.method的底部?我猜如果函数块太长,第二个window.onload永远不会执行,因为窗口已经完成加载了,它的毫秒,但这一切需要
显然在firefox中函数是在它被覆盖之前执行的,或者可能appened到当前onload,不确定technalities.再次,尝试把onload推到底部,看看发生什么
你真的不应该在body加载之后调用的任何其他函数中调用onload函数,因为无论你多么小心,你都不能依赖于加载时间帧足够长以包含两个事件的事实,你应该在body标记被调用(或完成)之前附加到window.onload以确保事件被捕获。
mwg9r5ms4#
查看Firefox 3页面上的代码,然后打开Firefox错误控制台(Ctrl Shift J)查看哪一行断了,然后用新的信息更新你的问题。
cclgggtu5#
也许你应该在这里添加一个事件监听器,而不是试图捕获window.onload?