2013-01-24 96 views
10

錯誤的最新的jQuery 1.9即興..使用jQuery 1.9與browser.msie

遺漏的類型錯誤下運行時,我得到一個錯誤與即興4.1版本與以前版本的jquery不一樣。

即興的那一行是行20:

var ie6 = ($.browser.msie && $.browser.version < 7); 
+1

'jQuery.browser':棄用:1.3,刪除:1.9 – undefined

+0

啊哈...這樣即興會打破每個人? – Upland

+0

如果該插件依賴於'瀏覽器'屬性,使用jQuery 1.9,是的。 – undefined

回答

24

你可以修補即興替換這一行:這個一個

var ie6 = ($.browser.msie && $.browser.version < 7); 

...:

var ie6 = (navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/)); 

...所以現在它可以使用jQuery v1.9.0 +。或者,你可以回退到jQuery的v1.8.3

編輯(2013年3月12日)

感謝@johntrepreneur您的意見,你是正確的。 兩點需要注意

  1. 該編輯的行:

    var ie6 = (navigator.userAgent.match(/msie [6]/i)); 
    

    ...我的壞,我急忙寫:

    var ie6 = (navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/)); 
    

    ...應該由這個來代替補丁。這應該夠了吧。

  2. 即興在已經完全去除IE6的支持他們的last commit(三月2013分之25這個原來的職位後)。 OP帶來的問題是,Impromptu確實與jQuery v1.9 +有衝突...... 更新即興 js文件到last version也確定問題

+0

@undefined:我想所有相關的實例都需要打補丁作爲解決方法。 – JFK

+0

是的,實際上它只檢查IE6。 +1 – undefined

+1

@JFK您的替換行不相同,因爲它在userAgent字符串中找到任何「6」,所以不匹配。由於userAgent字符串中包含「msie」,而在其他地方也有一個「6」,因此我在IE8中測試了它,並檢查了匹配結果(當它不應該)時:「Mozilla/4.0(compatible; MSIE 8.0; Windows NT 6.1 ; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)「。 – johntrepreneur

6

我喜歡這一個目標的範圍,將只< IE9 & jQuery的1.9+

if (/msie [1-8]./.test(navigator.userAgent.toLowerCase())) 
{ 
    //code here 
} 
2

自從jQuery的棄用$ .browser的funcionality ,我發現最簡單的方式運行代碼,是在javascript

var LTE_IE9 = false; 

創建一個全球性的和使用的條件HTML IE選擇

<!--[if lte IE 9]> 
<script>LTE_IE9 = true;</script> 
<![endif]--> 
+0

這實際上很聰明。 – KyleFarris

0

我使用它。

var browser = $.browser; 
    if (! browser) { 
     var ua = navigator.userAgent.toLowerCase(); 
     var m = /(msie) ([\w.]+)/.exec(ua) || ! /compatible/.test(ua) && /(mozilla)/.exec(ua) || []; 
     browser = { version: m[2] }; 
     browser[ m[1] ] = true; 
    } 
0

添加Jquery migrate插件

//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js

$.browser.msie從> jquery的除去1.9.x的

0

爲$ .browse是因爲jQuery的V. 1.4棄用和jQuery五後取出1.9

仍然可以修復這些代碼行這個問題(所有瀏覽器)

jQuery.browser = {}; 
jQuery.browser.mozilla = /mozilla/.test(navigator.userAgent.toLowerCase()) && !/webkit/.test(navigator.userAgent.toLowerCase()); 
jQuery.browser.webkit = /webkit/.test(navigator.userAgent.toLowerCase()); 
jQuery.browser.opera = /opera/.test(navigator.userAgent.toLowerCase()); 
jQuery.browser.msie = /msie/.test(navigator.userAgent.toLowerCase()); 

適合我的作品;