2016-03-11 33 views
0

使用Android Studio我試圖在不是我的網頁的登錄表單中設置文本框的值。在WebView中使用js注入設置TextBox值

這是我使用的網頁上工作的web視圖:

final WebView webView = (WebView) findViewById(R.id.webView); 
    webView.getSettings().setJavaScriptEnabled(true); 
    webView.setWebChromeClient(new WebChromeClient()); 
    webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 
    webView.setWebViewClient(new WebViewClient() 
    { 
     @Override 
     public void onPageFinished(WebView view, String url) 
     { 
      webView.loadUrl("javascript: document.getElementById('j_password').value = 'something'"); 
     } 
    }); 
    webView.loadUrl("http://sg18224.scuolanext.info/"); 

的問題是,當頁面已完成,而不是設置文本框的值加載,整個頁面變成白色,它只顯示字符串我試圖設置爲價值(在這種情況下「東西」)。 如果我有這樣的警報的JS行:

webView.loadUrl("javascript: alert(document.getElementById('j_password').value = 'something')"); 

它的作品!但也顯示我不想顯示的警報。

回答

0

這會幫助你:

final String js = "javascript:document.getElementById('j_password').value='something';"; 
webView.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onPageFinished(WebView view, String url) { 
     if (Build.VERSION.SDK_INT >= 19) { 
      view.evaluateJavascript(js, new ValueCallback<String>() { 
       @Override 
       public void onReceiveValue(String s) { } 
      }); 
     } else { 
      view.loadUrl(js); 
     } 
    } 
}); 
+0

它的工作原理!謝謝! – Luca1092

0

我不確定這個答案,但你可以試試。通常它應該是答案。很長一段時間沒有與JavaScript交互。

,你可以嘗試

webView.loadUrl("javascript: document.getElementById('j_password').innerHTML = 'something'"); 

請評論,如果它不能正常工作。

+0

它不工作,因爲在HTML文本框就像 '<輸入名稱= 「爲j_password」 ID = 「爲j_password」 TYPE = 「密碼」 類= 「輸入密碼」 value =「密碼」>' 並且沒有內部HTML – Luca1092