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

时间:2017-07-28 17:05:17

标签: javascript html browser webview safari

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

在我的情况下,必须能够直接从网址进行操作,而不与我的移动应用进行任何互动。

我试过了:

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

但没有任何作用。

任何人都知道如何解决这个问题?

3 个答案:

答案 0 :(得分:1)

如果这是在safari中运行,它应该符合有关弹出窗口explained here的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>

答案 1 :(得分:1)

有一个窍门。我们知道iOS Safari具有以下可用的URL方案:

(HTTP)-http://websiteurl (HTTPS)-https://websiteurl x-web-search:// (FTP)-ftp://locationtofileonftpserver

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

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

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

ftp:// {youripaddress} /bridge.html

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

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

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

答案 2 :(得分:0)

iOS上没有Safari的URL方案。

请参阅Apple的文档: https://developer.apple.com/library/archive/featuredarticles/iPhoneURLScheme_Reference/Introduction/Introduction.html

搜索一下,你会看到类似的答案: What is Mobile Safari's custom URL Scheme?