2014-12-17 1 views
5

Ich weiß, es eine Menge Fragen darüber existiert, aber ich verstehe nicht, warum meine folgenden Code nicht mehrJavascript Injektion in webview

Hier funktioniert mein Code:

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 + "';" + 
    } 
} 

Meine ursprüngliche webview ist übergangen und es zeigt nur myValue in der Seite anstelle von vielen Informationen.

Wenn jemand weiß, warum ich dieses Verhalten ...

Thx


EDIT:

und der Teil der html

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

Mai dieses ich Ihre Frage nicht beantworten, aber Sie eine Art Schleife erstellen, da Sie loadURL innerhalb von 'onPageFinished' nennen und 'loadUrl' – TheRedFox

+0

Obiger Kommentar klingt echt. kannst du deine html-datei posten, damit wir sie an unserem ende testen können? – Darpan

+0

In der Tat ist es eine Zahlung Webview von Atos, so dass ich nicht sicher bin, dass ich html – mrroboaat

Antwort

9

Schließlich, ich habe gefunden die Antwort:

Ich habe wie diese void(0); am Ende JavaScript Anweisung hinzuzufügen: denken sein

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

hinzugefügt wurde Dies war darüber hinaus hilfreich! Ich danke dir sehr. Wie hast du herausgefunden, dass du void (0) brauchst? am Ende davon? –

+0

Das war eine große Hilfe. Ich habe auch das gleiche Problem. Mit Browserupdate funktioniert mein Code nicht mehr. Das hat es gelöst! –