用JavaScript判斷CSS瀏覽器類型前綴的兩種方法
不管我們對瀏覽器類型前綴有多么的討厭,我們都不得不每天面對它,否者有些東西不能正常工作。這些前綴的用法有兩種:在CSS里(例如“-moz-”)和在JS里。有一個神奇的 X-Tag 項(xiàng)目里有一段很聰明的JavaScript腳本,可以用來判斷當(dāng)前使用的是什么前綴——讓我來展示它是如何工作的!
比如 CSS 前綴,IE 的是 "-ms-",舊版 Opera 的是 "-o-",F(xiàn)irefox 的是 "-moz-",Safari/Chrome 是 "-webkit-"。JavaScript 有多種方式判斷它們。
方法1: 特性判斷
// 取瀏覽器的 CSS 前綴 var prefix = function() { var div = document.createElement('div'); var cssText = '-webkit-transition:all .1s; -moz-transition:all .1s; -o-transition:all .1s; -ms-transition:all .1s; transition:all .1s;'; div.style.cssText = cssText; var style = div.style; if (style.webkitTransition) { return '-webkit-'; } if (style.MozTransition) { return '-moz-'; } if (style.oTransition) { return '-o-'; } if (style.msTransition) { return '-ms-'; } return ''; }();
通過創(chuàng)建一個div,給其分別添加 -webkit-、-moz-、-o-、-ms- 的前綴 css 樣式,然后獲取 style,通過 style.xxxTransition 判斷是哪種前綴。
方法2: getComputedStyle 獲取 documentElement 所有樣式再解析
先通過 window.getComputedStyle 獲取 styles,將 styles 轉(zhuǎn)成數(shù)組
var styles = window.getComputedStyle(document.documentElement, ''); var arr = [].slice.call(styles); console.log(arr);
Firefox arr 如下
Chrome arr 如下
能看到取到了具有各自瀏覽器自身實(shí)現(xiàn)的 CSS 前綴名稱。
把所有屬性連接成一個字符串,然后用正則表達(dá)式匹配就能找出前綴了
// 取瀏覽器的 CSS 前綴 var prefix = function() { var styles = window.getComputedStyle(document.documentElement, ''); var core = ( Array.prototype.slice .call(styles) .join('') .match(/-(moz|webkit|ms)-/) || (styles.OLink === '' && ['', 'o']) )[1]; return '-' + core + '-'; }();
我們看到 方法2 比 方法1 代碼量少了許多。無論是方法1 和 方法2 ,都采用匿名函數(shù)一次性執(zhí)行后返回結(jié)果,不需要每次判斷都調(diào)用一下函數(shù)。
以上內(nèi)容就是小編通過兩種方法給大家介紹的用JavaScript判斷CSS瀏覽器類型前綴,希望大家喜歡。
相關(guān)文章
javascript之通用簡單的table選項(xiàng)卡實(shí)現(xiàn)(二)
上篇中的選項(xiàng)卡存在這樣的問題:把邏輯封裝在table.js中,不夠靈活,也就是說如果某個選項(xiàng)卡是實(shí)現(xiàn)異步請求或者跳轉(zhuǎn),而非div的顯隱切換,那么就得修過table.js來達(dá)到目的,顯然不是我所需要的。2010-05-05js實(shí)現(xiàn)鼠標(biāo)切換圖片(無定時器)
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)切換圖片,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-01-01JS數(shù)組Reduce方法功能與用法實(shí)例詳解
這篇文章主要介紹了JS數(shù)組Reduce方法功能與用法,結(jié)合實(shí)例形式詳細(xì)分析了JS數(shù)組Reduce方法操作數(shù)組統(tǒng)計(jì)、去重等相關(guān)操作技巧,需要的朋友可以參考下2020-04-04javascript實(shí)現(xiàn)選中復(fù)選框后相關(guān)輸入框變灰不可用的方法
這篇文章主要介紹了javascript實(shí)現(xiàn)選中復(fù)選框后相關(guān)輸入框變灰不可用的方法,涉及javascript針對頁面元素屬性的相關(guān)操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-08-08JavaScript中的索引數(shù)組、關(guān)聯(lián)數(shù)組和靜態(tài)數(shù)組、動態(tài)數(shù)組講解
這篇文章主要介紹了JavaScript中的索引數(shù)組、關(guān)聯(lián)數(shù)組和靜態(tài)數(shù)組、動態(tài)數(shù)組講解,本文介紹了從數(shù)組的下標(biāo)分為索引數(shù)組、關(guān)聯(lián)數(shù)組、從對數(shù)據(jù)的存儲分為靜態(tài)數(shù)組、動態(tài)數(shù)組,并給出了示例,需要的朋友可以參考下2014-11-11JavaScript中如何在一個循環(huán)中等待示例代碼詳解
這篇文章主要介紹了在JavaScript中如何在一個循環(huán)中等待(附代碼示例),下面是如何使用for..of 循環(huán)來迭代一個數(shù)組并在循環(huán)內(nèi)等待,需要的朋友可以參考下2022-08-08javascript 刪除dom對象的事件函數(shù)代碼
本文為《JavaScript高級程序設(shè)計(jì)》第9章中的跨平臺事件中的部分內(nèi)容。2010-04-04JavaScript獲取ul中l(wèi)i個數(shù)的方法
這篇文章主要介紹了JavaScript獲取ul中l(wèi)i個數(shù)的方法,涉及javascript針對頁面HTML元素的獲取及屬性操作相關(guān)技巧,需要的朋友可以參考下2017-02-02基于javascript實(shí)現(xiàn)判斷移動終端瀏覽器版本信息
這篇文章主要介紹了基于javascript實(shí)現(xiàn)判斷移動終端瀏覽器版本信息,需要的朋友可以參考下2014-12-12