26 Stimmen

Zepto Rückgriff auf jQuery

Ich verwende ZeptoJS für meine Web-App, aber ich möchte auf jQuery zurückgreifen, wenn der Browser Zepto nicht unterstützt. Da IE der einzige große Browser ist, der im Moment nicht unterstützt wird, bin ich versucht, IE zu erkennen:

if(navigator.appName == 'Microsoft Internet Explorer'){
    // load jquery
} else {
    // load zepto
}

aber ich würde es vorziehen, spezifisch Zepto-Unterstützung zu erkennen und jQuery in anderen Fällen zu verwenden. Gibt es eine Funktion Erkennung Weg, dies zu tun?

20voto

phil pirozhkov Punkte 4512

Sie können auch den beschriebenen JS-Trick anwenden aquí um zu erkennen, ob es sich bei dem Browser um den IE handelt, und eine moderne asynchrone Skriptladebibliothek zu verwenden, um die erforderliche Bibliothek zu laden. Yepnope Beispiel:

yepnope({
  test: !+"\v1", // IE?
  yep: 'jquery.js',
  nope: 'zepto.js'
});

16voto

jAndy Punkte 223172

Anstatt das mit Javascript zu tun, würde ich einen Schritt weiter gehen und bedingte Anweisungen verwenden. Das könnte so aussehen:

<!--[if lt IE 8 ]>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.js"></script>
<![endif]-->

<!--[if !IE]>
    <script src="/js/zepto.js"></script>
<![endif]-->

Dies wird direkt in Ihre HTML-Dateien übernommen. Das obige Snippet wird jQuery laden, wenn der Browser Internet Explorer 7 oder niedriger ist. Andernfalls wird er zepto.js einschließen.

12voto

Jaime Fernandez Punkte 910

Wie Zepto Dokumentation sagte, wenn Sie brauchen um Internet Explorer zu erkennen, können Sie folgenden Code verwenden :

  if ('__proto__' in {}) {
    // IS NOT IE

  } else {
    // IS IE

  }

Zepto verwenden, um auf jQuery zurückgreifen, aber ich habe es als Browser-Erkennung zu verwenden.

8voto

SimplGy Punkte 19473

Das mag eine verrückte Idee sein (ich bin mir nicht sicher, ob Zepto auf einem nicht unterstützten Browser überhaupt geladen wird), aber wie wäre es, wenn Sie Zeptos eigene Browser-Erkennung verwenden, um zu sehen, ob es auf einem nicht unterstützten Browser läuft?

$.os.ios      // => true if running on Apple iOS
$.os.android  // => true if running on Android
$.os.webos    // => true if running on HP/Palm WebOS
$.os.touchpad // => true if running on a HP TouchPad
$.os.version  // => string with version number, "4.0", "3.1.1", "2.1", etc.
$.os.iphone   // => true if running on iPhone
$.os.ipad     // => true if running on iPad
$.os.blackberry // => true if running on BlackBerry

Vielleicht könnten Sie so etwas tun:

var isSupported = false;
for (os in $.os) {
    if ($.os[os] == true) { isSupported = true; }
}

Dies wird Chrome/Firefox, die gut mit Zepto funktionieren, nicht abfangen, aber es entspricht den Absichten des Zepto-Teams für die Sache, die besser sein kann oder auch nicht.

8voto

gagarine Punkte 3868

Verwenden Sie die bedingten Kommentare nicht, sie werden vom IE10 nicht unterstützt. Dies ist der empfohlene Ansatz der zepto-Dokumentation :

Zepto in modernen Browsern und jQuery im IE laden

<script>
document.write('<script src=' +
('__proto__' in {} ? 'zepto' : 'jquery') +
'.js><\/script>')
</script>

Zepto funktioniert nicht im IE, weil der IE die folgenden Funktionen nicht unterstützt Prototyp Das ist also genau der richtige Weg, um das zu überprüfen.

Das obige Skript führt ein dynamisches Laden durch, aber die Logik ist

<script>
if ('__proto__' in {}) {
  // This is NOT IE

  } else {
    // This is IE

  }
</script>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X