瀏覽器的嗅探現(xiàn)在已經(jīng)不推薦了,但在某些場(chǎng)合還是需要的。比如一些統(tǒng)計(jì)腳本。在標(biāo)準(zhǔn)瀏覽器里,提供了document.implementation.hasfeature,可惜有bug,不準(zhǔn)確,目前,w3c又推出了CSS.supports方法,顯示出大家對(duì)這塊的關(guān)注。
1.判定瀏覽器。
主流的瀏覽器有ie firefox opera chorme safari 早期這些框架都是通過(guò)navigator.userAgent進(jìn)行判定,目前國(guó)外的瀏覽器幾乎都是可以判定的。
關(guān)于瀏覽器的判斷腳本,jQuery已經(jīng)移出本體,形成一個(gè)插件。更多的方式不多介紹,
移動(dòng)設(shè)備的相關(guān)判定,這個(gè)建議看jQuery mobile與zepto的源代碼。
代碼如下:
isIPone = /isIPone/i.test(navigator.userAgent);
isIPone4 = window.devicePixelRatio >= 2 //在網(wǎng)頁(yè)中,pixel與point比值稱為device-pixel-ratio,普通設(shè)備都是1,iPhone4是2,有些 安卓機(jī)型是1.5
isIpad = /ipad/i.test(navigator.userAgent)
isAndroid = /android/i.test(navigator.userAgent)
isIOS = isIPone || isIpad
國(guó)內(nèi)的瀏覽器判定可以看Tangrame或qwrap,它們基本是IE,webkit,blink內(nèi)核。
2.事件的支持偵測(cè)
prototype的核心成員kangax寫(xiě)了一篇文章,來(lái)判斷瀏覽器對(duì)某種事件的支持。里面給出的實(shí)現(xiàn)如下:
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 var isEventSupported = (function() { var TAGNAMES = { 'select':'input','change':'input', 'submit':'form','reset':'form', 'error':'img','load':'img','abort':'img' } function isEventSupported(eventName){ var el = document.createElement(TAGNAMES[eventName] || 'div'); eventName = 'on' + eventName; var isSupported = (eventName in el); if (!isSupported) { el.setAttribute(eventName, 'return;'); isSupported = typeof el[eventName] == 'function'; } el = null; return isSupported; } return isEventSupported; })();現(xiàn)在jQuery等框架都是使用腳本的簡(jiǎn)化版
不過(guò)哪一個(gè)也好,這種檢測(cè)只對(duì)DOM0奏效,像DOMMouseScroll DOMContentLoaded DOMFocusIn DOMFocusOut DOMSubtreeModified DOMNodeInserted DOMNodeRemoved DOMNodeRemovedFromDocument DOMNodeInsertedIntoDocument DOMAttrModified DOMCharactorDataModified這些以DOM開(kāi)頭的就無(wú)能為力了。
這些事件中,有的非常有用,如DOMMouseScroll,firefox一直不支持mousesheel,只能用它做替代品。
DOMContentLoaded是實(shí)現(xiàn)domReady的重要事件;DOMNodeRemoved是判定元素是否從其父節(jié)點(diǎn)移除,父節(jié)點(diǎn)可能是其它元素節(jié)點(diǎn)或文檔碎片;DOMNodeRemovedFromDocument 是移離DOM樹(shù),DOMAttrModified 以前經(jīng)常用于模擬IE的onpropertyChange
css3添加兩種動(dòng)畫(huà),一種是transition動(dòng)畫(huà),另外一種是keyframe補(bǔ)間動(dòng)畫(huà)。它們?cè)谑录Y(jié)束時(shí)都用事件回調(diào)。但在標(biāo)準(zhǔn)化過(guò)程中,瀏覽器給它們起的名字相當(dāng)于沒(méi)規(guī)則。這個(gè)也需要預(yù)先偵測(cè)出來(lái)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注