javascript onload,onclick事件

u4dcyp6a  于 2022-12-28  发布在  Java
关注(0)|答案(5)|浏览(217)

我有一个在页面加载时示例化的方法。该方法触发两个事件,window.onloadimage.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;

    }
}
ujv3wf0j

ujv3wf0j1#

问题在于你只能有一个onload事件。
我建议yuu应该试试这里的addEvent方法:
http://ejohn.org/projects/flexible-javascript-events/

oo7oh9g9

oo7oh9g92#

问题中没有足够的信息来找出问题所在,但需要注意的事项包括:

  • doSomeWork()或imageClickEvent()中的代码是否期望接收指向任何特定对象的'this'?因为当您将方法从其所有者对象剥离以分配给事件处理程序时,它不会接收。
  • 是否有另一个方法写入window.onload或images.onclick,你可能会覆盖它?
plicqrtu

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以确保事件被捕获。

mwg9r5ms

mwg9r5ms4#

查看Firefox 3页面上的代码,然后打开Firefox错误控制台(Ctrl Shift J)查看哪一行断了,然后用新的信息更新你的问题。

cclgggtu

cclgggtu5#

也许你应该在这里添加一个事件监听器,而不是试图捕获window.onload?

相关问题