2012-01-11 27 views
4

我试图加载一个带有文本字段的HTML页面到webview中,编辑文本字段中的文本然后获取该webview中的HTML数据。编辑后从UIWebView中读取HTML内容

我使用此代码加载页面:

NSString* path = [[NSBundle mainBundle] pathForResource:@"file" ofType:@"htm"]; 
NSData* xmlData = [NSData dataWithContentsOfFile:path]; 
[web loadData:xmlData MIMEType:@"text/html" textEncodingName:nil baseURL:nil]; 

而这种代码来获取内容,并在web视图再次设置:

NSString *myText = [web stringByEvaluatingJavaScriptFromString:@"document.all[0].innerHTML"]; 
data = [myText dataUsingEncoding:NSUTF8StringEncoding]; 
[web loadData:data MIMEType:@"text/html" textEncodingName:nil baseURL:nil]; 

的问题是,文本我插入的文本字段不是从webview返回的。

我试过document.body.innerHTMLdocument.body.outerHTML,它们都以我加载它的方式返回HTML页面数据。

有无论如何获取包含我插入文本的HTML页面数据?

+0

如果有一个提交按钮会回来再次发布的条目,你不能够拦截这调用并读取POST数据? – reddersky 2012-01-15 16:27:33

+2

我正在尝试离线执行此操作。保存数据,然后在连接重新联机时提交。作为一种解决方法,我目前正在使用其ID来阅读文本字段。 – Basel 2012-01-17 11:36:16

+1

我们所做的是实现web视图委托方法[shouldStartLoadWithRequest](http://developer.apple.com/library/ios/documentation/uikit/reference/UIWebViewDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intfm/UIWebViewDelegate/web视图:shouldStartLoadWithRequest:navigationType :)。在方法内部,您可以访问URL的get参数。您可以解析数据,并根据在线状态做出实际的发布请求。或者,您可以使用JavaScript函数返回测试字段的'value'(不是innerHTML)。 – 2012-07-19 22:22:17

回答

1

尝试使用stringByEvaluatingJavaScriptFromString。如果您在使用jQuery,你应该能够使用返回你的文本框的值的表达式,即:

NSString* text = [webView stringByEvaluatingJavaScriptFromString:@"$('#myTextFieldId').val();"];