$(document).ready()在使用window.location重定向后没有触发

时间:2011-06-02 21:14:11

标签: jquery redirect document-ready

我已阅读其他问题

jQuery $(document).ready() not firing after window.location.href

jQuery $(document).ready() not firing

Why is $(document).ready not firing for me?

但是没有一个解决方案似乎有用......

我的问题是jQuery $(document).ready()在Firefox中没有触发,但在重定向后在其他浏览器中触发。我知道js被加载,因为它有一个时间变量附加到结尾以防止缓存。

我尝试使用$(window).load()来获得相同的结果。 Firebug没有显示错误并且正在显示正在加载的脚本,但是ready()函数上的断点永远不会触发。

Firefox中是否存在可能导致问题的某种安全限制,如果是这样,我将如何解决这些问题?

2 个答案:

答案 0 :(得分:0)

使用后退/前锋时我遇到了同样的问题。如果你没有后退/前锋这个问题,那可能是一个错字。但这可能是Firefox的奇怪行为。

这是一个简单的例子,对我来说不适用于后退按钮(即没有事件触发,不涉及重定向):

    <!DOCTYPE html>
    <html>
    <head>
    <title>Simplest JQuery</title>
    <script type="text/javascript" src="jquery-1.6.1.min.js"></script>
    <script type="text/javascript">
    $(document).ready(function() {
        alert("document.ready");
    });
    </script>
    </head>
    <body>
    <div>
    Firefox will not fire document ready on back/forward navigation. Except when it 
    does.<br />
    <a href="navigate-nowhere.html">Go!</a>
    </div>
    </body>
    </html>

Firefox肯定会显示一些错误,因为我在不同的计算机上使用相同的代码获得不同的行为。使用最新的FF5,它无法在Windows 7或Leopard上运行。我在Snow Leopard上有另一台机器,它的工作原理就像在锡上所说的那样。

问题不在于JQuery - 即使删除它并使用addEventListener也没有效果。使用内联事件(即通过body标签中的onload)无效。记录here的“空卸载”技巧也不起作用。

扩展也不是问题 - 我试过全力以赴。我在Leopard机器上尝试了一个干净的安装,没有任何改变。

有趣的是,焦点/ onfocus事件确实有效 - 除非链接仍然在页面中突出显示。在这种情况下,window.onblur事件会在之后触发,但仅在使用tab更改焦点时才会触发。

答案 1 :(得分:0)

在找到更好的替代方案之前,<body onUnload="">在FF5中适合我。我认为你的问题可能会超出这个问题吗?