objective-c - WebView加載html時(shí),不能響應(yīng)模態(tài)窗口
問(wèn)題描述
RT,在OSX下的WebView中(非iOS),加載html網(wǎng)頁(yè)時(shí),window.showModalDialog這句js無(wú)效,無(wú)法彈窗,在Safari中加載同樣網(wǎng)頁(yè)時(shí)有響應(yīng),請(qǐng)問(wèn)有大神做過(guò)類(lèi)似的問(wèn)題么?代碼如下:
- (WebView *)webView:(WebView *)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]; [window makeKeyAndOrderFront:self]; 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{ [sender.window close]; }
問(wèn)題解答
回答1:最好不要用showModalDialog,換成p比較好,osx的webview我沒(méi)用過(guò),但是以前做android開(kāi)發(fā)的時(shí)候,webview是不支持模態(tài)窗口的彈出的,換成p才行,不知道osx的webview不彈出是不是這個(gè)原因
回答2:調(diào)試了很久終于解決了,提供一下代碼給后來(lái)人一個(gè)思路。
#pragma -mark -WebView Delegate - (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request{ NSUInteger windowStyleMask = NSClosableWindowMask|NSMiniaturizableWindowMask|NSTitledWindowMask; _webWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 400, 300) styleMask:windowStyleMask backing:NSBackingStoreNonretained defer:YES]; [_webWindow setReleasedWhenClosed:NO]; WebView* newWebView = [[WebView alloc] initWithFrame:[_webWindow contentRectForFrameRect:_webWindow.frame]]; [newWebView setAutoresizingMask:NSViewWidthSizable|NSViewHeightSizable]; [[newWebView mainFrame] loadRequest:request]; [_webWindow setContentView:newWebView]; [_webWindow center]; [_webWindow makeKeyAndOrderFront:nil]; return newWebView; } - (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{ [sender.window close]; }
