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

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

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

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

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

当我用Google搜索时,如果你在“setTimeout()”中给出它,我发现它可以在Firefox和Chrome中运行。 我试过了,但即使这样它也不适合我。

 $(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); });  

请指教!

我还有两个选择:

 history.go(0); 

和:

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

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

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

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

你试过这个吗?:

 window.location = window.location; 

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

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

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

..和服务器响应

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

这消除了Chrome中的不一致性和页面重新加载。

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

 location.reload(true); 

这对我来说是Fire Fox以及Crome,它与IE一起工作正常。

 object.reload(forcedReload); 

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