JavaScript alert()无法在嵌入式WebView中使用

时间:2010-01-20 13:28:23

标签: objective-c cocoa macos webview

在应用程序中嵌入WebView并在其中加载html页面时,JavaScripts alert() / confirm() /等。不工作。

在文档中查看,WebPreferences中没有相关设置 - 看起来唯一相关的内容是WebUIDelegate s -(void)webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:等等......但实现这些设置意味着编写自定义这些对话框看起来很冗余...... 我不需要自定义WebUIDelegate,并希望继续使用默认值。

肯定有一些方法可以简单地启用alert()等,但是如何?

2 个答案:

答案 0 :(得分: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];
}

答案 1 :(得分:5)

事实证明,没有默认的WebUIDelegate设置 - Apple似乎希望每个人都为自己实现相同的基本功能。