document.querySelector() in IE8

支援CSS Selector是讓我愛上jQuery的主要原因之一,最新在檢視IE8 Beta 1 For Developer的新功能,發現IE8開始支援一些新的W3C規格(http://www.w3.org/TR/selectors-api/),其中document多了querySelector與querySelectorAll兩個函數,簡單來說,它實現的就是jQuery裡令人驚豔的CSS Selector功能。例如以下的範例: (只有IE8可以跑,FF、IE7、或Emulate IE7的IE8都會發生錯誤)

<html><body>
<div><div><span>InnerSpan</span></div></div>
<div><span class="myClass">ClassSpan</span></div>
<script type="text/javascript">
    alert(document.querySelector("div div span").innerHTML);
    alert(document.querySelector("span.myClass").innerHTML);
</script>
</body></html>

目前有實作querySelector的瀏覽器不多(除了IE8之外,另一個是Webkit),但遲早有一天,當它變成大部分瀏覽器都支援的標準功能時,jQuery就可以改寫核心,以內建的querySelectorAll取代用Javascript模擬CSS Selector,效能可望由現在的"爬行"昇級成"飛行"。

Robert Biggs有篇Blog做了有趣的測試,首先比較了Prototype, jQuery, Ext在IE7與IE8上的執行效率,發現IE8的表現稍好,例如: jQuery測試原本在IE7上要跑119,116ms,在IE8上只要97,696ms,快了21秒。(意外發現一件事,Prototype居然比jQuery慢了兩倍)

而最讓人振奮的好消息是--同樣的CSS Selector測試,使用IE8內建的querySelectorAll()只要924ms就可以跑完(Webkit更快,500ms打死),算了一下,97,696->924,加快了100倍以上!!!

期待這個新規格快點普及,屆時對jQuery來說,將如虎添翼。

歡迎推文分享:
Published 17 April 2008 08:08 AM 由 Jeffrey
Filed under: ,
Views: 17,599



意見

# cherish said on 28 August, 2009 04:51 AM

从Firefox 3.1 alpha 1开始,支持querySelector了

# nttdocomo said on 28 February, 2010 11:28 PM

那就让我们祈祷IE6,IE7灭绝的那一天吧

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<April 2008>
SunMonTueWedThuFriSat
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910
 
RSS
創用 CC 授權條款
【廣告】
twMVC
最新回應

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication