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 bort

Metoden 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.

Relaterade artiklar