jQuery.browser: Javascript nicht erfasster TypeError

Lesezeit: 8 Minuten

jQuerybrowser Javascript nicht erfasster TypeError
TonalDev

Ich habe einen Fehler, der meine Seite nicht laden lässt.

Uncaught TypeError: Eigenschaft „msie“ von undefined kann nicht gelesen werden

Der Fehler in der Konsole bezieht sich auf diesen Code:

if (jQuery.browser.msie)
    extra_px += 3;
                                                   // Fix Link Clicking on IE 7 and below versions
if (jQuery.browser.msie && Number($.browser.version) < 8) {
    span_text.css('cursor', 'pointer');
    span_text.click(function() {
        window.location = menu_item.parent().attr("href");
    });
}

Das Seltsame ist, dass es plötzlich passiert ist, ich habe nichts geändert. Als Referenz verwende ich WordPress.

  • versuchen Sie, ob der Wert über typeof(jQuery.browser.msie)!=’undefined

    – Bernhard

    15. Januar 2013 um 12:36 Uhr

  • Gleicher Fehler mit = typeof(jQuery.browser.msie)!=’undefined’

    – TonalDev

    15. Januar 2013 um 12:37 Uhr

  • Sind Sie sicher, dass jQuery geladen ist? Was ist die Ausgabe von console.log( typeof jQuery );?

    – JJJ

    15. Januar 2013 um 12:38 Uhr

  • Cannot read property 'msie' of undefined bedeutet, dass jQuery.browser ist nicht definiert.

    – Felix Klinge

    15. Januar 2013 um 12:39 Uhr

  • @Jan: Wenn jQuery war undefined Sie würden den Fehler erhalten Cannot read property 'browser' of undefined. Wie auch immer, VisioN hat die Antwort gefunden.

    – Felix Klinge

    15. Januar 2013 um 12:51 Uhr

jQuerybrowser Javascript nicht erfasster TypeError
Vision

jQuery.browser war veraltet in Version 1.3 und schließlich ENTFERNT im 1.9.

Quelle

Wie Sie darin sehen können aktuelle Version von jQueryes gibt kein $.browser Eigentum mehr.

Höchstwahrscheinlich wurde es in das Plugin verschoben, wie in angegeben Dokumente.

Wenn Sie also die allerletzte Version von jQuery verwenden, wird die undefined Fehler ist verständlich.

  • OP sollte nicht die neueste Version enthalten, sondern eine bestimmte Version

    – Explosionspillen

    15. Januar 2013 um 12:44 Uhr

  • @ExplosionPills und doch tut er es wahrscheinlich

    – John Dvorak

    15. Januar 2013 um 12:46 Uhr

  • @JanDvorak tut er; Ich habe mir den Code seiner Website angesehen. Er fügt 1.8.3 über WordPress hinzu, fügt dann aber auch einen Link zum jQuery-CDN für die neueste Version hinzu

    – Explosionspillen

    15. Januar 2013 um 12:46 Uhr

  • Die 1.8.3-Datei bricht die Sache, also musste ich die neueste Version einschließen, damit die Dinge funktionieren. Ich habe immer noch nicht den Speicherort gefunden, von dem der Entwickler die Datei geladen hat.

    – TonalDev

    15. Januar 2013 um 12:47 Uhr

  • @JanDvorak aus irgendeinem Grund haben sie das CDN aktualisiert, um auf 1.9 zu verweisen, aber die anderen jQuery-Websites werden nicht aktualisiert (die Dokumentation ist es nicht und jquery.com sagt immer noch, dass die “aktuelle Version” 1.8.3 ist).

    – Explosionspillen

    15. Januar 2013 um 12:50 Uhr

Ja, jQuery.browser war in der älteren Version veraltet und wurde in 1.9 entfernt. Also jetzt in der alten Version, wenn der Code so geschrieben ist

isIE6 = jQuery.browser.msie && jQuery.browser.version < 7 && !window.XMLHttpRequest,

wird durch ersetzt

isIE6 = navigator.userAgent.match(/msie [6]/i) && !window.XMLHttpRequest,

Prost!!!

1645626065 722 jQuerybrowser Javascript nicht erfasster TypeError
SpYk3HH

Wie in der Antwort von VisioN erwähnt, wurde dies in jQuery 1.9 entfernt und kommt anscheinend nicht so bald wieder.

Wenn Sie das funktionierende Plugin erneut hinzufügen möchten $.browser zu Ihrer jQuery-Bibliothek, kopieren Sie einfach den folgenden Code und fügen Sie ihn in eine Datei ein und verknüpfen Sie das Skript an einer beliebigen Stelle nach jQuery:

;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0<parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,""))?parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,"")):"Edge",/Trident/i.test(a.ua)&&/rv:([0-9]{1,}[\.0-9]{0,})/.test(a.ua)&&(a.version=parseFloat(a.ua.match(/rv:([0-9]{1,}[\.0-9]{0,})/)[1].replace(/[^0-9\.]/g,"")))):/Chrome/.test(a.ua)?(a.browser="Chrome",a.version=parseFloat(a.ua.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Opera/.test(a.ua)?(a.browser="Opera",a.version=parseFloat(a.ua.split("Version/")[1].replace(/[^0-9\.]/g,""))):/Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(a.ua)?(a.mobile="Kindle",/Silk/i.test(a.ua)?(a.browser="Silk",a.version=parseFloat(a.ua.split("Silk/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Kindle/i.test(a.ua)&&/Version/i.test(a.ua)&&(a.browser="Kindle",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,"")))):/BlackBerry/.test(a.ua)?(a.browser="BlackBerry",a.version=parseFloat(a.ua.split("https://stackoverflow.com/")[1].replace(/[^0-9\.]/g,""))):/PlayBook/.test(a.ua)?(a.browser="PlayBook",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/BB[0-9]{1,}; Touch/.test(a.ua)?(a.browser="Blackberry",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Android/.test(a.ua)?(a.browser="Android",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Safari/.test(a.ua)?(a.browser="Safari",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Firefox/.test(a.ua)?(a.browser="Mozilla",a.version=parseFloat(a.ua.split("Firefox/")[1].replace(/[^0-9\.]/g,""))):/Nokia/.test(a.ua)&&(a.browser="Nokia",a.version=parseFloat(a.ua.split("Browser")[1].replace(/[^0-9\.]/g,""))));if(a.browser)for(var b in a.browserArray)a[a.browserArray[b].toLowerCase()]=a.browser==a.browserArray[b];$.extend(!0,$.browser={},a)}})(jQuery);

jsFiddle


Verwenden Sie traditionell wie: if ($.browser.msie) { doWork }


/**	jQuery.browser
 *	@author	J.D. McKinstry (2014)
 *	@description	Made to replicate older jQuery.browser command in jQuery versions 1.9+
 *	@see http://jsfiddle.net/SpYk3/wsqfbe4s/
 *
 *	@extends	jQuery
 *	@namespace	jQuery.browser
 *	@example	jQuery.browser.browser == 'browserNameInLowerCase'
 *	@example	jQuery.browser.version
 *	@example	jQuery.browser.mobile	@returns	BOOLEAN
 *	@example	jQuery.browser['browserNameInLowerCase']
 *	@example	jQuery.browser.chrome	@returns	BOOLEAN
 *	@example	jQuery.browser.safari	@returns	BOOLEAN
 *	@example	jQuery.browser.opera	@returns	BOOLEAN
 *	@example	jQuery.browser.msie	@returns	BOOLEAN
 *	@example	jQuery.browser.mozilla	@returns	BOOLEAN
 *	@example	jQuery.browser.webkit	@returns	BOOLEAN
 *	@example	jQuery.browser.ua	@returns	navigator.userAgent String
 */
;;(function($){if(!$.browser&&1.9<=parseFloat($.fn.jquery)){var a={browser:void 0,version:void 0,mobile:!1};navigator&&navigator.userAgent&&(a.ua=navigator.userAgent,a.webkit=/WebKit/i.test(a.ua),a.browserArray="MSIE Chrome Opera Kindle Silk BlackBerry PlayBook Android Safari Mozilla Nokia".split(" "),/Sony[^ ]*/i.test(a.ua)?a.mobile="Sony":/RIM Tablet/i.test(a.ua)?a.mobile="RIM Tablet":/BlackBerry/i.test(a.ua)?a.mobile="BlackBerry":/iPhone/i.test(a.ua)?a.mobile="iPhone":/iPad/i.test(a.ua)?a.mobile="iPad":/iPod/i.test(a.ua)?a.mobile="iPod":/Opera Mini/i.test(a.ua)?a.mobile="Opera Mini":/IEMobile/i.test(a.ua)?a.mobile="IEMobile":/BB[0-9]{1,}; Touch/i.test(a.ua)?a.mobile="BlackBerry":/Nokia/i.test(a.ua)?a.mobile="Nokia":/Android/i.test(a.ua)&&(a.mobile="Android"),/MSIE|Trident/i.test(a.ua)?(a.browser="MSIE",a.version=/MSIE/i.test(navigator.userAgent)&&0<parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,""))?parseFloat(a.ua.split("MSIE")[1].replace(/[^0-9\.]/g,"")):"Edge",/Trident/i.test(a.ua)&&/rv:([0-9]{1,}[\.0-9]{0,})/.test(a.ua)&&(a.version=parseFloat(a.ua.match(/rv:([0-9]{1,}[\.0-9]{0,})/)[1].replace(/[^0-9\.]/g,"")))):/Chrome/.test(a.ua)?(a.browser="Chrome",a.version=parseFloat(a.ua.split("Chrome/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Opera/.test(a.ua)?(a.browser="Opera",a.version=parseFloat(a.ua.split("Version/")[1].replace(/[^0-9\.]/g,""))):/Kindle|Silk|KFTT|KFOT|KFJWA|KFJWI|KFSOWI|KFTHWA|KFTHWI|KFAPWA|KFAPWI/i.test(a.ua)?(a.mobile="Kindle",/Silk/i.test(a.ua)?(a.browser="Silk",a.version=parseFloat(a.ua.split("Silk/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Kindle/i.test(a.ua)&&/Version/i.test(a.ua)&&(a.browser="Kindle",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,"")))):/BlackBerry/.test(a.ua)?(a.browser="BlackBerry",a.version=parseFloat(a.ua.split("https://stackoverflow.com/")[1].replace(/[^0-9\.]/g,""))):/PlayBook/.test(a.ua)?(a.browser="PlayBook",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/BB[0-9]{1,}; Touch/.test(a.ua)?(a.browser="Blackberry",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Android/.test(a.ua)?(a.browser="Android",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Safari/.test(a.ua)?(a.browser="Safari",a.version=parseFloat(a.ua.split("Version/")[1].split("Safari")[0].replace(/[^0-9\.]/g,""))):/Firefox/.test(a.ua)?(a.browser="Mozilla",a.version=parseFloat(a.ua.split("Firefox/")[1].replace(/[^0-9\.]/g,""))):/Nokia/.test(a.ua)&&(a.browser="Nokia",a.version=parseFloat(a.ua.split("Browser")[1].replace(/[^0-9\.]/g,""))));if(a.browser)for(var b in a.browserArray)a[a.browserArray[b].toLowerCase()]=a.browser==a.browserArray[b];$.extend(!0,$.browser={},a)}})(jQuery);
/* - - - - - - - - - - - - - - - - - - - */

var b = $.browser;
console.log($.browser);    //    see console, working example of jQuery Plugin
console.log($.browser.chrome);

for (var x in b) {
    if (x != 'init')
        $('<tr />').append(
            $('<th />', { text: x }),
            $('<td />', { text: b[x] })
        ).appendTo($('table'));
}
table { border-collapse: collapse; }
th, td { border: 1px solid; padding: .25em .5em; vertical-align: top; }
th { text-align: right; }

textarea { height: 500px; width: 100%; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<table></table>

  • a.browserArray[b].toLowerCase() löst einen undefinierten Fehler aus. Wenn ich das .toLowerCase() herausnehme, funktioniert es!

    – Charles Robertson

    21. August 2017 um 16:11 Uhr

  • Danke trotzdem. Gut gemacht!

    – Charles Robertson

    21. August 2017 um 16:12 Uhr

Sie können die jQuery.Migrate-Bibliothek zur Unterstützung veralteter Funktionen wie $.browser verwenden.

Sehen https://github.com/jquery/jquery-migrate/#readme

835260cookie-checkjQuery.browser: Javascript nicht erfasster TypeError

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy