我正在使用 Cocoa WebView,它加载包含社交媒体按钮的 HTML 页面。当我单击 Facebook Like 按钮时,根本不会打开弹出窗口,但 Twitter 和 Google+ 等其他窗口工作正常并按预期启动弹出窗口。
同一个 HTML 页面在 Safari 中运行没有问题。
我相信我已经正确实现了 WebUIDelegate,并且无法想到还有什么可能导致此问题。有什么想法吗?
#pragma mark WebViewUIDelegate Methods
- (WebView *)webView:(WebView *) __unused sender createWebViewWithRequest:(NSURLRequest *)request
{
NSWindow *window = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 300) styleMask:NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask backing:NSBackingStoreBuffered defer:YES];
[window setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
WebView *webView = [[WebView alloc] init];
[webView setFrameLoadDelegate:self];
window.contentView = webView;
[webView.mainFrame loadRequest:request];
[_popupWindows addObject:window];
return webView;
}
- (WebView *)webView:(WebView *)sender createWebViewModalDialogWithRequest:(NSURLRequest *)request
{
return [self webView:sender createWebViewWithRequest:request];
}
- (void)webViewRunModal:(WebView *)sender
{
[sender.window makeKeyAndOrderFront:self];
}
- (void)webViewShow:(WebView *)sender
{
[sender.window makeKeyAndOrderFront:self];
}
- (void)webViewClose:(WebView *)sender
{
[_popupWindows removeObject:sender.window];
[sender.window close];
}
最佳答案
显然我需要在 webView:createWebViewWithRequest:
中调用 makeKeyAndOrderFront:
...此处的示例 https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/DisplayWebContent/Tasks/MultipleWindows.html#//apple_ref/doc/uid/20002026-117294暗示这是必要的(因为 openUntitledDocumentAndDisplay:error:
将调用 makeKeyAndOrderFront:
),而 webViewShow:
的文档似乎暗示显示窗口应该是它的专属责任。令人困惑。如果有人有更好的解释,欢迎。
关于objective-c - Facebook Like 按钮未在 Cocoa WebView 中启动新窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23690205/