强制链接从带有 javascript 的 Web 应用程序在移动 Safari 中打开
Posted
技术标签:
【中文标题】强制链接从带有 javascript 的 Web 应用程序在移动 Safari 中打开【英文标题】:Force link to open in mobile safari from a web app with javascript 【发布时间】:2011-12-17 07:36:53 【问题描述】:在 ios 网络应用程序中调用 window.open()
时,页面会在网络应用程序而不是移动 safari 中打开。
如何强制网页在移动 Safari 中打开?
注意:不能直接使用<a href>
链接。
【问题讨论】:
你的意思是 ***.com" target="_blank">Go to SO 不起作用? 【参考方案1】:这是可能的。使用 iOS5 独立网络应用测试:
html:
<div id="foz" data-href="http://www.google.fi">Google</div>
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
【讨论】:
@Napalm 确保在行尾添加分号var dispatch = ...
不应该是<div id="foz" data-href="http://www.google.fi">Google</div>
- 打开<div>
并用</a>
关闭它没有多大意义。最后的</li>
是什么?
在 Facebook 应用浏览器中对我不起作用。我确实修复了分号@laker。
致我的上一条评论:iOS 10.1,示例工作正常,但是当我尝试通过单击 webgl 按钮而不是 div 来调用它时 - 没有任何反应。要解决它,只需删除 "a.setAttribute("target", "_blank");"并使用 a.dispatchEvent(new MouseEvent("click", 'view': window, 'bubbles': true, 'cancelable': true););。它会打开一个新的 Safari 窗口。绝对不知道为什么在这种情况下不需要 target=_blank。
这在 iOS 11 中对我不起作用。它只是打开嵌入式 UIWebView 中的链接。【参考方案2】:
事实证明,不可能使用 JavaScript window.open()
转义 iOS 网络应用程序。如果您想在移动 Safari 中打开链接,您必须使用 <a href>
链接。
【讨论】:
想详细说明一下?我想要一个 链接以在 ios 上从 chrome/opera 打开 safari【参考方案3】: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>
【讨论】:
【参考方案4】:如果您使用不同的子域或使用 http 而不是 https,则可以强制 iOS 在 safari 中使用 window.open() 从 PWA 打开链接。
以 example.com 为例
window.open('http://example.com','_blank')
注意:一旦在浏览器中打开,我的服务器会将 http 重定向到 https。所以没有安全问题。
(或)
window.open('api.example.com','_blank')
【讨论】:
以上是关于强制链接从带有 javascript 的 Web 应用程序在移动 Safari 中打开的主要内容,如果未能解决你的问题,请参考以下文章
带有“+string”的类型强制在 Javascript 中如何工作? [复制]
html [html:下载链接]通过带有下载属性的标签强制下载链接。 #html #cakephp