$(window).load在Firefox中似乎无法正常工作

4

我有一些代码需要在网站内容加载完毕后才能执行,因此我将它放在window load内,就像这样:

$(window).load(function() { 
   //some stuff happens
});

在Safari和Chrome中完美运行(我使用的是Mac OSX 10.8),但在Firefox(19.0.2)中似乎无法正常工作。是否有修复方法或需要应用某些内容才能使Firefox与其一起工作?

如果我清除Firefox中的缓存,它就可以正常工作,但在此之后任何时间都不起作用。


你的代码可能存在问题。你使用的jQuery版本是什么?你能发布一些代码吗?你需要排除问题,不要马上假定问题出在$(window).load jQuery方法... - silentw
尝试使用这个fiddle来查看它是否有效。 - silentw
@silentw 我使用jQuery 1.9.1,我认为在Firefox浏览器中fiddle无法正常工作,因为我会在图像完成加载之前收到警报消息。这太奇怪了,Opera浏览器也存在同样的问题。 - Ilja
你能解决这个问题吗? - Mohammed Joraid
1
@MohammedJoraid 是的,这很奇怪。在我的电脑上开发时它不起作用,但是一旦我将网站放到主机上并在线上,一切似乎都可以工作。 - Ilja
6个回答

5
如果有其他人从谷歌搜索找到这个页面... 对我来说,以下内容可以在Firefox中工作:
$(window).load(function() {
    //Do something
});

当页面被缓存,例如单击后退按钮时,$(window).load() 将不再被调用。有关错误报告,请参见此处。这是 Firefox 的预期行为,因此不要指望会有修复。
为了解决这个问题,有两种方法:一种是在你的$(window).load() 代码之外使用以下代码停止浏览器缓存页面,另一种是在服务器端发送HTTP头以阻止缓存。
window.onunload = function(){}; //This forces bfcache to not cache the page

或者使用其他jQuery事件代替$(window).load():

window.onpageshow = function () {
    //Do something
};

3
“window.onpageshow” 在我的火狐浏览器上完美地运行。谢谢! - train

2
你尝试过 window.onload = function(){} 吗?

刚试了一下,仍然没有反应,在Opera中也出现了同样的问题。 - Ilja
为什么这个答案被接受,但是原始问题的提出者回应说它对他们没有起作用?有点令人困惑... - Louis B.

1

如果您使用 jQuery。请使用 jQuery 事件:

$(document).ready(function(){
    // YOUR CODE
});

请记住,这不提供与 $(window).load 相同的功能。 - Louis B.

0

试试这个。它在所有浏览器中都可以工作。

<script type="text/javascript">
window.onload=function(){
    alert('do something');  
}
</script>

1
同样的东西,但这个在我第一次加载页面时就能工作,我猜它被缓存了,然后再也不起作用了。 - Ilja

0

只需要简单地做

my_function(){
    // some code
}

窗口加载完毕后执行my_function函数


0
这是我的修复,这样我就不必重写很多代码了,尤其是在使用匿名函数的时候...
// this must be at the very top
window.loaded = false;
window.addEventListener( 'load', function(){
    window.loaded = true;
});

// ...

jQuery(document).ready(function($){
    // add `loaded` to the events
    $(window).on('load loaded resize scroll', function(){
        // ...
    });

    // this must be at the very bottom
    if( window.loaded ){
        $(window).trigger('loaded');
        $(document).trigger('loaded');
    }
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接