ios - Facbook 中的外部链接在 WKWebView 中不起作用。知道如何解决这个问题吗?
问题描述
Facebook 有各种网站的外部链接。这些可以在 Safari 上成功打开iOS
,甚至可以使用UISafariViewController
. 但是在a中WKWebView
这些链接是不可点击的,好像没有链接,只有文本。
有没有人经历过类似的事情或知道如何解决这个问题?
打开外部链接的其他网站不是问题。这似乎是 Facebook 的特定问题。几乎就像 Facebook 正在积极阻止这种情况一样。我发现 Safari 和 的用户代理有所不同WKWebView
,也许 Facebook 正在利用这个?!
解决方案
我遇到了类似的问题,其中一个页面位于 WkWebview
基本上,当单击此页面上的链接时,它会打开一个新页面,它适用于Mobile safari和SFSafariViewController但不适用于WkWebview
WKWebView 不会打开任何具有target="_blank"的链接,即“在新窗口中打开”
这是我所做的
在当前视图控制器上实现WKNavigationDelegate
@interface ViewController () <WKNavigationDelegate>
{
}
将导航委托分配给当前视图控制器
WKWebView.navigationDelegate = self;
并实现如下所示的导航委托(这可以让目标 _blank 链接在当前窗口中打开)
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler
{
BOOL shouldLoad = [self shouldStartLoadWithRequest:navigationAction.request];
if (shouldLoad && navigationAction.targetFrame == nil) {
[webView loadRequest:navigationAction.request];
}
decisionHandler(shouldLoad ? WKNavigationActionPolicyAllow : WKNavigationActionPolicyCancel);
}
希望这可以帮助
推荐阅读
- r - 与已安装包关联的早期版本
- python - 如何在 python 中为 chrome 的 webdriver 设置代理
- mysql - 数据库大小管理
- javascript - application.js 中 require() 和 //= 的区别
- swift - 点击 UIImageView 时,模拟器上无法识别 UITapGesture
- amazon-s3 - 使用 axios 通过预签名 url 上传到 s3 时出现 SignatureDoesNotMatch 错误
- html - 了解 SASS 和 BEM
- python - 是否可以从网站自动下载最新的 PDF?
- node.js - nvm:从源代码构建时在 BSD 上安装失败
- c# - TypeForwardedTo,显式实现的接口和事件