0
votes

Obtenir des valeurs de la page HTML en utilisant Swift

Je dois récupérer toutes les valeurs de la page HTML suivante comme Data0, Data1, Data2, etc.,

 webView.evaluateJavaScript("document.getElementsByName('form1').value") { (result, error) in
        print(result as Any)
        print(error as Any)
    }


0 commentaires

3 Réponses :


0
votes

Le formulaire n'a pas de valeur, vous devez le récupérer à partir des enfants d'entrée code>. Pas non plus que getelementsbyname code> renvoie un nodelist code> et non un seul élément.

val values = {};
Array.from(document.getElementsByName("form1")[0].children).forEach(input => {
    values[input.getAttribute("name")] = input.value;
});


2 commentaires

Merci pour votre réponse. J'ai besoin de transmettre ceci comme une chaîne dans mon délégué comme ci-dessous, webview.évaluatejavascript ("document.getelementsbyName (" Formulaire 1 '). Valeur ") {(résultat, erreur) dans l'impression (résultat que tout) Imprimer (erreur Quelconque) } . Pouvez-vous me laisser savoir comment le formater pour récupérer toutes les valeurs?


Fondamentalement, vous pouvez copier le code et la coller en guillemets simples. Je n'ai aucune expérience de Swift, mais je vous recommanderais de développer le JS séparément et de le tester (dans le navigateur). Ensuite, vous pouvez le minimiser et le stocker dans votre projet SWIFT. Ou vous ouvrez le fichier à Swift et évaluez ceci.



0
votes

Vous devez ajouter une méthode JavaScript dans votre fichier HTML qui passera des valeurs de formulaire dans votre code SWIFT. Vous pouvez le faire avec WKScriptMessageHandler.

Dans votre fichier HTML, ajoutez le code suivant. Je l'ai nommé index.html et placé localement dans l'application. xxx

fenêtre.webkit.messagehandlers.myapp.postMessage ({valeurs} ) ; Enverra de la valeur de JavaScript à Swift. Ici MyApp est un nom de gestionnaire que j'ai ajouté en code SWIFT.

voici le code SWIFT xxx


6 commentaires

Merci pour votre réponse. Mais sans modifier le fichier HTML, j'ai besoin de récupérer toutes les valeurs. C'est possible?


@ user7413163 Lorsque vous souhaitez extraire ces valeurs, je veux dire sur le bouton clic ou sur n'importe quel autre événement.


Dans Android, ils utilisent le code suivant, String Final String JSCODE = "" + "Parseform (formulaire) {" + "VAR VAR VAILLE = '';" + "pour (var i = 0; i


J'ajouterai une balise "id" dans le champ de saisie comme . Si vous essayez "document.getelementByID (\" data0 \ "). Valeur" dans la méthode webview.valuatjavaScript, alors il retournera la valeur du champ d'entrée. Mais si vous utilisez document.getelementsByname (\ "form1 \"), il réveille les données NIL.


J'ai déjà utilisé document.getElementyID (\ "data0 \"). Valeur, mais il renvoie une valeur unique. Mais j'ai besoin de valeurs de forme entières. Une solution pour cela?



1
votes

J'ai utilisé le code suivant pour obtenir toutes les valeurs de formulaire. Cela a fonctionné parfaitement. xxx


0 commentaires