針對IE執行特定的javascript
先直接寫結論
if (/MSIE \d|Trident.*rv:/.test(navigator.userAgent)){
//do what you want to do
}
這個判斷式可以判斷使用者是不是使用IE瀏覽器,如果是IE瀏覽器才會執行;反之,其他的瀏覽器就會是false,不會執行。
這個判斷式什麼時候會用到呢?舉一個我今天遇到的例子
在使用jquery的datatable的時候,我要做出可以固定表頭的表格,簡單說一下固定表頭的原理:
固定表頭的表格實作原理是這樣的,就是jquery產生表格的最後,原本表格的內容,使用CSS固定在最上方,達到固定表頭的功能。因此看到固定表頭的表格其實是由兩個table組成的。
好了,照理來說,固定表頭的表格在複製的時候,每個表格的寬度要一樣,才會跟原本的表格對齊。但是IE第一次沒資料的時候產生表格的時候,寬度完全抓不到我設定好的,所以寬度的設定和我原本寫的完全不一樣。必須在有資料的狀態下產生的時候,才會準確抓到我設定的寬度,第二次產生表格的時候,表格就會是正確的。
為了這個問題,我每天在調整CSS,看看有沒有什麼特別的方法重新把IE表格的寬度寫死。但是問題就產生了:寫好小解析度的表格,大解析度面目全非;大解析度的表格寫好,小解析度面目全非,如果折衷兩者兼顧,就是兩者面目全非….
正當絕望時,被逼到跳牆時,也就是潛能被激發的時候。靈機一動想到:既然如此,就在第一次載入之後,馬上重新再載入不就好了嗎?
對阿對阿對阿,這個方法真是快速又有效,完全不用考慮到解析度的問題。
但是問題是,其他的瀏覽器不會有這個問題,不需要執行再重新產生表格的功能,因此必須就判斷瀏覽器,選擇執行。找了一下,找到這個不錯的方法,問題也就解決了