Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript alert() not working in embedded WebView

When embedding WebView in an application and loading html-pages in it, JavaScripts alert()/confirm()/etc. do not work.

Looking around in the documentation, there are no related settings in WebPreferences - the only thing that looks related are WebUIDelegates -(void)webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame: etc ... but implementing these would mean writing custom dialogs for these which seems pretty redundant...
I don't need a custom WebUIDelegate and would like to continue just using the default one.

Surely there has to be some way to simply enable alert() et al, but how?

like image 692
Georg Fritzsche Avatar asked Jan 20 '10 13:01

Georg Fritzsche


2 Answers

Here is a sample code that will do the basic job. You need however to make sure that this object is registered as a UIDelegate for the WebView.

- (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];
}
like image 85
RedMitch Avatar answered Sep 20 '22 23:09

RedMitch


It turns out there is simply no default WebUIDelegate set - Apple seems to expect everyone to implement the same basic features for themselves.

like image 30
Georg Fritzsche Avatar answered Sep 19 '22 23:09

Georg Fritzsche