【问题标题】:WKWebView Open _Bank Target Links in SafariWKWebView 在 Safari 中打开 _Bank 目标链接
【发布时间】:2020-11-27 05:22:26
【问题描述】:

我很新,所以请耐心等待。我有一个嵌入在 WKWebView 中的 youtube 视频,在 Objective-C 的 macOS 上可以正常播放。起初,视频上的任何标准 youtube 链接(频道、推荐视频等)都不会加载。我认为这是因为 youtube 使用 _blank 目标链接。以下代码修复了它,因此现在任何视频链接都将在 WKWebView 中打开。

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
{
    NSLog(@"createWebViewWithConfiguration %@ %@", navigationAction, windowFeatures);
    if (!navigationAction.targetFrame.isMainFrame) {
        [(WKWebView *)_webView loadRequest:navigationAction.request];
    }
    return nil;
}

但是,我希望这些链接在 macOS 浏览器中打开,而不是在 WKWebview 中打开。 iOS 上有很多 swift 示例,但在 safari 中似乎无法从 WKWebView 打开链接。

我试过了:

if (!navigationAction.targetFrame.isMainFrame) {
     [[NSApplication sharedApplication] openURL:[navigationAction.request URL]];
}

但不适用于 macOS

【问题讨论】:

标签: objective-c xcode macos safari wkwebview


【解决方案1】:

这最终对我有用。似乎在 Safari 中打开任何 url(包括 YouTube 中使用的 javascript 类型弹出框),而不是在 WKWebView 中打开它们(或根本不打开它们)。

- (WKWebView *)webView:(WKWebView *)webView createWebViewWithConfiguration:(WKWebViewConfiguration *)configuration forNavigationAction:(WKNavigationAction *)navigationAction windowFeatures:(WKWindowFeatures *)windowFeatures
{
    NSLog(@"createWebViewWithConfiguration %@ %@", navigationAction, windowFeatures);
    if (!navigationAction.targetFrame.isMainFrame) {
       [[NSWorkspace sharedWorkspace] openURL:[navigationAction.request URL]];
    }
    return nil;
}

【讨论】:

    【解决方案2】:

    不是 100% 肯定,但我已经看到这个在网上流传,用于在 Mac 上打开 URL。试试看吧。

    [[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://stackoverflow.com"]];
    

    【讨论】:

    • 它绝对让我朝着正确的方向前进。解决方案是在 NS 应用程序上使用 NSWorkspace,但不使用 URLWithString。不过,感谢您为我指明了正确的方向。
    猜你喜欢
    • 2015-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多