【问题标题】:$(document).ready() not firing after redirect with window.location$(document).ready() 在使用 window.location 重定向后未触发
【发布时间】:2011-09-07 09:47:05
【问题描述】:

我已经阅读了其他问题

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 中是否存在某种可能导致问题的安全限制,如果是,我将如何解决它们?

【问题讨论】:

  • 您可能希望发布示例代码以帮助其他人跟踪您的问题。事实上,它可能有很多东西。

标签: jquery redirect document-ready


【解决方案1】:

我在使用后退/前进时遇到了同样的问题。如果您在后退/前进时没有遇到此问题,则可能是错字。但这可能是 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 机器上进行全新安装,没有任何更改。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-27
      • 1970-01-01
      相关资源
      最近更新 更多