探秘IE8的強大JavaScript功能

來源:互聯網
上載者:User

本文來自http://q.yesky.com/group/review-17634017.html,另外還添加一些裡面技術的連結。

離線事件(Online and offline events):

https://developer.mozilla.org/En/Online_and_offline_events

https://bug336359.bugzilla.mozilla.org/attachment.cgi?id=220609

http://ejohn.org/blog/offline-events/

postMessage :

http://msdn.microsoft.com/en-us/library/cc197015(VS.85).aspx

http://ejohn.org/blog/postmessage-api-changes/

http://hi.baidu.com/bdui/blog/item/eedf91509c6ab2591038c2fb.html

 

====================================================================

 

 

 

IE 7在CSS編程方面的改進給很多開發人員帶來了耳目一新的感覺,但是在JavaScript方面的表現卻不敢恭維,實際上,在這方面我們看到的只是一些新的BUG。不過幸運是,微軟已經看到了這一點,在IE 8中,JavaScript已經成為其開發的一個重點,下面我們就一起從開發人員角度來看一下IE 8的一些特點。
   下載:Internet Explorer 8.0(IE8) 中文版
   IE8開始支援一些新的W3C規格,其中多了querySelector和querySelectorAll兩個函數。querySelector是CSS selector的尋找原理的一種快速實現方法。IE 8是第二個實現Selectors API的瀏覽器(另一個瀏覽器是WebKit)。
   簡單來說,它實現的就是jQuery裡令人驚豔的CSS Selector功能。例如以下的範例:(只有IE8可以跑,FF、IE7都會發生錯誤)

 

InnerSpanClassSpan

 

     這兒需要特別指出的是,任何Selectors要完全依靠瀏覽器的原生selector實現。IE8支援CSS2.1,因此開發人員無需再等待CSS 3 selectors的推出。
   支援更多HTML 5功能
   我一直希望在IE 8中增加一些HTML 5相容功能,在IE 8中我們看到了4個在這方面的完整功能,非常棒!
   1、HTML 5: window.location.hash
   這個功能已經被多數瀏覽器支援的非常好。在IE8標準模式中將window.location.hash中的更改作為導航,並儲存先前文檔的URL,可以像在Ajax應用中模仿[上一頁] 按鈕效果。IE8中對它進行了改良,可以廣播這個hashchanged時間,據我所知這是第一個採取這種處理方法的瀏覽器。
   2、HTML 5: DOM儲存
   通過這個功能,資料可以持續儲存在本地,它將取代原始的cookie儲存機制。我們已經在2.0版本以後的Firefox瀏覽器中看到過這個功能,但是在Opera和Safari中尚未支援此功能。
   3、HTML 5: postMessage
   IE8現在支援跨檔案訊息通訊(Cross-Document Messaging-XDM)!通過onmessage事件和postMessage方法,兩個來自不同域的網頁可以進行通訊。
   目前IE 8、Opera 9、Firefox 3和WebKit nightlies版均支援這個功能,也就是說,該功能幾乎已被所有最新瀏覽器支援。
   4、HTML 5: Offline Events
   在IE 8中擁有一些離線事件來檢測網路的中斷,通過它我們可以編寫精彩的離線Ajax應用。目前來看支援這一功能的瀏覽器包括Firefox 3和IE 8。

IE8引入XDomainRequest跨站資料擷取功能
   下載:Internet Explorer 8.0(IE8) 中文版
   這是一個非常有趣的進行跨站資料擷取的功能,不過它與Firefox 3中的跨站 XMLHttpRequest的工作原理不太一樣。它的跨域並不是無限制的。需要服務端返回http header中帶有XDomainRequestAllowed=1才可以跨域,否則是不成功的。
   XMLRequest 不能跨站一直都是多子網域服務器的硬傷。使得很多情況不得不考慮最原始的動態script和JSON的方式。不過IE8團隊有意解決跨站訪問資料的問題,這是IE8的一個進步。
   另外,IE8下的XMLHttpRequest增加了一個很重要的屬性 timeout和ontimeout方法,它在對程式進行最佳化時極其重要。
   DOM漏洞修補
   在IE 8中getAttribute/setAttribute已經進行了重大改進。簡單來說,它們現在已經可以完成屬於自己的任務,IE8和和其它瀏覽器在這方面的差距已經不大。臭名昭著的accessing relative/absolute href/src屬性問題也已經得到解決,這是一個很大的進步。另外它們還增加了hasAttribute功能。
   其它新增和修複包括:
   •.ownerElement和.ownerDocument。我們現在終於有了一個統一的方法來處理子架構。
   •getElementById可以通過id來返回對象。這是一個我們期盼已久的功能。
   •getAttribute("checked") 現在返回“checked”而不是true。
   •動態建立(或修改)的選項按鈕現在可以被選擇了。
   對於這些修複我感到即高興又生氣,高興的是微軟終於對它們做出了正確的修改,生氣的則是微軟花了這麼長時間才做出正確的修改。
   W3C:事件
   這個功能是IE 8目前版本完全缺失的一個部分。我們依然需要繼續使用IE的attachEvent系統,還看不到addEventListener的到來。我不確認這個功能的缺失對於IE 8的Acid3支援將帶來多大的影響,不過在Acid3中已經包含了對addEventListener的測試,因此微軟可能已經開始考慮增加對它的支援。
   從某種程度上我可以理解微軟希望保留自己現有API的心情,但是我不能理解它們為什麼沒有興趣也增加對addEventListener的支援。我猜測理由可能是微軟不得不支援像事件捕獲之類的概念。
   對於這一點我感到非常失望。我認為這是下一個版本中急需修正的一個地方。
   JavaScript語言
   在完善垃圾收集、記憶體管理和效能等問題上,IE團隊已經進行了一些重大的改進,這些改進對我們很多應用的開發都意義重大。
   儘管如此,我還是要糾正一點。儘管IE 8對於JavaScript開發人員來說是非常偉大的一個瀏覽器,但如果更準確的說,高興的或許只是“JavaScript+DOM”開發人員。單就JavaScript來說,IE 8卻比較令人失望:在這個版本的瀏覽器中並沒有出現任何新的純正JavaScript功能。我只能寄望於在下一個版本中增加更多的改進了。

ARIA支援
   下載:Internet Explorer 8.0(IE8) 中文版
   這是一個讓我感到非常滿意的變化。ARIA是一個非常了不起的規範,可以讓Web應用有能力與讀者進行清晰的交流。在此之前IE缺乏對它的支援,不過現在這一缺陷已經在IE 8中得到彌補。目前Firefox、IE和Opera已經都支援ARIA。WebKit團隊似乎還沒有興趣支援這一功能,實在是令人感到不可理解。
   嵌入式SVG
   目前在IE 8已經增加了對嵌入式命名元素的支援。這意味著你可以對SVG和Methyl進行內聯標記,從這一點上來看,IE瀏覽器將來有望增加對SVG的原生支援。
   IE Web Developer:IE版的Firebug
   在IE瀏覽器中我們終於看到了這個類似Firebug的工具,用Firebug建立者Joe Hewitt的原話來說:“我非常高興微軟在IE8中完全複製了Firebug的功能。”我不得不承認,類似的工具已經存在了很長時間,而且深受開發人員歡迎。
   IE Web Developer可以讓你檢查和編輯你的HTML DOM,顯示錯誤資訊、日誌資訊,顯示網站原始碼,監視DHTML事件和HTTP流量。
   瀏覽模式切換
   乍一看,由於這個功能的存在,你可以看一下你的IE 7網頁是否能在IE 8中顯示,實際上它的真正用途在於,開發人員可以開發一個標準相容的網頁(IE8、Firefox、Safari和Opera),然後查看在IE 7中的顯示效果。對於開發人員來說,這是一個非常有用的功能,因為我們無需再藉助於虛擬機器中的其它版本IE瀏覽器來測試網頁效果。
   Bug回饋
   IE團隊從測試者那兒收集反饋資訊,然後將漏洞發布到一個公開訪問的網站上。這是微軟非常明智的一個進步。使用者可以從這兒看到微軟對漏洞的改進資訊。
   結論
   總體來說,儘管IE 8也有自己的缺點,我還是對這個新版IE瀏覽器持肯定看法。類似querySelector、ARIA和postMessage等功能對開發人員都非常有協助。
   對於那些不足之處,例如沒有新的JavaScript功能,沒有W3C事件支援,沒有CSS3 Selectors,我認為將在未來的版本中會有所改進。
   如果微軟IE團隊能夠繼續按照這個正確的方向走下去,我想IE瀏覽器留給我們的不再是僅僅有失望。

相關文章

Alibaba Cloud 10 Year Anniversary

With You, We are Shaping a Digital World, 2009-2019

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。