Es ist üblich, dass h5 dieses Bedürfnis in Apps hervorruft. In einer Zeit, in der Mobilgeräte die Hauptrolle spielen, spielt h5 eine wichtige Rolle bei der Umleitung des App-Verkehrs.
Die von uns derzeit verwendete Aufrufmethode ist das URL-Schema (das sowohl von iOS- als auch von Android-Plattformen unterstützt wird). Sie müssen das Schema nur während der nativen APP-Entwicklung registrieren. Wenn der Benutzer dann auf einen solchen Link klickt, springt er automatisch zur APP.
Drei Erregungsoptioneniframe
var last = Date.now(), doc = window.document, ifr = doc.createElement('iframe');//Erstelle einen versteckten Iframe ifr.src = nativeUrl;ifr.style.cssText = 'display:none;border :0;width:0;height:0;';doc.body.appendChild(ifr);setTimeout(function() { doc.body.removeChild(ifr); //setTimeout kleiner als 2000 ist im Allgemeinen ein Aufruffehler if (Date.now() - last < 2000) { if (typeof onFail == 'function') { onFail(); { //Popup-Eingabeaufforderungen oder Download-Verarbeitung usw.} } else { if (typeof onSuccess == 'function') { onSuccess() }}, 1000);Das Aufrufprinzip der Iframe-Lösung lautet: Wenn das Programm in den Hintergrund wechselt, wird der Timer verzögert (eine weitere Situation, in der der Timer ungenau ist). Wenn die App aktiviert ist, wird die Webseite zwangsläufig in den Hintergrund verschoben. Wenn der Benutzer die App verlässt, dauert es im Allgemeinen mehr als 2 Sekunden. Wenn die App nicht aktiviert ist, wird setTimeout nicht aktiviert Zeit, und die Zeit wird 2s nicht überschreiten.
window.location.href springt direkt
window.location.href = nativeUrl;
ein Tag ruft hervor
<a href=nativeUrl>App widerrufen</a>
Browsertest von drei Evokationsszenarien
iframe ruft App-Testergebnisse hervor
window.location.href ruft App-Testergebnisse hervor
Ein Tag ruft App-Testergebnisse hervor
iframe und window.location.href rufen Kontrast hervor
iframe, window.location.href und ein Tag rufen einen Vergleich zwischen den dreien hervor
Analyse der TestergebnisseErstens sind die getesteten Modelle und Browser begrenzt und die obigen Ergebnisse dienen nur als Referenz.
Beim Vergleich von iframe evocation und location.href können wir Folgendes feststellen:
Aufgrund der obigen Vergleichsanalyse ist es angemessener, iframe für Android und window.location.href für iOS zu verwenden.
Der Unterschied zwischen direkter Evokation und ereignisgesteuerter Evokation beim Aufrufen der Seite
Es gibt offensichtliche Unterschiede zwischen diesen beiden Erregungsszenarien in Android, unabhängig davon, ob sie durch iframe oder location.href hervorgerufen werden. Nehmen Sie als Beispiel das Chrome von Xiaomi 1s:
<a id=goApp href=javascript:void(0);>Klicken Sie auf mich, um die APP zu öffnen</a>
Bindungsereignisse steuern die Evokation manuell:
//Erfolgreich aufgerufen window.onload = function () { $('#goApp').on(click, function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = nativeUrl; });};Geben Sie die Seite ein, die direkt aufgerufen werden soll:
//Rückruf fehlgeschlagen window.onload = function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = nativeUrl;};Ereignis binden, js hervorrufen
//Rückruf fehlgeschlagen window.onload = function () { $('#goApp').on(click, function () { window.lib.callapp(nativeUrl);//iframe //window.location.href = nativeUrl; }); $('#goApp).trigger('click');};Ursprünglich dachte ich, dass die Methode von $('#goApp).trigger('click'); die gleiche ist wie das manuelle Klicken, aber die tatsächliche Leistung ist, dass die Leistung von js-ausgelösten Ereignissen genauso ungültig ist wie der direkte Seitensprung.
Aus dem Referenz-Blogbeitrag können wir ersehen, dass die Android-Plattform und verschiedene App-Hersteller sehr unterschiedlich sind. Beispielsweise unterstützt Chrome das Auslösen von Schemasprüngen durch js (Nicht-Benutzer-Klicks), das Festlegen von Iframe-SRC-Adressen usw. ab 25 nicht mehr weiter. Daher besteht immer noch ein großer Unterschied zwischen js-Triggerung und direkten Benutzerklicks, der möglicherweise den Einschränkungen bei der Audiowiedergabe ähnelt.
endlichNach den oben genannten Tests und Analysen wurde grundsätzlich festgestellt, dass die Verwendung von window.location.href für iOS und iframe für Android besser geeignet ist. Wenn wir iframe zum Hervorrufen verwenden, beheben wir den Fehler beim Hervorrufen normalerweise direkt. Allerdings gibt es hier ein Problem, das heißt, der Browser kann nicht erkennen, ob der Vorruf erfolgreich ist Wenn der Aufruf erfolgreich ist, wird der Browser immer noch angezeigt. Die Erfahrung beim Herunterladen von Informationen ist sehr schlecht. Natürlich müssen wir auch einige Erfolgs- oder Fehlerrückruffunktionen verarbeiten. Möglicherweise muss unser Szenario nur aufgerufen werden und muss nach einem Fehler nicht heruntergeladen werden.
Bei der Verwendung von location.href zum Aufrufen der nativen App auf dem iPhone ist die Methode des Springens zur Zwischenseite möglicherweise besser als die direkte Verarbeitung der aktuellen Seite.
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, dass er für das Studium aller hilfreich ist. Ich hoffe auch, dass jeder das VeVb Wulin Network unterstützt.