jos*_*405 6 html javascript browser safari webview
这里有很多主题,但是它们都需要本机代码交互才能起作用。
就我而言,必须能够直接从url进行操作,而无需与我的移动应用程序进行任何交互。
我试过了:
<a href="safari://google.com" target="_blank">Open Google in Safari</a>
和
<a href="webkit://google.com" target="_blank">Open</a>
并基于这篇文章。
<script>
$(document).on('click', 'a[target="_blank"]', function (ev) {
var url;
ev.preventDefault();
url = $(this).attr('href');
window.open(url, '_system');
});
</script>
Run Code Online (Sandbox Code Playgroud)
但没有任何效果。
有人知道如何解决此问题吗?
有一个窍门。我们知道 iOS Safari 有这些可用的 URL Schemes:
(HTTP) — http://websiteurl (HTTPS) — https://websiteurl x-web-search:// (FTP) — ftp://locationtofileonftpserver
如果您使用Click here或 window.open("http://somewebsite")。它总是使用当前浏览器打开 url。
x-web-search://?[keyword] - 它将切换到 Safari 应用程序但搜索关键字
幸运的是,我们还有 ftp://。它将切换到 Safari 应用程序。但首先您需要在您的主机中设置一个公共文件夹并创建一个桥接 html 文件以将用户重定向回 http:
ftp://{youripaddress}/bridge.html
window.open("https://yoururl", "_self");现在,您可以在任何浏览器的默认 Safari 应用程序中打开您的网站。
原始答案在这里:JS - Mobile - Open Safari from any browser
更新 (2021-01): Apple 似乎在 iOS 上修复了此问题,这不再有效!
如果它在 safari 中运行,则应遵守有关弹出窗口的 safari 异步调用限制,如此处所述。
您应该修复您的代码,以便打开的窗口位于函数之外,类似这样:
<script>
var windowReference = window.open();
$(document).on('click', 'a[target="_blank"]', function (ev) {
var url;
ev.preventDefault();
url = $(this).attr('href');
windowReference.location = url;
});
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4044 次 |
最近记录: |