【问题标题】:Preventing Firefox reload confirmation阻止 Firefox 重新加载确认
【发布时间】:2012-09-19 06:38:25
【问题描述】:

我正在可编辑的表格中显示某些记录。用户在编辑记录时尝试重新加载表格时,会弹出一个警告该记录有关未保存数据的记录。

function cancelProcess()
{
    if(noEditedRecords !=0)//number of edited records in the table
    {
        var processConfirmation = confirm("You've Edited "+ noEditedRecords +" Records. Are You sure to undo the Changes made?");

        if (processConfirmation ==true){
            window.onbeforeunload = null;
            window.location.reload();
        }
    }
}

当他点击确定重新加载页面时,Firefox 提示为

要显示此页面,Firefox 必须发送重复之前执行的任何操作(例如搜索或订单确认)的信息。

并且在Chrome中打开同一个页面时,没有出现这样的提示。

我试图通过设置window.onbeforeunload = null; 来避免这种情况,但仍然会出现提示窗口。

我也尝试通过更改 Firefox 配置:

browser.sessionstore.postdata

按照 Mozilla 支持页面中的建议将 0 更改为 1

但没有任何效果..如何防止提示?

【问题讨论】:

  • 我感觉你需要的和你要求的不一样。你有机会展示你的代码吗?
  • @JesseJ 已包含代码..

标签: javascript firefox google-chrome reload onbeforeunload


【解决方案1】:

使用

window.location=window.location;

代替

location.reload();

为我工作。

【讨论】:

  • 非常适合我。!!
  • 你拯救了我的一天;)
【解决方案2】:

我解决了这个问题,并且仅以 GET 而不是 POST 的形式发送数据,

它并不适合所有需求,但它确实有效....

我也在使用 location.reload();

【讨论】:

    【解决方案3】:

    在 Firefox 82 (mac) 中,我发现(运气好)正确的参数可以更改:

    dom.confirm_repost.testing.always_accept 设置为 true

    确认请求窗口将消失。

    【讨论】:

      【解决方案4】:
      window.opener.location.href = window.opener.location;
      

      我已经找到了决定here

      (在 Firefox 32 和 Chrome 38 上测试成功。)

      【讨论】:

        【解决方案5】:

        行为是正确的。根据 w3schools reload 有一个默认为 false 的参数 forceGet,因此如果您有 POST 提交,浏览器将尝试重新发送该 POST 数据,因此需要您的确认. Firefox 做到了这一点,而 google chrome 的行为就像 forceGet

        的默认值为 true

        http://www.w3schools.com/jsref/met_loc_reload.asp

        虽然window.location=window.locationwindow.location=window.location.href(或任何其他变体)大部分时间都有效,但当您使用http://www.google.com#test 之类的锚网址时,此方法不会刷新。浏览器将执行与您已经在 google.com 上并通过添加#test 更改 url 时执行的完全相同的操作。浏览器只会尝试在名称为 test 的页面中找到锚标记,然后向下滚动到它,而不刷新浏览器。

        适用于这种情况以及我遇到的任何其他情况的解决方案是window.location.reload(true);

        希望这会有所帮助,

        亚历山德鲁·科索伊

        【讨论】:

          【解决方案6】:

          避免该提示的方法是不要造成用户尝试重新加载 POST 结果页面的情况。

          【讨论】:

          • 除了重新加载窗口之外,还有什么方法可以将窗口恢复到以前的状态?
          • 你可以用Javascript做AJAX。
          • @Emmi 这取决于你想要什么样的先前状态。只需关注 URL 栏并按 Enter,例如,可能做你想做的事。
          【解决方案7】:

          试试这个。

          setTimeout (function () {
              window.location.reload();
          },0);
          

          【讨论】:

            【解决方案8】:

            解决方案对我有用:

            -> 将 POST 请求转换为 GET 请求。

            -> location.reload() 到 window.location=window.location

            【讨论】:

              猜你喜欢
              • 2015-03-12
              • 2021-06-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2014-02-05
              • 1970-01-01
              • 2019-07-13
              • 2013-08-18
              相关资源
              最近更新 更多