Android WebView JavaScriptInterface

时间:2014-01-27 10:18:34

标签: android webview javascript-injection

我使用JavaScriptInterface进行Web视图,并尝试使用Tag'a'检索元素数量。但是,当我尝试谷歌页面时,我没有得到任何结果。伙计们帮助我。

我使用了以下代码段。

    webView.getSettings().setJavaScriptEnabled(true);
    webView.addJavascriptInterface(new WebViewJSObject(), "jsInjectedObject");
    webView.setWebViewClient(new WebViewClient(){
        @Override
        public void onPageFinished(WebView view, String url) {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);
            if(url.equalsIgnoreCase("http://www.google.com")){
            view.loadUrl("javascript:(function(){var b = document.getElementsByTagName('a');jsInjectedObject.printInfo(b.length);})()");
            }
        }
    });
    webView.loadUrl("http://www.google.com");


    class WebViewJSObject{

        @JavascriptInterface
        public void printInfo(String count){
            Log.e(TAG, "entered PrintInfo");
            Log.e(TAG, "A tags count :" + count);
        }
    }

2 个答案:

答案 0 :(得分:0)

    data = data.replace("%", "%25"); //Data here is the javascript or html data
    data = data.replace("\\", "%27");
    data = data.replace("?", "%3f");
    WebSettings browserSettings = webView.getSettings();
    browserSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    browserSettings.setJavaScriptEnabled(true);
    browserSettings.setSupportMultipleWindows(true);
    browserSettings.setBuiltInZoomControls(true);
    browserSettings.setSupportZoom(true); 

我希望这会有所帮助。另请参阅https://stackoverflow.com/a/19341180/2106338

答案 1 :(得分:0)

这可能会对你有所帮助......在创建时请执行

super.onCreate(savedInstanceState);
    super.init();

         JavaScriptInterface myJavaScriptInterface  = new  JavaScriptInterface(this,appView);         

        appView.addJavascriptInterface(myJavaScriptInterface, "keyword");

        super.loadUrl("file:///....../index.html", 1000);

和dn在创建

之后创建一个方法
public class JavaScriptInterface {
            private WebView mAppView;

             private DroidGap mGap;

                public JavaScriptInterface (DroidGap gap, WebView view)
                {
                    mAppView = view;
                    mGap = gap;
                }
 public void methodname(){
}
}

并通过使用上述关键字

调用html来执行methodname方法中的功能