WKWebView Open _Bank Target Links в Safari - PullRequest
       243

WKWebView Open _Bank Target Links в Safari

0 голосов
/ 07 августа 2020

Я совсем новенький, так что несите меня. У меня было встроенное видео с YouTube в WKWebView, которое отлично воспроизводится на macOS в Objective- C. Сначала ни одна из стандартных ссылок YouTube на видео (канал, рекомендуемые видео и т. Д. c) не загружалась. Я думаю, это потому, что 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, но похоже, что не удается получить ссылки для открытия из WKWebView в сафари.

Я пробовал:

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

Но не работает на macOS

Ответы [ 2 ]

0 голосов
/ 12 августа 2020

Это то, что в итоге сработало для меня. Кажется, что открывается любой URL-адрес (включая всплывающие окна типа javascript, используемые в YouTube) в Safari вместо того, чтобы открывать их в 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;
}
0 голосов
/ 08 августа 2020

Не уверен на 100%, но я видел, как это распространялось в Интернете для открытия URL-адресов на Ma c. Попробуйте.

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