location 地址對象 它描述的是某一個窗口對象所打開的地址。要表示當前窗口的地址,只須要使用「location」就好了;若要表示某一個窗口的地址,就使用「<窗口對象>.location」。
注意 屬於不一樣協議或不一樣主機的兩個地址之間不能互相引用對方的 location 對象,這是出於安全性的須要。例如,當前窗口打開的是「www.a.com」下面的某一頁,另一個窗口(對象名爲:bWindow)打開的是「www.b.com」的網頁。若是在當前窗口使用「bWindow.location」,就會出錯:「沒有權限」。這個錯誤是不能用錯誤處理程序(Event Handler,參閱 onerror 事件)來接收處理的。 javascript
示例
URL:http://b.a.com:88/index.php?name=kang&when=2011#first php
|
|
|
protocol: |
協議 |
"http:" |
hostname: |
服務器的名字 |
"b.a.com" |
port: |
端口 |
"88" |
pathname: |
URL中主機名後的部分 |
"/index.php" |
search: |
"?"後的部分,又稱爲查詢字符串 |
"?name=kang&when=2011" |
hash: |
返回"#"以後的內容 |
"#first" |
host: |
等於hostname + port |
"b.a.com:88" |
href: |
當前頁面的完整URL |
"http://www.a.com:88/index.php?name=kang&when=2011#first" |
window.location和document.location互相等價的,能夠交換使用 html
location的8個屬性都是可讀寫的,可是隻有href與hash的寫纔有意義。例如改變location.href會從新定位到一個URL,而修改location.hash會跳到當前頁面中的anchor(<a id="name">或者<div id="id">等)名字的標記(若是有),並且頁面不會被從新加載 java
注意
URL:http://b.a.com:88/index.php?name=kang&how=#when=2011#first 瀏覽器
search: |
"?name=kang&how=" |
第一個"?"以後 |
hash: |
"#when=2011#first" |
第一個"#"以後的內容 |
方法location.assign( url ) location.assign('http://www.baidu.com'); 等同於 window.location = 'http://www.baidu.com'
這種方式會講新地址放到瀏覽器歷史棧中,意味着轉到新頁面後「後退按鈕」仍能夠回到該頁面。 location.replace( url ) 與assign方法同樣,但會從瀏覽器歷史棧中刪除本頁面,也就是說跳轉到新頁面後「後退按鈕」不能回到該頁面。目前IE、Chrome只是簡單的跳轉,只有Firefox會刪除本頁面的歷史記錄。 location.reload( force ) 從新載入當前頁面。force爲true時從服務器端重載;false則從瀏覽器緩存中重載,默認值false。
reload 方法,該方法強迫瀏覽器刷新當前頁面。
語法: location.reload([bForceGet])
參數: bForceGet, 可選參數, 默認爲 false,從客戶端緩存裏取當前頁。true, 則以 GET 方式,從服務端取最新的頁面, 至關於客戶端點擊 F5("刷新")
replace 方法,該方法經過指定URL替換當前緩存在歷史裏(客戶端)的項目,所以當使用replace方法以後,你不能經過「前進」和「後退」來訪問已經被替換的URL。
語法: location.replace(URL) 在 實際應用的時候,從新刷新頁面的時候,咱們一般使用: location.reload() 或者是 history.go(0) 來作。由於這種作法就像是客戶端點F5刷新頁面,因此頁面的method="post"的時候,會出現「網頁過時」的提示。那是由於Session的安全 保護機制。能夠想到: 當調用 location.reload() 方法的時候, aspx頁面此時在服務端內存裏已經存在, 所以一定是 IsPostback 的。若是有這種應用: 咱們須要從新加載該頁面,也就是說咱們指望頁面可以在服務端從新被建立, 咱們指望是 Not IsPostback 的。這裏,location.replace() 就能夠完成此任務。被replace的頁面每次都在服務端從新生成。你能夠這麼寫: location.replace(location.href) 下面是相關的應用與知識點: window.location.href window.top.location.replace("http://www.jb51.net") top.location.href("http://www.jb51.net") window.navigate ("http://www.jb51.net") Html: <meta http-equiv="Refresh" content="0; url=http://baidu.com/" > --------------------------------------- URL即:統一資源定位符 (Uniform Resource Locator, URL) 完整的URL由這幾個部分構成: scheme://host:port/path?query#fragment scheme:通訊協議 經常使用的http,ftp,maito等 host:主機 服務器(計算機)域名系統 (DNS) 主機名或 IP 地址。 port:端口號 整數,可選,省略時使用方案的默認端口,如http的默認端口爲80。 path:路徑 由零或多個"/"符號隔開的字符串,通常用來表示主機上的一個目錄或文件地址。 query:查詢 可選,用於給動態網頁(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技術製做的網頁)傳遞參數,可有多個參數,用"&"符號隔開,每一個參數的名和值用"="符號隔開。 fragment:信息片段 字符串,用於指定網絡資源中的片段。例如一個網頁中有多個名詞解釋,可以使用fragment直接定位到某一名詞解釋。(也稱爲錨點.) 對於這樣一個URL http://www.jb51.net:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere 咱們能夠用javascript得到其中的各個部分 1, window.location.href 整個URl字符串(在瀏覽器中就是完整的地址欄) 本例返回值: http://www.jb51.net:80/fisker/post/0703/window.location.html?ver=1.0&id=6#imhere 2,window.location.protocol URL 的協議部分 本例返回值:http: 3,window.location.host URL 的主機部分 本例返回值:www.jb51.net 4,window.location.port URL 的端口部分 若是採用默認的80端口(update:即便添加了:80),那麼返回值並非默認的80而是空字符 本例返回值:"" 5,window.location.pathname URL 的路徑部分(就是文件地址) 本例返回值:/fisker/post/0703/window.location.html 6,window.location.search 查詢(參數)部分 除了給動態語言賦值之外,咱們一樣能夠給靜態頁面,並使用javascript來得到相信應的參數值 本例返回值:?ver=1.0&id=6 7,window.location.hash 錨點 本例返回值:#imhere