Lorsque vous appelez window.open()
dans une application Web iOS, la page s'ouvre dans l'application Web au lieu du safari mobile.
Comment puis-je forcer la page Web à s'ouvrir dans un safari mobile?
Remarque: l'utilisation de liens <a href>
droits n'est pas une option.
C'est possible. Testé avec l'application Web autonome iOS5:
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);
Peut être testé ici: http://www.hakoniemi.net/labs/linkkitesti.html
Il s'avère que c'est PAS POSSIBLE d'échapper à l'application Web iOS avec une JavaScript window.open()
. Si vous souhaitez ouvrir un lien dans un safari mobile, vous devez utiliser des liens <a href>
.
Mise en oeuvre de la vue. Espoir sera utile.
<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>
Vous pouvez forcer iOS à ouvrir un lien depuis PWA dans safari à l'aide de window.open (), à condition que vous utilisiez un sous-domaine différent ou http (au lieu de https).
Par exemple pour prendre exemple.com
window.open('http://example.com','_blank')
Remarque: mon serveur redirigera http vers https une fois ouvert dans le navigateur. Donc, il n'y a pas de problème de sécurité.
(ou)
window.open('api.example.com','_blank')