10

UIWebViewでかなり基本的なJSを実行することに固執しています。Webビューのデリゲートには、次のものがあります。

- (void)webViewDidFinishLoad:(UIWebView *)wView {
    NSString *someHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0]"];   
    NSString *allHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"];
    NSLog(@"someHTML: %@", someHTML);
    NSLog(@"allHTML: %@", allHTML);
}

ただし、メソッドが呼び出されると、someHTMLはnilになりますが、allHTMLにはWebビューにHTMLの本文全体が含まれます。

Safari JSコンソールでJSを実行しましたが、問題なく動作します(クラス'box'のdivが見つかるので、HTMLにあることがわかります)

助言がありますか?

より詳しい情報:

FWIW、次のそれぞれの結果もゼロです

NSString *result = [self.webView stringByEvaluatingJavaScriptFromString: @"document"];
NSLog (@"1. result: %@", result); //should log the document object?

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body"];
NSLog (@"2. result: %@", result); //should log the document body

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body.getElementsByClassName"];
NSLog (@"3. result: %@", result); //should log a function

result = [self.webView stringByEvaluatingJavaScriptFromString: @"document.body.getElementsByClassName('box')[0]"];
NSLog (@"4. result: %@", result); //should log the node
4

1 に答える 1

20

変化

NSString *someHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0]"];   

NSString *someHTML = [wView stringByEvaluatingJavaScriptFromString:@"document.getElementsByClassName('box')[0].innerHTML;"];   

(.innerHTMLを追加)

世界にすべての違いをもたらします。。。

于 2010-12-30T07:30:31.877 に答える