javascript - 如何从 webview 打开 safari 移动应用程序中的链接

标签 javascript html browser webview safari

这里有很多主题,但它们都需要本地代码交互才能工作。

在我的例子中,有必要能够直接从 url 执行此操作,而无需与我的移动应用进行任何交互。

我试过:

<a href="safari://google.com" target="_blank">Open Google in Safari</a>

<a href="webkit://google.com" target="_blank">Open</a>

并位于 this post .

<script>
    $(document).on('click', 'a[target="_blank"]', function (ev) {
      var url;

      ev.preventDefault();
      url = $(this).attr('href');
      window.open(url, '_system');
    });
  </script>

但没有任何作用。

有人知道如何解决这个问题吗?

最佳答案

有一个技巧。我们知道 iOS Safari 有这些可用的 URL 方案:

(HTTP) — http://websiteurl (HTTPS) — https://websiteurl x-网络搜索:// (FTP) — ftp://locationtofileonftpserver

如果您使用 Click here或 window.open("http://somewebsite")。它始终使用当前浏览器打开 url。

x-web-search://?[keyword] - 它将切换到 Safari 应用程序但搜索关键字

幸运的是我们还有ftp://。它将切换到 Safari 应用程序。但首先您需要在您的主机中设置一个公用文件夹并创建一个桥接 html 文件以将用户重定向回 http:

ftp://{你的地址}/bridge.html

window.open("https://yoururl", "_self");

现在您可以在任何浏览器的默认 Safari 应用程序中打开您的网站。

原始答案在这里:JS - Mobile - Open Safari from any browser


更新(2021 年 1 月): Apple 似乎在 iOS 上修复了这个问题,这不再有效了!

关于javascript - 如何从 webview 打开 safari 移动应用程序中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45378919/

相关文章:

javascript - React Leaflet : Dynamic Markers, 无法读取属性 'addLayer'

javascript - 更新 React Redux 中的深层嵌套状态(标准化)

javascript - 当表单真正提交时,通过Javascript或JS事件检查 "Required"?

javascript - Gif 图像未显示在 html 页面上

node.js - Zombie.js 浏览器未返回完整的 html?

http - 使用 GZIP 压缩的 HTTP 请求内容被截断(仅在浏览器中)

javascript - SlickGrid 在分组级别显示聚合

javascript - href() 和 click() 不能很好地配合使用

html - 为什么 chrome 移动 Debug模式设置了更大的 html 正文宽度而不是设备宽度?

css - 其他用户看到具有相同用户样式表的第 3 方网站