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

时间:2013-09-23 19:44:56

标签: javascript jquery google-chrome firefox reload

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

但在这种情况下,更改后端的状态,但要显示页面需要刷新的状态,就像刷新时一样,它会检查当前状态并显示。所以我使用“window.location.reload”属性来显示页面上的最新状态

所有的东西在IE中运行良好。但在Firefox和Chrome的情况下,状态不会改变。我认为“window.location.reload”不起作用,因为当我只是评论这一行并尝试点击按钮并手动刷新页面时,它会显示更改状态。

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

当我用Google搜索时,如果你在“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>

请建议!

8 个答案:

答案 0 :(得分:27)

我还有两个选择:

history.go(0);

window.location.href = window.location.href;

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

答案 1 :(得分:26)

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

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

答案 2 :(得分:10)

你试过这个吗?:

window.location = window.location;

显然你可以放弃“窗口”,但是我自己没试过。

答案 3 :(得分:2)

我在Chrome和Firefox中遇到了同样的问题。我能够通过让服务器响应页面的URL来缓解这个问题。对于您的情况,您可以将响应设置为用户状态的新值。以下是两个例子:

$.post('?action=' + myAction, function (data) {
        window.location.href = data;
    });

..和服务器响应

Response.Write("/yourUrl);
Response.End();

这消除了Chrome中的不一致性,并且页面重新加载时没有失败。

答案 4 :(得分:2)

Look this 您可以通过将forceGet参数设置为true来强制重新加载以从服务器获取页面:

location.reload(true);

答案 5 :(得分:1)

这对我和Fire Fox以及Crome及其在IE上工作正常。

object.reload(forcedReload);

答案 6 :(得分:0)

从我的角度来看,关键是我的功能位置必须高于呼叫发起的位置。认为浏览器从上到下解释javascript,如果我的重载代码低于调用它的对象,它就会失败。如果我把代码放在它上面,window.location.href = window.location.href;工作。

答案 7 :(得分:0)

我刚刚找到的巨型解决方案。

您必须模拟以发布空白表格。

HTML

Linguistic_Combos

JS

<form id="myForm" action='@Url.Action("Details","Main", new { id = @Model.ID } )'></form>