Javascript - onload,onclick事件

时间:2009-02-27 19:44:41

标签: javascript-events

我有一个在页面加载时实例化的方法。该方法触发两个事件,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 个答案:

答案 0 :(得分:1)

问题是你只能有一个onload事件。

我建议yuu应该尝试在这里找到的addEvent方法:

http://ejohn.org/projects/flexible-javascript-events/

答案 1 :(得分:1)

在问题中没有足够的信息来弄清楚出了什么问题,但要注意的事项包括:

  • 是doSomeWork()或imageClickEvent()中的代码,期望收到一个特指的东西?因为它不会,当你从其所有者对象上剥离一个方法以分配给事件处理程序时。

  • 还有另一种写入window.onload或image.onclick的方法,你可能会覆盖吗?

答案 2 :(得分:0)

使用Firefox 3查看页面上的代码。然后打开Firefox错误控制台(Ctrl Shift J)以查看哪条线路正在断开。然后使用新信息更新您的问题。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在页面加载后触发test.method后,用一个新值覆盖window.onload:this.dosomework,所以在正文加载的时间范围内,你调用第一个函数,然后立即覆盖,然后第二个函数接管,并执行...你是否尝试将window.onload语句方式推送到test.method的底部?我的猜测,如果功能块太长,第二个window.onload永远不会被执行,因为窗口已经完成加载,它的毫秒数,但这就是全部需要

显然在firefox中,该函数在被覆盖之前执行,或者可能被加到当前的onload上,不确定技术性。再次尝试将onload推到底部,看看会发生什么

你不应该在身体加载后调用的任何其他函数中调用onload函数,因为无论你多么小心,你都不能依赖加载时间框架足够长以包含这两个事件的事实,你应该在调用(或完成)body标签之前附加到window.onload以确保捕获事件。