stringByEvaluatingJavaScriptFromString不起作用

stringByEvaluatingJavaScriptFromString does not work

本文关键字:不起作用 stringByEvaluatingJavaScriptFromString      更新时间:2023-09-26

我试图从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> 

它看起来好像你没有在你的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()"];
}

当我运行这段代码时,警报消息工作正常

另外注意,如果您希望从javascript函数返回一个对象而不是字符串,那么请执行以下操作:

NSString *json = [self.webView stringByEvaluatingJavaScriptFromString:@"JSON.stringify(TestMethod())"];