我试图从UIWebView
中加载的本地html文件调用javascript函数
但它没有回应
看起来像这样
NSString *script=[NSString stringWithFormat:@"sample()"];
if (tekst.loading) {
NSLog(@"Loading");
} else {
NSLog(@"Fully loaded");
[tekst stringByEvaluatingJavaScriptFromString:script];
}
和html
<head>
....
<script type='text/javascript'>
function sample() {
alert('Paznja');
}
</script>
...
</head>
答案 0 :(得分:13)
在我看来,好像你没有在UIWebView上使用委托。如果您设置一个委托并将对Javascript的调用放入“ - (void)webViewDidFinishLoad:(UIWebView *)webView”方法,它可以正常工作:
UIWebView *wv = [[UIWebView alloc] initWithFrame:CGRectMake(0.0, 0.0, 700.0, 700.0)];
[self.view addSubview:wv];
wv.delegate = self;
[wv loadHTMLString:@"<html><head><script type='text/javascript'>function sample() {alert('Paznja');}</script></head><body><h1>TEST</h1></body></html>" baseURL:nil];
[wv release];
并在同一个班级:
- (void)webViewDidFinishLoad:(UIWebView *)webView {
[webView stringByEvaluatingJavaScriptFromString:@"sample()"];
}
当我运行此代码时,警报消息正常工作。
答案 1 :(得分:0)
另外请注意,如果您期望从javascript函数返回一个对象而不是字符串,请执行以下操作:
NSString *json = [self.webView stringByEvaluatingJavaScriptFromString:@"JSON.stringify(TestMethod())"];