最近在使用jQuery的過(guò)程中,遇到了一個(gè)奇怪的錯(cuò)誤,就是jquery.min.js文件出錯(cuò)了。
Uncaught TypeError: Cannot read property 'msie' of undefined at jquery.min.js:2 at jquery.min.js:2 at Object.(jquery.min.js:2) at Object. (jquery.min.js:2) at jquery.min.js:2 at Function.globalEval (jquery.min.js:2) at Function.each (jquery.min.js:2) at jQuery.fn.init.domManip (jquery.min.js:2) at jQuery.fn.init.append (jquery.min.js:2) at webpack:///./src/index.js?:13:1
首先,我檢查了一下文件引用的路徑,發(fā)現(xiàn)沒(méi)有問(wèn)題,文件也是最新的,應(yīng)該也沒(méi)有問(wèn)題。
查看錯(cuò)誤提示,看起來(lái)是有一些屬性調(diào)用出了問(wèn)題。進(jìn)一步觀(guān)察代碼,發(fā)現(xiàn)程序中有一些代碼依賴(lài)了jQuery的版本信息,調(diào)用了jQuery.browser.msie,但是在最新版的jQuery里面,已經(jīng)將這個(gè)方法給廢棄了。
在jQuery 1.9版本以后,jQuery.browser已經(jīng)不推薦使用。相反,應(yīng)該使用更加全面的判斷方式來(lái)判斷瀏覽器是否為IE,比如使用navigator.userAgent和正則表達(dá)式等方法。
為了解決這個(gè)問(wèn)題,我需要更新一下代碼并使用新的方式來(lái)判斷瀏覽器是否為IE,然后再將更新后的代碼導(dǎo)入程序中。于是我嘗試著去更新代碼,并添加了以下的判斷方式:
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') >0) { // 是IE瀏覽器 } else { // 不是IE瀏覽器 }
更新完畢后,我再次運(yùn)行程序,發(fā)現(xiàn)jquery.min.js出錯(cuò)的問(wèn)題已經(jīng)解決了。
這次遇到了jquery.min.js出錯(cuò)的問(wèn)題,讓我更加深入的了解了jQuery的一些新特性和瀏覽器判斷方式,希望對(duì)其他人也有所幫助。