我是新来的,请耐心听我说。我在Objective-C的macOS上把一段youtube的视频嵌入到WKWebView上播放得很好。起初,视频(频道、推荐视频等)上的任何标准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上有很多快速的例子,但似乎无法在safari中从WKWebView中获得打开的链接。
我试过了:
if (!navigationAction.targetFrame.isMainFrame) {
[[NSApplication sharedApplication] openURL:[navigationAction.request URL]];
}但在macOS上不起作用
发布于 2020-08-12 22:42:10
这就是最终对我起作用的方法。似乎在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;
}发布于 2020-08-08 14:09:43
不是100%确定,但我看到这是在Mac上打开URL的网上流传。试试看。
[[NSWorkspace sharedWorkspace] openURL:[NSURL URLWithString:@"http://stackoverflow.com"]];https://stackoverflow.com/questions/63292184
复制相似问题