我使用UIWebView的loadRequest方法从NSBundle加载了一个html模板。html模板本身有大量的文本框(比如20个)。在我填充完所有的文本框之后,我想要用这些填充值来填充html。
[myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]
//even body.outerHTML, documentElement.innerHTML won't work但是在填充这些值之前,它给了我原始的html模板。我该怎么做呢?我想这样做,通过读取每个文本框的内容,通过javascript,
[myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById('name').value"]然后读取并替换html的字符串。
有没有其他更好的方法来做到这一点?或者有没有什么javascript方法来读取网页的当前内容?
发布于 2013-04-11 17:40:56
您完全正确,.innerHTML和.outerHTML不会给您提供DOM的更新状态。
但是,由于您已经开始使用Javascript进行查询,因此可以创建一个JSON字符串,其中包含当前输入的所有值的列表:
NSString *jsonString = [myWebView stringByEvaluatingJavaScriptFromString:@"(function(fields) { var O=[]; for(var i=0; i<fields.length;i++) {O.push(fields[i].value);} return JSON.stringify(O); })(document.querySelectorAll('input[type="text"]'))"];然后你可以在你的原生代码中解析它,如果它起作用了,它应该是一个字符串的NSArray。
https://stackoverflow.com/questions/15923635
复制相似问题