黃忠成

風雪之閣- i live,so i writing
文章數 - 133, 回應數 - 125, 引用數 - 0


關於我:



黃忠成

  • 資深.NET 技術顧問
  • Run! PC 雜誌專欄作者
  • 程序員雜誌文章作者
  • PC Magazine 雜誌專欄作者
  • MSDN 專欄作者
  • MSDN 特約專屬講師
  • Microsoft .NET專屬講師
  • 台灣微軟特約技術顧問
  • 台灣微軟最有價值專家


  • 批評,指教,鼓勵, 請 寫信給我
    轉載文章請使用連結模式,
    請勿整篇Copy! 謝謝!


    我所提供的教育訓練:

    Windows Forms
    ASP.NET 2.0
    如有課程需要,請與我聯絡!

  • 我的著作:

  • 文章標籤

    全部標籤

    每月文章

    文章分類

    [IE8] 活用開發者工具的HTML/CSS解譯

     

    開發者工具的HTML/CSS解譯
     
    /黃忠成
     
     
    本文主題涵蓋
     
    1.           開發者工具-HTML/CSS解譯器
    2.           開發者工具-即時可改值的強大功能
    3.           用開發者工具來協助完成IE 8 相容
    4.           用開發者工具尋找AJAX問題
     
     
    初探HTML/CSS解譯器
     
       Internet Explorer 8中重新整合並改進了以往曾經單獨出現過的IE Developer Tools工具,除了前面文章所提及的JavaScript除錯支援外,另一個值得一書的特色就是
    HTML/CSS的解譯。
     
       開發者工具會即時的將HTML解譯成一樹狀結構圖,透過這個樹狀結構圖,我們可以輕易的瞭解網頁的配置(Layout),比起以往用Notepad(記事本)一行行的觀看原始碼,
    然後在腦中描繪網頁呈現時的影像,開發者工具簡直就是神器般的存在。你可以開啟MSDN首頁,然後按下F12來啟動開發者工具,如圖1
     
    1
     
    HTML頁籤內左方為目前網頁的配置,以樹狀方式呈現,你可以點選想要查看元素前的【+】號來展開該元素查看其子元素。在選取特定元素後,右方的四個頁籤分別
    可以以CSS Class為主查看該元素所套用的CSS樣式(樣式)、以CSS屬性為單位查看該屬性的設定歷程(追蹤樣式)、整個Layout(格式設定)、該元素的屬性值(屬性)
    我們先看看樣式的頁籤內有何資訊。
     
    圖2
     
    這裡以CSS Class為主,列出了此元素所套用的CSS樣式,裡面也明確描述了那些CSS屬性是設定在那一個CSS Class及那個CSS檔案中,以橫線劃除的屬性代表著該屬性
    已被後來的屬性設定所覆蓋掉。
     
     每個項目前面有個選取框,我們可透過此選取框來決定是否要套用此樣式,這些動作是即時反應的,也就是說你可以在不更改網頁內容的情況下,即時性的改變特定元素的CSS樣式,
    這在調整網頁配置時非常有用,圖3的例子是將MSDN最上方的搜尋框內的background-imagebackground-color選取取消,不套用這兩個屬性。
     
    3
     
    追蹤樣式頁籤中則改以CSS屬性為主列示。
     
    4
     
    在這個頁籤中,你可以一目瞭然的看到特定CSS屬性的設定歷程。
     
    格式設定頁籤中可以查看此元素於此網頁中的配置,這裡可以讓你更改OffsetMarginPaddingBorder及長寬大小,一樣,這些修改是即時反應的。
     
    5
     
     
     
    此例中我嘗試點選Left Border1px後,改為100px,如圖6
     
    6
     
    結果如圖7
     
    7
     
     
    屬性頁籤會顯示目前選取元素的屬性設定,例如套用的CSS Classvaluetype等屬性。
     
    8
     
     
     
     
     
     
    即時可改值的強大功能
     
     
        除了解譯之外,開發者工具更強大的是所有解譯出來的東西大部份都是可更改的,而且這些更改都會即時反應在網頁上,舉例而言,我們可以在HTML
    樹狀圖上選取特定元素,然後改變其屬性值,如圖9
     
    9
     
    確定完成修改後如圖10
     
    10
     
    切換到樣式頁籤後,你也可以修改特定CSS屬性的值。
     
    11
     
    結果如圖12
     
    12
     
    在屬性頁籤中則可以修改HTML元素的屬性值。
     
    13
     
    如果想修改的屬性值不存在,則可以點選空列名稱部份來添加。
     
    14
     
    當你覺得某個網頁特定元素樣式非常喜歡時,還可點選【 具樣式的元素原始檔】按紐,將其由眾多元素的網頁內獨立出來,舉例來說,
    我想把MSDN上的導覽列樣式粹取出來,就只需選取該元素後按下【 具樣式的元素原始檔】按紐即可。
     
    15
     
    然後我會得到僅有該元素+CSS的原始檔。
     
    16
     
    將這些內容複製或直接以檔案選單儲存後瀏覽,會如圖17
     
    17
    如你所見,開發者工具在未來設計網頁時,必定會扮演著相當重要的角色,尤其在你熟悉它後,你會更離不開它。
     
    關於CSS 
     
     頁籤中可以讓我們以CSS檔案為單位來查看此網頁所用到的CSS檔案。
     
    18
     
     
     
    用開發者工具來協助完成IE 8 相容
     
        在IE8推出前,所有人關注的是IE8即將以CSS 2.1為標準,這意味著以往以IE6、7所做出來的網頁,會發生Layout偏移的情況。所幸拜IE 8中的IE 7相容性所賜,
    這場大風暴並沒有真的來到,但對於網頁設計師而言,偷安一事畢竟只是暫宜之舉,讓網頁完全符合IE8標準才是正途。
     
      那在讓網頁符合IE8標準時,開發者工具能幫上什麼忙呢?我們以一個實例來說,http://www.msn.com是一個以IE7相容模式執行的網頁,當你透過開發者工具將
    其改為以IE8標準模式執行時,會發現某區塊產生了偏移了。
     
    圖19
    20
     
    Local new區塊產生了偏移,我們可以透過開發者工具右上角的搜尋列協助找到此元素。偏移的原因是local news區塊的大小在IE 7 IE 8有不同的呈現,因此在IE 8中,
    這個區塊大小需要被放大,很明顯的,我們只要透過屬性頁籤來添加height屬性值,然後放大div class="parent...."的這個區塊的高度,就可以解決。
     
    21
     
    剩下的就是用前面提及的CSS 偵測IE版本或是JavaScript偵測IE版本技巧,讓此網頁在IE 78模式下都能正常運作。
     
     
    用開發者工具尋找AJAX問題
     
     以設定innerHTML屬性值來動態改變某個DIV元素內容,是AJAX技術的平民技巧,不過在IE 8以前的瀏覽器都有一個通病,那就是無法查看到以JavaScript設定innerHTML
    屬性值後的HTML元素內容,這在大量動態產生HTMLDIV元素內容時,成為了很大的困擾,那時我們只能以人眼+低頻率的人腦來嘗試將HTML翻譯成視覺化的呈現。
    IE 8的開發者工具中,此問題將不再困擾我們,開發者工具可以完整的解譯出以innerHTML設定的內容,程式1是用來測試此功能的範例。
     
    程式1
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title></title>
        <script language="javascript" type="text/javascript">
            function GenerateHTML() {
                document.getElementById("div1").innerHTML =
                  "<a href='http://www.microsoft.com'>TEST<table><tr><td>TEST2</td></tr>";
            }
        </script>
    </head>
    <body>
        <form id="form1" runat="server">
        <input type="button" value="generate" onclick="GenerateHTML()" />
        <div id = "div1">
        </div>
        </form>
    </body>
    </html>
     
    這是個很簡單的程式,當使用者按下按紐後,GenerateHTML函式會將一串HTML放到div1元素的innerHTML中,達到動態改變innerHTML內容的效果。
    請執行此網頁,然後開啟開發者工具,在按下按紐前的畫面如圖23。
     
    圖23
     
    按下按紐後,在按下上方工具列中的【重新整理】按紐後,如圖24
     
    24
    這是一個相當有用的功能,尤其在你動態產生大量HTML時非常有用。
     

    posted on 2009/4/11 01:39 | 1 人收藏 1 人推薦 我要推薦 | 閱讀數 : 3447 | 文章分類 [ IE ] 訂閱

    Feedback

    # re: [IE8] 活用開發者工具的HTML/CSS解譯 回覆

    看不到图片,能贴一下吗?
    2009/4/12 下午 02:47 | icod

    # re: [IE8] 活用開發者工具的HTML/CSS解譯 回覆

    內地網路與Hinet間應該被擋掉了,請使用proxy.

     

    2009/4/12 下午 07:56 | code6421

    # re: [IE8] 活用開發者工具的HTML/CSS解譯 回覆

    非常好,学到不少,感谢!
    2009/6/3 下午 02:21 | 阳光下的柚子

    回應

    標題
    姓名
    電子郵件 (將不會被顯示)
    個人網頁
    內容 
      登入後使用進階評論  
    Please add 1 and 8 and type the answer here:

    Powered by: