
IE以及任何目前瀏覽器的標題欄,原本都應該是由<title>這個(gè)HTML標簽來(lái)控制的,當然現在仍然也是。只是目前的鬼趨勢是,你最好不要再刷新你的網(wǎng)頁(yè)頁(yè)面了,然后還需要接受用戶(hù)的任意蹂躪。這也就是傳說(shuō)中神龍見(jiàn)首不見(jiàn)尾,殺人于無(wú)影無(wú)形的悖時(shí)Ajax技術(shù)!
在瀏覽器的標題欄中顯示貼切的頁(yè)面標題,是一個(gè)網(wǎng)頁(yè)專(zhuān)業(yè)的表現,同時(shí)也能對搜索引擎友好。當然如果放上適當的提示信息,也會(huì )很有意義。那么怎么"動(dòng)態(tài)"的來(lái)定制這個(gè)標題內容呢?
我們知道使用ASP動(dòng)態(tài)修改瀏覽器title,大概是這樣的語(yǔ)句:
而在A(yíng)SP.NET 1.1中,除了仍可以使用上面的方法外,我們多了一個(gè)看起來(lái)"很美"的方法:
今天到了ASP.NET 2.0時(shí)代,除了上面的兩種方法,我們還可以更容易的修改<title>內容:
不過(guò)上面的"動(dòng)態(tài)"都是在服務(wù)器端修改<title>的內容,實(shí)際上對于瀏覽器來(lái)說(shuō)<title>標簽內的內容是完全固定的了。下面言歸正傳,仔細來(lái)說(shuō)說(shuō)在客戶(hù)端對IE瀏覽器標題欄的控制:
對于IE窗口中的頁(yè)面,在頁(yè)面DOM對象中,document.title屬性是用來(lái)代替<title>元素的innerHTML獲取和設置IE窗口標題欄內容的。請看下面這個(gè)示例:
對,就是這么簡(jiǎn)單就可以設置好普通IE窗口的標題欄。那么這有什么好說(shuō)的呢?這時(shí)候如果我們把完全相同的代碼放入模態(tài)窗口中執行呢?模態(tài)窗口的標題欄是否會(huì )被修改?試驗結果卻是讓人沮喪的,完全相同的這段代碼,在模態(tài)窗口中就失靈了。難道模態(tài)窗口提供的DOM和普通窗口不同嗎?其實(shí)模態(tài)窗口的DOM和普通窗口是相同的,而不同之處是當模態(tài)窗口中的頁(yè)面裝載完成后,document.title屬性確實(shí)會(huì )失效。這就是為什么在上面的示例代碼onload事件中的語(yǔ)句無(wú)效的原因。解決這個(gè)限制的方法很簡(jiǎn)單,就是要在頁(yè)面還未裝載完成時(shí)就修改document.title,所以在模態(tài)窗口中修改IE標題欄就因該使用這樣的代碼:
下面是一個(gè)包含了以上兩種修改瀏覽器標題欄方法的示例,將其保存為"abc.htm"文件,使用IE打開(kāi)你就能很直觀(guān)看到區別:
結果是普通IE窗口的標題欄會(huì )從"birdshome‘s homepage (first)"快速的變?yōu)?birdshome‘s homepage (rewrite)",而使用Open按鈕開(kāi)啟的模態(tài)對話(huà)框的標題將一直是"birdshome‘s homepage (first)"。從這個(gè)示例中我們可以看出來(lái),對于普通IE窗口,其標題欄是可以在頁(yè)面生存期的任意時(shí)刻進(jìn)行修改的。而模態(tài)窗口的標題欄,我們只能在其頁(yè)面裝載完成前(onload事件觸發(fā)前)才能修改。非模態(tài)對話(huà)框,opend by showModelessDialog,對于標題欄的處理和模態(tài)對話(huà)框完全一樣。
最后再說(shuō)一個(gè)document.title使用中的技巧,我們知道如果在服務(wù)器端"動(dòng)態(tài)"修改頁(yè)面title時(shí),我們可以向<title></title>標簽間寫(xiě)入&nbps;來(lái)在標題欄上產(chǎn)生連續的空格輸入效果。這個(gè)技巧在模態(tài)窗口中尤為有用,這樣一來(lái)我們就可以把那討厭的" - Web Page Dialog"字樣用連續空格推到標題欄外去。使用document.title屬性來(lái)修改頁(yè)面標題欄后,不管是普通窗口還是模態(tài)窗口," "和" "(空格)都不能用了,前者會(huì )被直接當字符串顯示在標題欄上,后者添加再多也只有一個(gè)" "(空格)的寬度效果。這里我們又要使用另一個(gè)空格,實(shí)體 來(lái)解決這個(gè)問(wèn)題。代碼如下:
聯(lián)系客服