stringByEvaluatingJavaScriptFromString не работает - PullRequest
7 голосов
/ 12 июля 2011

Я пытаюсь вызвать функцию javascript из загруженного локального html-файла в UIWebView, но она не отвечает

это выглядит так

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> 

Ответы [ 2 ]

13 голосов
/ 12 июля 2011

Мне кажется, что вы не используете делегата в вашем 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()"];
}

Когда я запускаю этот код, предупреждающее сообщение работает нормально.

0 голосов
/ 19 августа 2014

Дополнительное примечание: если вы ожидаете, что объект возвращается из функции javascript, а не из строки, выполните следующие действия:

NSString *json = [self.webView stringByEvaluatingJavaScriptFromString:@"JSON.stringify(TestMethod())"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...