it-swarm.com.de

Erzwingen Sie den Link zum Öffnen einer mobilen Safari aus einer Web-App mit Javascript

Wenn Sie window.open() in einer iOS-Web-App aufrufen, wird die Seite in der Web-App anstelle von mobiler Safari geöffnet.

Wie erzwinge ich, dass die Webseite in der mobilen Safari geöffnet wird?

Hinweis: Die Verwendung von direkten <a href>-Links ist keine Option.

35
Aron Woost

Das ist möglich. Getestet mit der eigenständigen iOS5-Web-App:

HTML:

<div id="foz" data-href="http://www.google.fi">Google</div>

JavaScript:

document.getElementById("foz").addEventListener("click", function(evt) {
    var a = document.createElement('a');
    a.setAttribute("href", this.getAttribute("data-href"));
    a.setAttribute("target", "_blank");

    var dispatch = document.createEvent("HTMLEvents");
    dispatch.initEvent("click", true, true);
    a.dispatchEvent(dispatch);
}, false);

Kann hier getestet werden: http://www.hakoniemi.net/labs/linkkitesti.html

63
zvona

Es stellt sich heraus, dass es NICHT MÖGLICH ist , um die iOS-Web-App mit einem JavaScript window.open() zu umgehen. Wenn Sie möchten, dass ein Link in Mobile Safari geöffnet wird, müssen Sie <a href>-Links verwenden.

9
Aron Woost

Vue-Implementierung. Hoffnung wird hilfreich sein.

<template>
<div @click='handler()'>{{ text }}</div>
</template>

<script>
export default {
  props: {
    href: String,
    text: String,
  },
  methods: {
    handler() {
      const a = document.createElement('a')
      a.setAttribute('href', this.href)
      a.dispatchEvent(new MouseEvent("click", {'view': window, 'bubbles': true, 'cancelable': true}))
    }
  }
}
</script>
0

Sie können erzwingen, dass iOS eine Verknüpfung von PWA in Safari mithilfe von window.open () öffnet, sofern Sie entweder eine andere Unterdomäne oder http anstelle von https verwenden.

Nehmen Sie zum Beispiel beispiel.com

window.open('http://example.com','_blank')

Hinweis: Mein Server leitet http nach dem Öffnen im Browser zu https um. Es gibt also keine Sicherheitsbedenken.

(oder)

window.open('api.example.com','_blank')
0