2010-01-20 45 views
12

WebView嵌入到應用程序中並在其中加載html頁面時,JavaScripts alert()/confirm()/etc。不工作。JavaScript alert()在嵌入式WebView中不起作用

尋找文檔中周圍,也有WebPreferences沒有相關的設置 - 看起來是相關小號WebUIDelegate-(void)webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:唯一...但實施這些將意味着編寫自定義對話框,這些似乎相當多餘...
我不需要自定義WebUIDelegate,並且希望繼續使用默認值。

當然,必須有一些方法來簡單地啓用alert()等,但如何?

+0

該委託方法的文檔說「如果您不實施此方法不採取任何措施」,所以您似乎已經回答了您自己的問題。 – smorgan 2010-01-20 14:34:51

+0

我將其解釋爲*「如果您設置了未實現此方法的自定義WebUIDelegate,則不採取任何操作」 - 理想情況下,我甚至不想設置自己的WebUIDelegate。 – 2010-01-20 14:38:31

回答

5

事實證明,根本沒有默認WebUIDelegate集 - 蘋果似乎期望每個人都爲自己實現相同的基本功能。

+2

但js'prompt'工作。所以它有點不一致。 – 2015-04-02 02:12:43

12

這是一個示例代碼,將完成基本工作。但是,您需要確保將此對象註冊爲WebView的UIDelegate。

- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame { 
    NSAlert *alert = [[NSAlert alloc] init]; 
    [alert addButtonWithTitle:@"OK"]; 
    [alert setMessageText:message]; 
    [alert runModal]; 
    [alert release]; 
} 
+0

「但是,您需要確保將此對象註冊爲WebView的UIDelegate。」那小小的夜空拯救了我的夜晚。謝謝。 – byron 2011-09-07 05:16:55