【问题标题】:Infinite Refresh Loop in Firefox 3.0Firefox 3.0 中的无限刷新循环
【发布时间】:2011-02-24 00:13:38
【问题描述】:

我在 Firefox 3.0.x 中的 Javascript 遇到了一个奇怪的问题。在 Firefox 3.0.12 中,一旦加载列表正文,页面就会不断重新加载。 Firefox 3.5、Safari 4 和 Chrome 5(都在 Mac 上)都没有遇到这个问题。

编辑:我创建了一个独立的示例,而不是从我现有的代码中提取它。

该问题与在 FF 3.0 中将 location.hash 设置为空字符串时导致页面重新加载的错误有关。

test.js

function welcomeIndexOnLoad() {
  $("#options a").live('click', function () {
    optionClicked($(this), "get_list_body.html");
    return false;
  });

  $(document).ready(function() {
    optionClicked(null, "get_list_body.html");
  });
}

function optionClicked(sender, URL) {
  queryString = "";
  if (sender != null) {
    queryString = $(sender).attr("rel");
  }
  $("#list_body").load(URL + "?" + queryString, function(resp, status, AJAXReq) {
    console.log(resp);
    console.log("" + status);
    location.hash = queryString;
  });
}​

test.html

<html>
<head>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
  <script type="text/javascript" src="test.js"></script>
  <script>
    welcomeIndexOnLoad();
  </script>
</head>

<body>
<div id="container">
  Outside of list body.
  <div id="list_body">
  </div>
</div>
</body>
</html>

get_list_body.html

<h3>
  <div id="options">
    <a href="#" rel="change_list">Change List</a>
  </div>
<ul>
  <li>li</li>
</ul>

页面重新加载后,jQuery 第 5252 行(一个 xhr.send() 调用)会立即显示在控制台中:

xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );

【问题讨论】:

    标签: javascript jquery ajax firefox xmlhttprequest


    【解决方案1】:

    经过更多搜索,我发现了这个blog post,它提到在 Firefox 3.0 中将位置哈希设置为空字符串会导致页面刷新。

    将我的默认查询字符串更改为“#”而不是空字符串可以解决问题。

    【讨论】:

    • 这似乎无法解决我在 OnePlus 1 上的 fennec 浏览器上遇到的问题。我尝试将 .load() 替换为 $.get() 和 $(selector).html。我仍然遇到同样的问题。有什么想法吗?
    • 我在 5 年前发布了这个。我确定 Firefox 发生了很大的变化,因此您的问题可能是由其他原因引起的。您应该发布一个新问题,让对您的特定设置有更多经验的人能够回答。
    【解决方案2】:

    最有可能的是 live 函数,因为它有一个恒定的流程,在调用 die() 函数之前永远不会结束。尝试使用die().live(...) 测试它

    虽然有时它看起来像是在刷新,但可能并非如此,这可能只是浏览器对内存的处理不当,并且该循环可能会耗尽它,称为内存泄漏。

    另一个原因可能是您的 ajax 页面加载了多次。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多