6
votes

Pré-remplir les champs de texte webview

J'ai besoin de pré-remplir les champs de texte dans un uiwebview code> et je suis donné pour comprendre que JavaScript code> est le meilleur moyen d'y aller. Malheureusement, je ne connais rien de JavaScript Code> et je craignez depuis quelques heures, n'aurez nulle part.

dernière tentative bâclée: p> xxx pre>

peut Toute personne me dirige dans la bonne direction? p>

-edit - p>

J'ai également essayé de retarder l'appel au cas où la page n'avait pas complètement chargé et si j'appelle quelque chose comme: P >

<html>
  <head> … </head>
    <body onload="FinishLoad(1);hideJSWarn();">
      <div id="noJSWarn" class="cssSecurityWarning" style="display: none;"> … </div>
      <table id="table_LoginPage_1" > … </table>
      <table id="table_LoginPage_2" > … </table>
      <blockquote>
        <form id="frmLogin_4" onsubmit="return Login(1)" autocomplete="off" method="POST" action="login.cgi" name="frmLogin">
          <input id="tz_offset_5" type="hidden" name="tz_offset"></input>
          <table id="table_LoginPage_3" >
            <tbody>
              <tr> … 
                <td valign="top">
                  <table id="table_LoginPage_6" >
                    <tbody>
                      <tr>
                        <td> … </td>
                        <td> 
                          <input id="username_5" type="text" size="20" name="username"></input>


3 commentaires

Je ne sais pas si cela vous aidera, mais ne manquez pas ; après le 'testpw' ?


Je viens de tester votre code (avec le ; J'ai suggéré dans le commentaire précédent) et votre code JS fonctionne bien pour moi. Alors peut-être vérifier votre code HTML si c'est ok


Toujours ne fonctionne pas alors peut bien être le HTML.


3 Réponses :


5
votes

Vous devez mettre le code JavaScript à l'intérieur d'une nstring, puis exécuter avec StringByevaluatingJavascriptFromstringFromstring code>. C'est ainsi que le code ressemblerait à:

 [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('email').value = '%@'", email]];
 [self.webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('pass').value = '%@'", password]];


6 commentaires

Merci. Je vais essayer ça un essai.


Np. Faites-moi savoir si cela vous a aidé.


Toujours pas de joie. Un collègue a réussi à précharger les champs via c # c # javascript ne fonctionne pas depuis objectif-c .


Ceci à coup sûr, j'ai copié d'un projet de mien. Le problème doit être ailleurs. Vérifiez si vous passez le bon «ID» correct dans la fonction JavaScript, vérifiez si votre webview est correctement, si son délégué est défini, etc.


J'ai édité l'OP pour montrer d'autres tests. Afaict Le délégué est défini correctement, les ID d'élément sont corrects et HTML est entièrement chargé avant d'appeler le JS .


@Lucaseduardo Veuillez regarder cette Stackoverflow.com/Questtions/37644551/... . Cela a besoin de votre aide.



5
votes

J'avais obtenu les identifiants d'élément en les mettant en surbrillance dans Firefox et en sélectionnant Inspecter élément code>. Il s'avère que cela donne différents identifiants à ceux qui sont retournés avec: xxx pré>

brancher ces identifiants (qui varient apparemment dépendant de ce qui a été utilisé pour naviguer vers la page) dans: P>

[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('username').value = '%@';", user]];
[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('password').value = '%@';", pw]];
[self.emailWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"document.getElementById('input_LoginPage-ipad_1').click();"]];


1 commentaires

Veuillez consulter ce Stackoverflow.com/questions/376444551/... . Cela a besoin de votre aide.



1
votes

Utilisez ce code, cela fonctionnera

view.loadUrl("javascript:(function() { "
    + " document.getElementById('login').value = '" + emailAdress+ "';"
    + " document.getElementById('login').readOnly='true'"
    + "})();");


0 commentaires