在chrome,safari和IE中选择索引重新加载

时间:2013-02-13 22:00:32

标签: javascript jquery ajax google-chrome

这实际上是my previous question的延续。我跟踪并发现在chrome,safari和IE等浏览器上,由于重新加载,它无法正常工作。因此,有没有任何方法,而不是与chrome,safari或IE兼容的window.location.reload()?提前谢谢。

1 个答案:

答案 0 :(得分: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's answer但是);我认为您也可以在新网址中设置/获取查询字符串值中的数据,而不是设置Cookie:

将一些数据传递到重定向的页面:

// 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)从当前网址获取查询字符串。