13

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?

2
  • The documentation for that delegate method says "No action is taken if you do not implement this method", so it seems like you've answered your own question. Commented Jan 20, 2010 at 14:34
  • I interpret that as "No action is taken if you set a custom WebUIDelegate which does not implement this method" - ideally i don't even want to set my own WebUIDelegate. Commented Jan 20, 2010 at 14:38

2 Answers 2

12

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];
}
Sign up to request clarification or add additional context in comments.

1 Comment

"You need however to make sure that this object is registered as a UIDelegate for the WebView." That little blurb saved my evening. Thanks.
5

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

1 Comment

But js prompt works. So it's kind of inconsistent.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.