錯誤的最新的jQuery 1.9即興..使用jQuery 1.9與browser.msie
遺漏的類型錯誤下運行時,我得到一個錯誤與即興4.1版本與以前版本的jquery不一樣。
即興的那一行是行20:
var ie6 = ($.browser.msie && $.browser.version < 7);
錯誤的最新的jQuery 1.9即興..使用jQuery 1.9與browser.msie
遺漏的類型錯誤下運行時,我得到一個錯誤與即興4.1版本與以前版本的jquery不一樣。
即興的那一行是行20:
var ie6 = ($.browser.msie && $.browser.version < 7);
你可以修補即興替換這一行:這個一個
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您的意見,你是正確的。 兩點需要注意:
該編輯的行:
var ie6 = (navigator.userAgent.match(/msie [6]/i));
...我的壞,我急忙寫:
var ie6 = (navigator.userAgent.match(/msie/i) && navigator.userAgent.match(/6/));
...應該由這個來代替補丁。這應該夠了吧。
即興在已經完全去除IE6的支持他們的last commit(三月2013分之25這個原來的職位後)。 OP帶來的問題是,Impromptu確實與jQuery v1.9 +有衝突...... 更新即興 js文件到last version也確定問題。
@undefined:我想所有相關的實例都需要打補丁作爲解決方法。 – JFK
是的,實際上它只檢查IE6。 +1 – undefined
@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
我喜歡這一個目標的範圍,將只< IE9 & jQuery的1.9+
if (/msie [1-8]./.test(navigator.userAgent.toLowerCase()))
{
//code here
}
自從jQuery的棄用$ .browser的funcionality ,我發現最簡單的方式運行代碼,是在javascript
var LTE_IE9 = false;
創建一個全球性的和使用的條件HTML IE選擇
<!--[if lte IE 9]>
<script>LTE_IE9 = true;</script>
<![endif]-->
這實際上很聰明。 – KyleFarris
我使用它。
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;
}
添加Jquery migrate
插件
//cdnjs.cloudflare.com/ajax/libs/jquery-migrate/1.2.1/jquery-migrate.min.js
$.browser.msie
從> jquery的除去1.9.x的
至於說到這裏,$ .browser沒有在jQuery的存在了,因爲版本1.9。
爲$ .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());
適合我的作品;
'jQuery.browser':棄用:1.3,刪除:1.9 – undefined
啊哈...這樣即興會打破每個人? – Upland
如果該插件依賴於'瀏覽器'屬性,使用jQuery 1.9,是的。 – undefined