支援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來說,將如虎添翼。


Comments

# by cherish

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

# by nttdocomo

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

Post a comment