在webview中使用Javascript

Joa*_*ert 4 javascript android login webview

因此,阅读我读到我可以"注入"javascript到一个加载的网页以编程方式填写网站的表单,所以我尝试了以下:

    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    WebView WebView;
    WebView = (WebView) findViewById(R.id.webview);
    WebView.setWebViewClient(new HelloWebViewClient());
    WebView.getSettings().setJavaScriptEnabled(true);
    WebView.getSettings().setBlockNetworkImage(false);
    WebView.loadUrl("http://www.kingsage.es");
    String username = "XXX";
    String Password = "YYY";
    WebView.loadUrl("javascript:document.getElementById('login_player').value='"+username+"';javascript:document.getElementById('login_passwd').value = '"+Password+"';");
}
Run Code Online (Sandbox Code Playgroud)

但是,当我在模拟器上运行它时,我得到一个错误,好像无法找到该网站.如果我关闭第二个loadUrl方法我加载网站,但我需要以编程方式填写登录表单!,我想我做错了但我没有找到并回答阅读.任何帮助,将不胜感激!!

Jea*_*Luc 6

你需要等到网页加载(使用WebViewClient)然后执行你的javascript

webView.setWebViewClient(new WebViewClient(){
   @Override
   public void onPageFinished (WebView webView, String url)
   {
         webView.loadUrl("javascript:document.getElementById('login_player').value='"+username+"';javascript:document.getElementById('login_passwd').value = '"+Password+"';");
   }
});
Run Code Online (Sandbox Code Playgroud)

确保您只执行一次,而不是每次onPageFinished事件