您的位置:首頁技術文章
文章詳情頁

objective-c - WebView加載html時,不能響應模態窗口

瀏覽:148日期:2024-04-11 16:58:46

問題描述

RT,在OSX下的WebView中(非iOS),加載html網頁時,window.showModalDialog這句js無效,無法彈窗,在Safari中加載同樣網頁時有響應,請問有大神做過類似的問題么?代碼如下:

- (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]; }

問題解答

回答1:

最好不要用showModalDialog,換成p比較好,osx的webview我沒用過,但是以前做android開發的時候,webview是不支持模態窗口的彈出的,換成p才行,不知道osx的webview不彈出是不是這個原因

回答2:

調試了很久終于解決了,提供一下代碼給后來人一個思路。

#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]; }

標簽: HTML
国产综合久久一区二区三区