JS對瀏覽器地址的操作

使用 location 對象可以通過很多方式來改變瀏覽器的位置。首先,也是最常用的方式,就是使用assign() 方法併爲其傳遞一個 URL,如下所示。

location.assign("http://www.wrox.com");



這樣,就可以立即打開新 URL 並在瀏覽器的歷史記錄中生成一條記錄。如果是將 location.href或 window.location 設置爲一個 URL 值,也會以該值調用 assign() 方法。例如,下列兩行代碼與顯式調用 assign() 方法的效果完全一樣。

window.location = "http://www.wrox.com";
location.href = "http://www.wrox.com";



在這些改變瀏覽器位置的方法中,最常用的是設置 location.href 屬性。
另外,修改 location 對象的其他屬性也可以改變當前加載的頁面。下面的例子展示了通過將 hash 、search 、 hostname 、 pathname 和 port 屬性設置爲新值來改變 URL。

//假設初始 URL 爲 http://www.wrox.com/WileyCDA/
//將 URL 修改爲"http://www.wrox.com/WileyCDA/#section1"
location.hash = "#section1";
//將 URL 修改爲"http://www.wrox.com/WileyCDA/?q=javascript"
location.search = "?q=javascript";
//將 URL 修改爲"http://www.yahoo.com/WileyCDA/"
location.hostname = "www.yahoo.com";
//將 URL 修改爲"http://www.yahoo.com/mydir/"
location.pathname = "mydir";
//將 URL 修改爲"http://www.yahoo.com:8080/WileyCDA/"
location.port = 8080;



每次修改 location 的屬性( hash 除外),頁面都會以新 URL 重新加載。當通過上述任何一種方式修改 URL 之後,瀏覽器的歷史記錄中就會生成一條新記錄,因此用戶通過單擊“後退”按鈕都會導航到前一個頁面。要禁用這種行爲,可以使用 replace() 方法。這個方法只接受一個參數,即要導航到的 URL;結果雖然會導致瀏覽器位置改變,但不會在歷史記錄中生成新記錄。在調用 replace() 方法之後,用戶不能回到前一個頁面,來看下面的例子:

<!DOCTYPE html>
<html>
<head>
<title>You won't be able to get back here</title>
</head>
<body>
<p>Enjoy this page for a second, because you won't be coming back here.</p>
<script type="text/javascript">
setTimeout(function () {
location.replace("http://www.wrox.com/");
}, 1000);
</script>
</body>
</html>

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章