web-dev-qa-db-ja.com

Firefoxでwindow.location.reloadが機能せず、Chrome

ボタンをクリックするとユーザーのステータスを変更したいので、必要な場合は、現在のステータスを検出して変更するだけです。

ただし、この場合、バックエンドでステータスを変更しますが、ステータスを表示するにはページを更新する必要があります。更新時に現在のステータスを確認して表示します。だから、私は「window.location.reload」プロパティを使用してページに最新のステータスを表示しています

IEではすべてがうまく機能しています。しかし、FirefoxとChromeの場合、ステータスは変わりません。 「window.location.reload」は機能していないと思います。この行をコメントしてボタンをクリックしてページを手動で更新すると、変更のステータスが表示されるためです。

FirefoxとChromeでこの機能を使用するために何を使用する必要があるか提案してください。

グーグルで検索したところ、Firefoxで動作する場所を見つけて、Chrome "setTimeout()"で指定した場合。試してみましたが、それでも動作しませんでした。

<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>

提案してください!

15
UID

他に2つのオプションがあります。

history.go(0);

そして:

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

Firefoxではテストしていませんが、まだChrome=ですが、高速化に役立つかもしれません。

28

AngularJSとFirefoxでこの問題が発生しました。 (Chromeでの再読み込みは問題ありませんでした)。 setTimeout問題を使用することで解決しました。

setTimeout(function(){
  window.location.reload();
});
27
Morteza Ziyae

これを試しましたか?:

window.location = window.location;

どうやら、「ウィンドウ」をドロップできますが、自分で試したことはありません。

11
Shylo Hana

ChromeとFirefoxで同じ問題が発生しました。サーバーにページのURLで応答させることで問題を軽減することができました。ユーザーステータスについては、次の2つの例があります。

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

..およびサーバー応答

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

これにより、Chrome=の不整合が解消され、ページは必ずリロードされます。

2
Michael

これを見てください forceGetパラメーターをtrueに設定することで、サーバーからページを取得するようにリロードを強制できます。

location.reload(true);
2

ここで、これはFire FoxとChrome、そしてIEでうまく機能しています。

object.reload(forcedReload);
1
Dhruv Gurjar

私が見つけたメガソリューション。

空のフォームを投稿するには、シミュレーションする必要があります。

HTML

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

JS

document.getElementById("myForm").submit();
0
Developer

私の観点からの重要な注意点は、関数の場所は、呼び出しが発生した場所の上になければならないということです。ブラウザがjavascriptを上から下に解釈すると考えて、リロードのコードがそれを呼び出すオブジェクトの下にある場合、失敗します。その上にコードを置くと、window.location.href = window.location.href;働いた。

0
Matt Meents