作為HTMLDocument的一個實例,docunent對象還有一些標準的Document對象所沒有的屬性。些屬性提供了document對象所表現(xiàn)的網(wǎng)頁的一些信息。其中第一個屬性就是title,包含著title元素中的文本——顯示在瀏覽器窗口的標題欄或標簽頁上。通過這個屬性可以取得當前頁面 的標題,也可以修改當前頁面的標題并反映在瀏覽器的標題欄中。修改title屬性的值不會改變title元素。來看下面的例子:
//取得文檔標題
var originaITitle=docunent.title;
//設置文檔標題
document.title= "New page title";
接下來要介紹的3個屬性都與對網(wǎng)頁的請求有關,它們是URL、domain和referrer。URL屬性中包含頁面完整的URL(即地址欄中顯示的URL),domain屬性中只包含頁面的域名,而referrer屬性中則保存著鏈接到當前頁面的那個頁面的URL。在沒有來源頁面的情況下,referrer屬性中可能會包含空字符串。所有這些信息都存在于請求的HTTP頭部,只不過是通過這些屬性讓我們能夠在JavaScrip中訪問它們而已,如下面的例子所示:
//取得完整的URL
var url=document.URL;
//取得域名
var domain=document.domain;
//取得來源頁面的URL
var referrer=document.referrer;
URL與domain屬性是相互關聯(lián)的。例如,如果document.URL等于http://www.gimmickmag.com/website/index.html,那么document.domain就等于www.gimmickmag.com。
在這3個屬性中,只有domain是可以設置的。但由于安全方面的限制,也并非可以給domain設置任何值。如果URL中包含一個子域名,例如wx.jxbh.cn,那么就只能將domain設置為"jxbh.cn"(URL中包含"www",如www.gimmickmag.com時,也是如此)。在此南昌網(wǎng)站制公司百恒網(wǎng)絡開發(fā)工程師提醒大家不能將這個屬性設置為URL中不包含的域,如下面的例子所示:
//假設頁面來自wx.jxbh.cn域
document, domain='jxbh.cn"; //成功
document.domain="nczonline.net"; //出錯!
當頁面中包含來自其他子域的框架或內(nèi)嵌框架時,能夠設置document.domain就非常方便了。由于跨域安全限制,來自不同子域的頁面無法通過JavaScript通信。而通過將每個頁面的document.domain設置為相同的值,這些頁面就可以互相訪問對方包含的JavaScript對象了。例如,假設有一個頁面加載自www.gimmickmag.com,其中包含一個內(nèi)嵌框架,框架內(nèi)的頁面加載自wx.jxbh.cn。由于document.domain字符串不一樣,內(nèi)外兩個頁面之間無法相互訪問對方的JavaScript對象。但如果將這兩個頁面的document.domain值都設置為"jxbh.cn",它們之間就可以通信了。
瀏覽器對domain屬性還有一個限制,即如果域名一開始是“松散的"(loose),那么不能將它再設置為“緊繃的"(tight)。換句話說,在將document.domain設置為"jxbh.cn"之后,就不能再將其設置回"wx.jxbh.cn",否則將會導致錯誤,如下面的例子所示:
document.domain=jxbh.cn"; //松散的(成功)
document.domain="wx.jxbh.cn"; //緊繃的(出錯!)
所有瀏覽器中都存在這個限制,但IE8是實現(xiàn)這一限制的最早的IE版本。
本文僅限內(nèi)部技術人員查閱學習交流,不得作于其他商業(yè)用途.原創(chuàng)文章出自:南昌網(wǎng)站建設公司-百恒網(wǎng)絡 http://www.gimmickmag.com 此文禁止轉載,謝謝合作!