javascript - Obekräftad TypeError: Kan inte läsa egenskapen 'msie' av undefined - jQuery-verktyg
Jag får följande felmeddelande i Chrome dev-konsolen:
Uncaught TypeError: Cannot read property 'msie' of undefined
Min förståelse är att det beror på att .browser nu är föråldrat i jQuery, men jag använder den senaste versionen av jQuery-verktyg och det ger fortfarande felet, jag kollade i js-filen och det finns där.
Hur kan jag kringgå detta så att det inte ger felet?
Svar #1
Du kan kolla in denna lösning av AJ. Det är ganska enkelt, kopiera bara och klistra in följande kodrader.
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;
}
})();
Referens:
$.browser på jQuery 1.9.x för äldre IE-detektering
Svar #2
$.browser-metoden har tagits bort från och med jQuery 1.9.
jQuery.browser() har tagits bortMetoden
jQuery.browser()har blivit föråldrad sedan jQuery 1.3 och har tagits bort i 1.9. Om det behövs, finns den tillgänglig som en del av jQuery Migrate-pluginet. Vi rekommenderar att använda funktionsdetektion med ett bibliotek som Modernizr.— jQuery Core 1.9 Uppgraderingsguide.
Som anges i uppgraderingsguiden kan du försöka använda jQuery Migrate-pluginet för att återställa denna funktionalitet och låta jQuery Tools fungera.
Svar #3
Använd följande script-tagg i din jsp/js-fil:
<script src="http://code.jquery.com/jquery-1.9.0.js"></script>
<script src="http://code.jquery.com/jquery-migrate-1.2.1.js"></script>
detta kommer att fungera säkert.
Svar #4
Jag använder nedanstående kod efter att ha inkluderat js-filen och det fungerar nu.
<script src="js/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
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;
}
})();
</script>
Svar #5
Jag har helt enkelt lagt till
jQuery.browser = {
msie: false,
version: 0
};
efter jQuery-scriptet, eftersom jag inte bryr mig om IE längre.
