基礎(chǔ)
示例
URL:http://b.a.com:88/index.php?name=kang&when=2011#first
| 屬性 | 含義 | 值 |
|---|---|---|
| protocol | 協(xié)議 | "http:" |
| hostname | 域名 | "b.a.com" |
| port | 端口 | "88" |
| pathname | 路徑名 | "/index.php" |
| search | 查詢字符串("?"后的部分) | "?name=kang&when=2011" |
| hash | 錨點(返回"#"之后的內(nèi)容) | "#first" |
| host | 等于hostname + port | "b.a.com:88" |
| href | 當(dāng)前頁面的完整URL | "http://www.a.com:88/index.php?name=kang&when=2011#first" |
注意
例如:URL:http://b.a.com:88/index.php?name=kang&how=#when=2011#first
search: "?name=kang&how=" 從第一個"?"之后,直到"#"之前的內(nèi)容。包含"?"
hash: "#when=2011#first" 第一個"#"之后的內(nèi)容,直到URL末尾,包含"#"
- window.location和document.location互相等價的,可以交換使用。
- location的8個屬性都是可讀寫的,但是一般來說只有href與hash的寫才有意義。
注:例如改變location.href會重新定位到一個URL,而修改location.hash會跳到當(dāng)前頁面中的anchor(<a id="name">或者<div id="id">等)名字的標(biāo)記(如果有),而且頁面不會被重新加載。
使用詳情
location.assign( url )
location.assign('http://www.baidu.com'); 等同于 window.location = 'http://www.baidu.com'
這種方式會將新地址放到瀏覽器歷史棧中,意味著轉(zhuǎn)到新頁面后“后退按鈕”仍可以回到該頁面。location.replace( url ):
與assign方法一樣,但會從瀏覽器歷史棧中刪除本頁面,也就是說跳轉(zhuǎn)到新頁面后“后退按鈕”不能回到該頁面。目前IE、Chrome只是簡單的跳轉(zhuǎn),只有Firefox會刪除本頁面的歷史記錄。location.reload( force )
重新載入當(dāng)前頁面。force為true時從服務(wù)器端重載;false則從瀏覽器緩存中重載,默認值false。location.hash
要使用 JS 定位錨點,完全可以使用 window.hash 配合元素 ID 完成。比如快速定位到頁面的某條評論,則直接使用如下代碼即可:
window.location.hash = "#comment-5981";
另外 Twitter、Facebook、Google 等已經(jīng)開始大量使用 #! 這種形式的 hash 方法處理異步交互頁面的 URL 可回溯功能。location.search
如果有這樣一個 URL 地址:
http://www.google.com.hk/search?hl=zh-CN&source=hp&biw=1400&bih=935&q=%E8%8A%92%E6%9E%9C%E5%B0%8F%E7%AB%99&aq=f&aqi=&aql=&oq=
如何利用 JS 腳本捕獲頁面 GET 方式請求的參數(shù)?其實直接使用 window.location.search 獲得,然后通過 split 方法結(jié)合循環(huán)遍歷自由組織數(shù)據(jù)格式。
另外,如果根據(jù)用戶的搜索條件刷新頁面,只需直接設(shè)置 window.location.search 即可。window.open
于window.open的參數(shù)小結(jié)(參書改編) 先看一個例子:
window.open("Webpage.asp?",Derek,"height=100,width=100,status=yes,toolbar=yes, menubar=no,location=no");
此語句打開一個新窗口,頁面為webpage.asp,參數(shù)為var,名字為Derek,高為100,寬為100,顯示狀態(tài)欄和工具條,不顯示菜單和地址。
具體總結(jié)的各個屬性參數(shù)如下:
window = object.open([URL ][, name ][, features ][, replace]]]])
URL:新窗口的URL地址
name:新窗口的名稱,可以為空
_blank 表示新開一個窗口,
_parent表示父框架窗口,
_self表示覆蓋該窗口,
xxx表示覆蓋名字為xxx的窗口
(每個窗口都可以給他命名,不能為省略,可以為空!)
featurse:屬性控制字符串,在此控制窗口的各種屬性,屬性之間以逗號隔開。
fullscreen= { yes/no/1/0 } 是否全屏,默認no
channelmode= { yes/no/1/0 } 是否顯示頻道欄,默認no
toolbar= { yes/no/1/0 } 是否顯示工具條,默認no
location= { yes/no/1/0 } 是否顯示地址欄,默認no
directories = { yes/no/1/0 } 是否顯示轉(zhuǎn)向按鈕,默認no
status= { yes/no/1/0 } 是否顯示窗口狀態(tài)條,默認no
menubar= { yes/no/1/0 } 是否顯示菜單,默認no
scrollbars= { yes/no/1/0 } 是否顯示滾動條,默認yes
resizable= { yes/no/1/0 } 是否窗口可調(diào)整大小,默認no
width=number 窗口寬度(像素單位)
height=number 窗口高度(像素單位)
top=number 窗口離屏幕頂部距離(像素單位)
left=number 窗口離屏幕左邊距離(像素單位)
replace : 一個可選的布爾值。規(guī)定了裝載到窗口的 URL 是在窗口的瀏覽歷史中創(chuàng)建一個新條目,還是替換瀏覽歷史中的當(dāng)前條目。支持下面的值:
true - URL 替換瀏覽歷史中的當(dāng)前條目。
false - URL 在瀏覽歷史中創(chuàng)建新的條目。
總結(jié):
至此window.location 總結(jié)的七七八八了。日常的開發(fā)中,這些足夠揮霍了。