我正在使用可可WebView,它加载包含社交媒体按钮的HTML页面。当我单击Facebook之类的按钮时,根本没有打开任何弹出窗口,但是其他诸如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];
}

最佳答案

显然我需要在makeKeyAndOrderFront:中调用webView:createWebViewWithRequest: ...此处的示例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之类的按钮无法在Cocoa WebView中启动新窗口,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23690205/

10-12 00:39
查看更多