Ответ 1
Оказывается, просто нет стандартного набора WebUIDelegate
- Apple, похоже, ожидает, что каждый сможет реализовать те же основные функции для себя.
При вложении WebView
в приложение и загрузке html-страниц в нем, JavaScripts alert()
/confirm()
/etc. не работают.
Оглядываясь в документации, в WebPreferences
нет связанных настроек, это связано только с WebUIDelegate
-(void)webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:
и т.д., но реализация этих будет означать запись пользовательских диалогов для них, которые кажутся довольно избыточными...
Мне не нужен пользовательский WebUIDelegate
и хотелось бы продолжать использовать только по умолчанию.
Конечно, должен быть какой-то способ просто включить alert()
et al, но как?
Оказывается, просто нет стандартного набора WebUIDelegate
- Apple, похоже, ожидает, что каждый сможет реализовать те же основные функции для себя.
Вот пример кода, который будет выполнять основную работу. Однако вам нужно убедиться, что этот объект зарегистрирован как UIDelegate для 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];
}