【问题标题】:window.onload function doesn't work on Mozilla Firefoxwindow.onload 函数在 Mozilla Firefox 上不起作用
【发布时间】:2013-04-01 15:36:18
【问题描述】:

我正在为网页使用加载屏幕,并使用 window.onload 函数。

除了在 Mozilla Firefox 浏览器中,一切都很好。当我们第一次使用 ctrl+F5 组合访问或刷新页面时,加载屏幕永远不会消失。如果我们只用 F5 刷新页面,那么它可以工作。

我使用下面的代码

$(window).load(function(e) {
    $("#body-mask").fadeOut(1000,function(){
        $(this).remove();
    });
});

我也尝试了下面的代码,但没有任何改变。

window.onload = function () {
   $("#body-mask").fadeOut(1000,function(){
       $(this).remove();
   });
}

为什么会这样?

请帮忙。

提前致谢。

【问题讨论】:

  • 为什么不试试$(document).ready()呢?
  • 嘿@Scott,$(document).ready() 在加载 dom 时触发,但我希望在加载包括图像等所有内容时触发该函数
  • @Onur - 好的,那么 $(window).load 就是你想要的。我会创建一个jsFiddle 来测试你想要什么。如果它在那里工作,那么问题很可能出在您的标记或其他干扰的脚本中。
  • @Scott 你是对的,我刚刚发现了问题,另一个名为 jquery vegas 的脚本正在干扰这个功能。感谢您的帮助。

标签: javascript jquery firefox onload mozilla


【解决方案1】:

问题是由另一个 jquery 后台插件引起的,该插件位于 $(document).ready() 中

我将它移到 $(window).load() 函数中,现在它可以完美运行了。

我还移动了另一个函数来调整页面加载时的图像大小。当它在 $(document).ready() 块中时,如果加载时间太长,有时它会出现故障,但现在它也很好用。

function resizeImages(){
    //Some Code
}

$(window).load(function(){
    $("#body-mask").fadeOut(1000,function(){
        $(this).remove();
    });

    $.vegas({
        src: backURL , fade:0
    });

    resizeImages();
});

$(document).ready(function(){
    //Some Other code
});

【讨论】:

  • 哪个“后台插件”导致了问题?
  • @ppasler 是这个 jquery vegas 插件,但那时可能是版本 1。
【解决方案2】:

我在脚本标签中键入错误的类型属性时遇到了同样的问题:

<script type="text/javascript">

【讨论】:

    【解决方案3】:

    试试这个:

    $(document).ready(function(e) {
        $("#body-mask").fadeOut(1000,function(){
            $(this).remove();
        });
    });
    

    阅读loadready functions difference What is the difference between $(window).load and $(document).ready?

    【讨论】:

    • 如果您的page 有超过1 个window.load function,那么只有1 个有效。
    • 我只有 1 个 window.load 函数,并且在加载 dom 时需要触发 $(document).ready() 但我希望在所有内容(包括图像等)时触发该函数。 . 已加载
    【解决方案4】:

    您必须在初始化时调用函数,例如:

    window.onload = init();
    

    换句话说,将您的代码修改为:

    window.onload = function () {
    $("#body-mask").fadeOut(1000,function(){
        $(this).remove();
    });
    }();// Added
    

    复制以下代码到文件中,然后用firefox打开

    <script>
    window.onload = function () {
    alert('saeed')
    }();
    </script>
    

    【讨论】:

    • 这会立即调用处理程序,而无需等待文档完全加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-06-20
    • 2014-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    相关资源
    最近更新 更多