1

我已阅读其他问题

jQuery $(document).ready() 在 window.location.href 之后没有触发

jQuery $(document).ready() 没有触发

为什么 $(document).ready 不为我开火?

然而,似乎没有一个解决方案有效......

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

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

Firefox 中是否存在某种可能导致问题的安全限制,如果是,我将如何绕过它们?

4

2 回答 2

0

在我找到更好的选择之前,<body onUnload="">在 FF5 中为我工作。我认为您的问题可能超出此修复范围?

于 2011-07-22T21:00:17.820 回答
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)没有效果。此处记录的“空卸载”技巧也不起作用。

扩展也不是问题 - 我已经尝试将它们全部关闭。我尝试在 Leopard 机器上进行全新安装,没有任何更改。

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

于 2011-07-01T21:01:06.880 回答