1

これは実際には私の前の質問の続きです。追跡したところ、chrome、safari、IE などのブラウザーでは、リロードが原因で機能しないことがわかりました。したがって、window.location.reload() の代わりに、chrome、safari、または IE と互換性のあるメソッドはありますか? 前もって感謝します。

4

1 に答える 1

1

ではなく、ページをリロードする別の方法を探している場合location.reload()。次のものも使用できます。

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

別の(しかし同様の)方法:

window.location = document.URL;

さらに他の方法:

window.location.assign(document.URL);
// or
window.location.replace(location.href); // this will prevent the page to be saved in browser history (back button will not navigate to previous page);
// or
history.go(0); // (not recommended) history object is not public standard but all major browsers support it.

location.reload()パラメータを取ることに注意してbooleanください。デフォルト値は、キャッシュfalseからページをリロードするです。これを設定すると、ブラウザはサーバーからページを取得するよう強制されます。true

あなたの他の投稿を読んだ後(あなたがSocの答えを考慮したかどうかはわかりませんが); Cookie を設定する代わりに、新しい URL のクエリ文字列値からデータを設定/取得することもできると思います。

リダイレクトされたページにデータを渡すには:

// pass the selected index:
var selectedIndex = $('#select-box')[0].selectedIndex;
window.location.href = window.location.href + '?selIndex=' + selectedIndex;

// pass the selected value:
var selectedValue = encodeURIComponent($('#select-box').val());
window.location.href = window.location.href + '?selValue=' + selectedValue;

クエリ文字列からデータを取得するには:

function queryStringToObject(strQS)
{
    var qs = {};
    var pairs = strQS.split('&');

    for (var i = 0; i < pairs.length; i++)
    {
        var key_val = pairs[i].split('=');
        if (key_val.length > 0)
            qs[key_val[0]] = key_val[1] && decodeURIComponent(key_val[1]);
    }
    return qs;
}

var strQS = 'field1=value1&field2=value2&field3=value3';
var qs = queryStringToObject(strQS);
console.log(qs);

これは出力されます:

{ field1: "value1", field2: "value2", field3: "value3" }

を使用window.location.search.substring(1)して、現在の URL からクエリ文字列を取得できます。

于 2013-02-13T22:55:44.340 に答える