2016-12-27 109 views
0

我有一个代码在这里,我想从android的webview中检索一个元素,我似乎无法弄清楚什么是错的。这可能是一些愚蠢的错误,但我不明白为什么和错在哪里。谢谢。JavaScript不工作在WebView - Android

private void retrieveContentWebView(String address){ 

    Log.d("Web Download"," Inside "); 
    Log.d("Web Download ","address : " + address); 

    WebView webView; 

    webView = new WebView(context); 
    webView.loadUrl(address); 

    webView.getSettings().setJavaScriptEnabled(true); 
    webView.addJavascriptInterface(this, "myjava"); 


    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) 
     webView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); 

    webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); 
    webView.getSettings().setDomStorageEnabled(true); 

    webView.setWebViewClient(new WebViewClient() { 

     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
      super.onPageStarted(view, url, favicon); 
      Log.d("Web Download"," Inside Page Started"); 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      super.onPageFinished(view, url); 

      Log.d("Web Download"," Inside Page Finished"); 

       view.loadUrl("javascript: {" + 
         "var titleTexts = document.getElementsByTagName('title')[0]" + 
         "myjava.onData(titleTexts.text);}"); 

     } 
    }); 

} 

//This method will be registered as a JavaScript interface 
@JavascriptInterface 
@SuppressWarnings("unused") 
public void onData(final String value){ 

    Log.d("Web Download"," Inside Handler"); 

    final String getValue = value; 

    final Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      // Do something after 5s = 5000ms 
      Log.d("Web Download HTML :",getValue); 
     } 
    }, 5000); 


} 
+0

getElementsByTagName('title')[0]'后面应该有分号吗?否则,将直接进入以'myjava'开头的下一行。 – Bobulous

回答

1

尝试添加以下内容到WebView

webView.setWebChromeClient(new MyCustomChromeClient(this)); 

为自己创建的MyCustomChromeClient。