程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> 怎樣在Web開發中完美控制IE標題欄

怎樣在Web開發中完美控制IE標題欄

編輯:.NET實例教程


IE以及任何目前浏覽器的標題欄,原本都應該是由<title>這個Html標簽來控制的,當然現在仍然也是。只是目前的鬼趨勢是,你最好不要再刷新你的網頁頁面了,然後還需要接受用戶的任意蹂躏。這也就是傳說中神龍見首不見尾,殺人於無影無形的悖時AJax技術!

    在浏覽器的標題欄中顯示貼切的頁面標題,是一個網頁專業的表現,同時也能對搜索引擎友好。當然如果放上適當的提示信息,也會很有意義。那麼怎麼"動態"的來定制這個標題內容呢?

    我們知道使用ASP動態修改浏覽器title,大概是這樣的語句:

    <title><% = GenerateTitle %></title>

    而在ASP.Net 1.1中,除了仍可以使用上面的方法外,我們多了一個看起來"很美"的方法:

    In ASPx page: 
        <title id="cltTitle" runat="server"></title>
    In CS file: 
        protected HtmlGeneralControl cltTitle;
        . . .
        cltTitle.innerHtml = "birdshome's homepage";

    今天到了ASP.Net 2.0時代,除了上面的兩種方法,我們還可以更容易的修改<title>內容:

   Page.Title = "birdshome's homepage";

    不過上面的"動態"都是在服務器端修改<title>的內容,實際上對於浏覽器來說<title>標簽內的內容是完全固定的了。下面言歸正傳,仔細來說說在客戶端對IE浏覽器標題欄的控制:

    對於IE窗口中的頁面,在頁面DOM對象中,document.title屬性是用來代替<title>元素的innerHtml獲取和設置IE窗口標題欄內容的。請看下面這個示例:

<Html>
<body>
    <!-- page content -->
    <script language="Javascript">    
    document.body.onload = function()
    {
        document.title = "birdshome's homepage";
    };
    </script>
</body>
</Html>

    對,就是這麼簡單就可以設置好普通IE窗口的標題欄。那麼這有什麼好說的呢?這時候如果我們把完全相同的代碼放入模態窗口中執行呢?模態窗口的標題欄是否會被修改?試驗結果卻是讓人沮喪的,完全相同的這段代碼,在模態窗口中就失靈了。難道模態窗口提供的DOM和普通窗口不同嗎?其實模態窗口的DOM和普通窗口是相同的,而不同之處是當模態窗口中的頁面裝載完成後,document.title屬性確實會失效。這就是為什麼在上面的示例代碼onload事件中的語句無效的原因。解決這個限制的方法很簡單,就是要在頁面還未裝載完成時就修改document.title,所以在模態窗口中修改IE標題欄就因該使用這樣的代碼:

<Html>
<body>
    <!-- page content -->
    <script language="Javascript">    
    document.title = "birdshome's homepage";
    </script>
</body>
</Html>

    下面是一個包含了以上兩種修改浏覽器標題欄方法的示例,將其保存為"abc.htm"文件,使用IE打開你就能很直觀看到區別:

<Html>
<body>
    <button onclick="foo()">
        Open</button>
    <script language="Javascript">
    document.body.onload = function()
    {
        document.title = "birdshome's homepage (rewrite)" + unescape(H_A0);
    };

    document.title = "birdshome's homepage (first)" + unescape(H_A0);

    function foo()
    {
&n
bsp;       window.showModalDialog("abc.htm");
    }
    </script>
</body>
</Html>

    結果是普通IE窗口的標題欄會從"birdshome's homepage (first)"快速的變為"birdshome's homepage (rewrite)",而使用Open按鈕開啟的模態對話框的標題將一直是"birdshome's homepage (first)"。從這個示例中我們可以看出來,對於普通IE窗口,其標題欄是可以在頁面生存期的任意時刻進行修改的。而模態窗口的標題欄,我們只能在其頁面裝載完成前(onload事件觸發前)才能修改。非模態對話框,opend by showModelessDialog,對於標題欄的處理和模態對話框完全一樣。

    最後再說一個document.title使用中的技巧,我們知道如果在服務器端"動態"修改頁面title時,我們可以向<title></title>標簽間寫入&nbps;來在標題欄上產生連續的空格輸入效果。這個技巧在模態窗口中尤為有用,這樣一來我們就可以把那討厭的" - Web Page Dialog"字樣用連續空格推到標題欄外去。使用document.title屬性來修改頁面標題欄後,不管是普通窗口還是模態窗口,"&nbsp;"和" "(空格)都不能用了,前者會被直接當字符串顯示在標題欄上,後者添加再多也只有一個" "(空格)的寬度效果。這裡我們又要使用另一個空格,實體&#160;來解決這個問題。代碼如下:

<Html>
<body>
    <script language="Javascript">
    var HexA0s = "%A0 %A0 %A0 %A0";
    
    document.body.onload = function()
    {
        document.title = "birdshome's homepage (rewrite)" + unescape(HexA0s);
    };
    </script>
</body>
</Html>

http://birdshome.cnblogs.com/archive/2006/06/23/control_browser_title.Html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved