2013-04-10 12 views
1

Я загружаю шаблон html из NSBundle с использованием метода . Сам шаблон html имеет большое количество текстовых полей (скажем, 20). После заполнения всех текстовых полей я хочу html с этими заполненными значениями. Я пробовал,Получить текущий html-контент UIWebView?

[myWebView stringByEvaluatingJavaScriptFromString:@"document.body.innerHTML"] 
//even body.outerHTML, documentElement.innerHTML won't work 

Но он дает мне сырой шаблон html перед тем, как эти значения будут заполнены. Как мне это сделать? Я имею в виду, чтобы это сделать, читая содержание каждого текстовых полей, с помощью JavaScript,

[myWebView stringByEvaluatingJavaScriptFromString:@"document.getElementById('name').value"] 

, а затем читать и заменить струны HTML.

Есть ли другой лучший способ сделать это? Или есть какие-либо javascript-методы для чтения текущего содержимого веб-страницы?

ответ

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.

Смежные вопросы