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

本文主題涵蓋 開發者工具-HTML/CSS解譯器, 開發者工具-即時可改值的強大功能 , 用開發者工具來協助完成IE 8 相容, 用開發者工具尋找AJAX問題

 

開發者工具的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時非常有用。