我使用NSBundle
的{{1}}方法从UIWebView
加载html模板。 html模板本身有大量的文本框(比如20)。在我填充所有文本框后,我希望html具有这些填充值。我试过了,
loadRequest
但它在填充这些值之前给了我原始的html模板。我该怎么做? 我正在考虑这样做,通过阅读每个文本框的内容,通过javascript,
[myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"]
//even body.outerHTML, documentElement.innerHTML won't work
然后读取并替换html的字符串。
还有其他更好的方法吗?或者是否有任何javascript方法来阅读网页的当前内容?
答案 0 :(得分:0)
完全正确的是.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
字符串。