首页 > 解决方案 > Facbook 中的外部链接在 WKWebView 中不起作用。知道如何解决这个问题吗?

问题描述

Facebook 有各种网站的外部链接。这些可以在 Safari 上成功打开iOS,甚至可以使用UISafariViewController. 但是在a中WKWebView这些链接是不可点击的,好像没有链接,只有文本。

有没有人经历过类似的事情或知道如何解决这个问题?

打开外部链接的其他网站不是问题。这似乎是 Facebook 的特定问题。几乎就像 Facebook 正在积极阻止这种情况一样。我发现 Safari 和 的用户代理有所不同WKWebView,也许 Facebook 正在利用这个?!

标签: iosswift

解决方案


我遇到了类似的问题,其中一个页面位于 WkWebview

基本上,当单击此页面上的链接时,它会打开一个新页面,它适用于Mobile safariSFSafariViewController但不适用于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);
}

希望这可以帮助


推荐阅读