Cocoa 从自定义WebKit浏览器视图启动新浏览器窗口

Cocoa 从自定义WebKit浏览器视图启动新浏览器窗口,cocoa,webkit,Cocoa,Webkit,我的MacOsX有一个Cocoa应用程序,带有一个特殊的控制器/窗口,使用WebKit进行浏览。我刚刚发现浏览的内容可能有链接,可以打开新的浏览器窗口。虽然我为我的webView设置了以下两个声明(见下文),但当我用我的专用窗口单击这些链接时,不会发生任何事情。从常规浏览器中单击它们将重新打开一个窗口: [[_webView preferences] setJavaScriptEnabled:YES]; [[_webView preferences] setJavaScriptCanOpenWi

我的MacOsX有一个Cocoa应用程序,带有一个特殊的控制器/窗口,使用WebKit进行浏览。我刚刚发现浏览的内容可能有链接,可以打开新的浏览器窗口。虽然我为我的webView设置了以下两个声明(见下文),但当我用我的专用窗口单击这些链接时,不会发生任何事情。从常规浏览器中单击它们将重新打开一个窗口:

[[_webView preferences] setJavaScriptEnabled:YES];
[[_webView preferences] setJavaScriptCanOpenWindowsAutomatically:YES];

我是否缺少回调实现?

让自己成为UI委托人:

[webView setUIDelegate:self];

并实现
webView:createWebViewWithRequest:
。此方法需要创建并返回新的
WebView
对象和显示该对象的窗口。如果您不想以编程方式创建新视图,可以使用NIB并加载它。

我这样做了,并且我确实得到了对webView:createWebViewWithRequest方法的调用。但是,“请求”始终为零。在哪里截取用户单击的链接的URL?窗口是否使用javascript打开?如果是这样,可能没有请求。如果没有请求,请在不发送加载消息的情况下创建web视图/窗口。虽然这是一个老问题,但我想为那些来到这里的人提供一个答案:All window.open调用会导致createWebViewWithRequest:请求为空,然后在该web视图上更改位置。