使用javascript从Web应用程序强制链接在移动Safari中打开

时间:2011-10-28 13:36:05

标签: javascript ios web-applications mobile-safari iphone-standalone-web-app

在iOS网络应用程序中调用window.open()时,该页面将在Web应用程序中打开而不是移动游戏。

如何强制在移动版Safari中打开网页?

注意:不能使用直接<a href>链接。

4 个答案:

答案 0 :(得分:63)

这是可能的。使用iOS5独立Web应用程序进行测试:

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);

可在此处测试:http://www.hakoniemi.net/labs/linkkitesti.html

答案 1 :(得分:9)

原来是不可能使用JavaScript window.open()来逃避iOS网络应用。如果您想要在移动版Safari中打开链接,则必须使用<a href>个链接。

答案 2 :(得分:1)

Vue实现。希望会有所帮助。

<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>

答案 3 :(得分:0)

如果您使用其他子域或使用http而不是https,则可以使用window.open()强制iOS在Safari中通过PWA打开链接。

例如以example.com

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

注意:在浏览器中打开后,我的服务器会将http重定向到https。因此,无需担心安全问题。

(或)

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