最近在 司徒正美js 全世界最短的IE浏覽器判斷代碼 一文,看到只有6byte的判斷ie與非ie的方法。其代碼如下:
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
其實有很多判斷的方法,大都是根據浏覽器的特性來的。
比如庫prototype的方法是:!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1) 。就是根據ie支持window.attachEvent添加偵聽事件,非ie用window.addEventListener添加偵聽事件來判斷的。navigator.userAgent.indexOf('Opera') === -1是因為opara浏覽器能偽裝成ie.如果!!(window.attachEvent )為真,就是ie;反之,如果!window.addEventListener為真,也可以判斷為ie.
Ext使用的是!"1"[0],他利用IE無法使用數組下標訪問字符串的特性來判斷。在ie8下好像有問題。
在!+[1,]還未被發現前,判斷ie最短的表達式是 !+"\v1".它利用的是ie不支持垂直制表符的特性。
以前還有一個常用方法是document.all,由於opera浏覽器能偽裝成ie。可以這樣寫:!!(document.all && navigator.userAgent.indexOf('Opera') === -1).
還有很多,先記這幾條,便於工作時查閱。
1.+[1,]
2.!+"\v1"
3.!!(window.attachEvent && navigator.userAgent.indexOf('Opera') === -1)
4.!!(!window.addEventListener&& navigator.userAgent.indexOf('Opera') === -1)
5.!!(document.all && navigator.userAgent.indexOf('Opera') === -1)