2017年1月17日 星期二

jquery 1.9 版本拔除jQuery.browser() 之前因後果


現在js套件多如牛毛,一個依賴一個,往上繼承function

例如jquery幾乎是套件的基本大宗,我認為至少全世界有80%的網站都有使用到jquery相關系列的js framework,無論新舊

問題是疊床架屋的前端系統(說系統真的不為過啊~前端js的複雜度已經不可往日而語)
如果最根本的jquery給它換了版本,幾乎網頁原有JS功能都會出現Uncaught TypeError

新手看到chrome的console出現紅色的error肯定滿腔挫折
老手看到就會開始找哪隻js開始往上追追追(如果你也是這樣情況的話,不要懷疑,我覺得你算老手了)

Uncaught TypeError: Cannot read property 'msie' of undefined

stackoverflow也是我常googlge到解決方案的一個問題討論網站

http://stackoverflow.com/questions/14923301/uncaught-typeerror-cannot-read-property-msie-of-undefined-jquery-tools


這篇英文問題是說它遇到了這個msie undefined的問題,原因是因為

jquery 1.9 的jQuery.browser()方法拔掉了,導致相依套件一拖拉庫帶出了問題

當然,你會遇到的問題,別人早就遇到了,大部份是因為問的方向不對或是沒問到重點,所以覺得沒找到答案

 好心人也幫忙把移失的那.browser方法找回來,補上這個就幾乎解了
jQuery.browser = {};
(function () {
    jQuery.browser.msie = false;
    jQuery.browser.version = 0;
    if (navigator.userAgent.match(/MSIE ([0-9]+)\./)) {
        jQuery.browser.msie = true;
        jQuery.browser.version = RegExp.$1;
    }
})();

為什麼我說幾乎,而沒說它完全解決呢

因為我知道一定會有人沒搞清楚js的載入順序而放錯位置認為它並沒有解決問題

問一下身旁的同事囉~高手在民間吶

沒有留言:

張貼留言