window.location.reload不适用于Firefox和Chrome

UID*_*UID 15 javascript firefox jquery google-chrome reload

我想在点击按钮时更改用户状态,所以我所做的就是检测当前状态并根据需要进行更改.

但在这种情况下,更改后端的状态,但要显示页面需要刷新的状态,如刷新时检查当前状态并显示.所以我使用"window.location.reload"属性来显示页面上的最新状态

所有的东西都在IE中工作正常.但在Firefox和Chrome的情况下,状态不会改变.我认为"window.location.reload"不起作用,因为当我只是评论此行并尝试单击按钮并手动刷新页面时,它会显示更改状态.

您能否建议我应该使用什么来在Firefox和Chrome中使用它?

当我用谷歌搜索时,如果你在"setTimeout()"中给出它,我发现它在Firefox和Chrome中可以使用.我尝试过,但即便如此,它也不适合我.

<script>

    $(document.body).on('click', '#activate', function () {
        var pkgVersion = $(this).attr('data-version');
        alert("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion });
        $.get("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion }).done(function () {

        });
         setTimeout(function () { window.location.reload(data); }, 0);
    });
</script>
Run Code Online (Sandbox Code Playgroud)

请指教!

Wel*_*lli 29

我还有两个选择:

history.go(0);
Run Code Online (Sandbox Code Playgroud)

和:

window.location.href = window.location.href;
Run Code Online (Sandbox Code Playgroud)

我还没有在Firefox和Chrome上测试它,但它可能会帮助你更快.明天我会做测试并更新答案,如果这不起作用.

  • 谢谢你调查,我尝试了两个选项,但没有运气:-(,我也修改了一点我的代码.它现在"window.location.reload(data);"最后但同样的问题它不会自动重新加载 (2认同)

Mor*_*yae 26

我在AngularJS和Firefox中遇到过这个问题.(重新加载在Chrome中很好).通过使用setTimeout问题解决了.

setTimeout(function(){
  window.location.reload();
});
Run Code Online (Sandbox Code Playgroud)

  • 或者简单地:`setTimeout(location.reload)` (3认同)
  • 几乎为我工作。在 Firefox 50.1.0 (Ubuntu 16.04) 中,这个答案按原样没有任何作用。然而,将其更改为 lambda 表达式确实有效:`setTimeout(() =&gt; window.location.reload());`。 (3认同)

小智 11

你试过这个吗?:

window.location = window.location;
Run Code Online (Sandbox Code Playgroud)

显然你可以放弃"窗口",但是我自己没试过.

  • 它将在没有POST数据的情况下重新加载页面,而reload()将保留POST数据,这是我所知道的唯一区别? (3认同)