"Uncaught TypeError: Cannot read property 'msie' of undefined".
網上有很多解決辦法如:
判斷瀏覽器類型:
<span style="white-space:pre"> </span>$.browser.mozilla = /firefox/.test(navigator.userAgent.toLowerCase()); $.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase()); $.browser.opera = /opera/.test(navigator.userAgent.toLowerCase()); $.browser.msie = /msie/.test(navigator.userAgent.toLowerCase());
號后面的表達式返回的就是 true/false, 可以直接用來替換原來的 $.browser.msie 等。
檢查是否為 IE6:
// Old
<span style="white-space:pre"> </span>if ($.browser.msie && 7 > $.browser.version) {}
// New
<span style="white-space:pre"> </span>if ('undefined' == typeof(document.body.style.maxHeight)) {}
檢查是否為 IE 6-8:
<span style="white-space:pre"> </span>if (!$.support.leadingWhitespace) {}
**************************************************************************
下面 我們采取的思路是 使用jquery的繼承機制 對jquery 1.11.1版本 進行擴展 使其支持 $.browser 方法,已達到兼容之前組件的目的.
jQuery.extend({ browser: function() { var rwebkit = /(webkit)\/([\w.]+)/, ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/, rmsie = /(msie) ([\w.]+)/, rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/, browser = {}, ua = window.navigator.userAgent, browserMatch = uaMatch(ua); if (browserMatch.browser) { browser[browserMatch.browser] = true; browser.version = browserMatch.version; } return { browser: browser }; }, }); function uaMatch(ua) { ua = ua.toLowerCase(); var match = rwebkit.exec(ua) || ropera.exec(ua) || rmsie.exec(ua) || ua.indexOf("compatible") < 0 && rmozilla.exec(ua) || []; return { browser : match[1] || "", version : match[2] || "0" }; }
將以上代碼 保存成 jquery-browser.js 使用即可。
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com