Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIWebView - stringByEvaluatingJavaScriptFromString - not changing text box value

Tags:

iphone

Why doesn't this code work? It shows the Google screen but it doesn't change the text box value. I confirmed that the JS does work by running it in Safari, and this code seems to work otherwise since running alert('hi') does work.

NSURL *web_url = [NSURL URLWithString:@"http://www.google.com"];
NSURLRequest *web_request = [NSURLRequest requestWithURL:web_url];
[web_screen loadRequest:web_request];
NSString *js_result = [web_screen stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('input')[1].value='test';"];
like image 891
Greg Avatar asked Nov 28 '22 05:11

Greg


1 Answers

Just expanding on the previous answer. You need to conform to the UIWebViewDelegate protocol by setting the delegate property of the UIWebView like this:


 web_screen.delegate = self;

Then you can implement one of the delegate methods to know when a request has finished loading and is therefore ready to have scripts run like so:


 - (void)webViewDidFinishLoad:(UIWebView *)webView {
  NSString *js_result = [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('input')[1].value='test';"];
 }

For more information on the UIWebViewDelegate protocol visit the Apple site http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html

like image 84
Dino Avatar answered Dec 09 '22 14:12

Dino