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

6za6bjd0  于 12个月前  发布在  Go
关注(0)|答案(9)|浏览(178)

我想改变用户状态的按钮点击,所以我所做的是,检测当前状态和改变,如果需要的话。
但在这种情况下,在后端更改状态,但要显示状态,页面需要刷新,因为刷新时它会检查当前状态并显示。所以我使用“window.location.reload”属性来显示页面的最新状态
所有的东西都在IE中运行得很好。但在Firefox和Chrome的情况下,状态不会改变。我认为“窗口。位置。重新加载”是不工作,因为当我只是评论这一行,并尝试单击按钮,手动刷新页面,它显示的变化状态。
你能建议我在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>

请建议!

zxlwwiss

zxlwwiss1#

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

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

dojqjjoe2#

我还有两个选择

history.go(0);

以及:

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

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

4ktjp1zp

4ktjp1zp3#

你试过这个吗?:

window.location = window.location;

显然你可以放下“Windows”,但我自己还没有试过。

lvmkulzt

lvmkulzt4#

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

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

。。和服务器响应

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

这消除了Chrome中的不一致性,页面重新加载不会失败。

o2gm4chl

o2gm4chl5#

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

location.reload(true);
w6mmgewl

w6mmgewl6#

在这里,这是工作,我与火狐以及克罗姆和它的工作罚款与IE。

object.reload(forcedReload);
bbmckpt7

bbmckpt77#

从我的Angular 来看,关键的一点是,对我来说,函数的位置必须高于调用的位置。考虑到浏览器从上到下解释JavaScript,如果我的reload代码在调用它的对象下面,它就会失败。如果我把代码放在它上面,window.location.href = window.location.href;成功了

gcmastyq

gcmastyq8#

我刚刚找到的超级解决方案。
你必须模拟发布一个空表单。
HTML

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

JS

document.getElementById("myForm").submit();
cbwuti44

cbwuti449#

我尝试了不同的答案,但对我有效的是参数“true”强制重新加载

setTimeout(()=>{
  window.location.reload(true);
});

相关问题