cocoa:webView,它有超链接添加`target ="_ blank"`无法打开

小弟调*_*弟调调 2 macos xcode cocoa objective-c

webView中有添加的超链接target = " _blank "无法打开.

我开发类似webview的应用程序,但我有一个问题.如何在当前应用程序中打开新窗口中的链接 - 而不是在safari中?

感谢帮助.

在此输入图像描述

@Rob Keniger代码没有运行.为什么?

Rob*_*ger 5

您需要将对象设置UIDelegate为您的对象WebView并在该对象中实现该webView:createWebViewWithRequest:方法.

在您的方法实现中,您需要打开一个包含单独的新窗口WebView,然后告诉它将传递的参数作为参数mainFrame加载URLRequest到方法中.

更新:

我看了你的代码.您需要将对象指定为Web视图UIDelegate,因此请添加[webView setUIDelegate:self]一行applicationDidFinishLaunching:.

如何实现委托的一个非常简单的示例是:

- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
{
    NSUInteger windowStyleMask =    NSClosableWindowMask | 
                                    NSMiniaturizableWindowMask |
                                    NSResizableWindowMask |
                                    NSTitledWindowMask;
    NSWindow* webWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 800, 600) styleMask:windowStyleMask backing:NSBackingStoreBuffered defer:NO];
    WebView* newWebView = [[WebView alloc] initWithFrame:[webWindow contentRectForFrameRect:webWindow.frame]];
    [newWebView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable];
    [webWindow setContentView:newWebView];
    [webWindow center];
    [webWindow makeKeyAndOrderFront:self];
    [[newWebView mainFrame] loadRequest:request];
    return newWebView;
}
Run Code Online (Sandbox Code Playgroud)