1

我从NSBundleusingUIWebViewloadRequest方法加载了一个 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 方法来读取网页的当前内容?

4

1 回答 1

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以字符串的形式出现。

于 2013-04-11T09:40:55.593 回答