【问题标题】:Force iOS Facebook App to open feed links in Browser not in WebView强制 iOS Facebook 应用在浏览器中而不是在 WebView 中打开提要链接
【发布时间】:2014-05-15 16:45:32
【问题描述】:

(在否决/标记之前,请注意已经有类似的问题,但它们都不适用于纯 javascript)

每当在 iOS 设备(仅通过 facebook 应用程序)上单击 Facebook-Feed 上的链接时,它将在 WebView 中打开,而不是在新的浏览器窗口中打开(就像在 android 上一样)。

当这种情况发生时,即将打开的网络应用程序中断,所以我需要以某种方式欺骗 iOS 并强制它在用户标准浏览器中打开链接(网络应用程序可以完美运行)。

如果只有在单击按钮时才有可能,那也没有问题。但从我尝试过在 WebView 中打开的所有内容,我无法设法在浏览器中打开它。

我见过一些我当然不能在 Web 应用程序中使用的 ObjectiveC 解决方案。所以我想坚持使用 JS/HTML(或 PHP,但我认为这不会有太大帮助)

什么不起作用:

<a href="http://google.com" target="_blank">My Link Text</a>

带有目标属性的普通链接将无法解决问题。该链接将改为在 WebView 中打开。

window.open('http://google.com');

window.open 也不起作用(当然我已将它附加到事件处理程序)。看来webview无论如何都不会响应window.open()

那么这里有人有解决方案吗?我希望这不是一些奇怪的 iOS 指南。

【问题讨论】:

标签: javascript ios facebook


【解决方案1】:

此行为由 Facebook 应用程序控制。在 iOS 上有一个显式调用以使用系统工具打开 URL(例如用于常规网址的 Safari)。如果 Facebook 应用程序通过其内置的 Web 视图打开 URL,那么您无能为力

【讨论】:

  • 感谢您的澄清。我通过阅读与 webview 中不同的用户代理并显示不同的内容来解决它
  • 我也必须检测 FB webview,感谢这篇文章:detect Facebook Browser。为了打开一个新窗口,我们必须在 setTimeout 中封装一个 location.href 调用。粗暴但有效:(if (isFacebookApp()) { setTimeout(function(){ location.href = url; }, 500); }
  • @mrdougwright 我能够检测到我是否在 Facebook 应用内浏览器中,但是您如何设法打开另一个浏览器的链接(例如本机、chrome 或 safari)? location.href 仅更改 URL,但导航保留在 Facebook 应用内浏览器中。
猜你喜欢
  • 2018-02-16
  • 2011-12-01
  • 2021-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多