2013-04-10 4 views
1

Je charge un modèle html à partir du NSBundle en utilisant la méthode UIWebViewloadRequest. Le modèle html lui-même possède un grand nombre de zones de texte (disons 20). Après avoir rempli toutes les zones de texte, je veux le html avec ces valeurs remplies. J'ai essayé,Obtenez le contenu html actuel de UIWebView?

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

Mais il me donne le modèle html brut avant que ces valeurs remplies. Comment puis-je le faire? Je pense ce faire cela, en lisant le contenu de chaque textboxes, par javascript,

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

puis lire et remplacer les chaînes du html.

Existe-t-il un autre moyen de le faire? Ou existe-t-il des méthodes javascript pour lire le contenu actuel de la page Web?

Répondre

0

Vous avez entièrement raison que .innerHTML et .outerHTML ne vous donneront pas l'état mis à jour du DOM.

Cependant, étant donné que vous êtes déjà en interrogeant par Javascript, vous pouvez créer une chaîne JSON contenant une liste de toutes les valeurs actuellement saisies:

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"]'))"]; 

Vous pouvez ensuite analyser que dans votre un code natif si elle travaillé, il devrait sortir comme un NSArray de chaînes.