2014-12-17 7 views
5

so che esiste un sacco di domande su questo, ma non capisco il motivo per cui il mio codice seguente non funziona piùJavascript iniezione in WebView

Ecco il mio codice:

private void init() { 
    webview.setWebViewClient(new FormWebViewClient()); 
    webview.postUrl(url, EncodingUtils.getBytes(data, "BASE64")); 
} 

private class FormWebViewClient extends WebViewClient { 
     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      // progressBar.setVisibility(View.VISIBLE); 
     } 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      LOGD(TAG, "Url : " + url); 
      view.loadUrl(url); 
      return true; 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      view.loadUrl("javascript:" +"document.getElementsByClassName('my_class_name')[0].value = '" + myValue + "';" + 
    } 
} 

mio WebView originale è sovrascritto e visualizza solo myValue nella pagina invece di molte informazioni.

se qualcuno sa il motivo per cui ho questo comportamento ...

Thx


EDIT:

e la parte di HTML

<input type="text" size="20" maxlength="19" autocomplete="off" name="CARD_NUMBER" id="CARD_NUMBER" class="my_class_name" value=""> 
+3

Può essere questo non risponde alla tua domanda, ma penso che si sta creando una sorta di ciclo dal momento che si chiama loadURL all'interno di 'onPageFinished' e 'loadUrl' – TheRedFox

+0

Il commento sopra sembra legittimo. puoi pubblicare il tuo file html in modo che possiamo testarlo alla nostra estremità? – Darpan

+0

In effetti, è una visualizzazione web di pagamento da Atos quindi non sono sicuro di poter pubblicare html – mrroboaat

risposta

9

Infine, ho trovata la risposta:

devo aggiungere void(0); alla fine di istruzioni JavaScript in questo modo:

view.loadUrl("javascript:" +"document.getElementsByClassName('my_class_name')[0].value = '" + myValue + "';void(0);") 
+0

Questo era oltre utile! Grazie mille. Come hai capito che hai bisogno di vuoto (0); alla fine di esso? –

+0

Questo è stato di grande aiuto. Ho anche avuto lo stesso problema. Con l'aggiornamento del browser, il mio codice ha smesso di funzionare. Questo l'ha risolto! –