JavaScript window.location對象

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
相關文章
相關標籤/搜索