【问题标题】:Android webview javascript Interface not working properlyAndroid webview javascript界面​​无法正常工作
【发布时间】:2016-11-10 06:44:02
【问题描述】:

真的不知道为什么这不起作用。基本上,我正在尝试这样做。

 public void testJS() {
        final WebView webView = (WebView) findViewById(web);
//        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.addJavascriptInterface(new JSInterface(webView), "sample");
        webView.setWebChromeClient(new WebChromeClient() {
            @Override
            public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
        /* Do whatever you need here */
                Log.e("chrome", "asdf");
                return super.onJsAlert(view, url, message, result);
            }


        });
        webView.loadUrl("javascript:window.sample.doEchoTest();void(0);");
    }

这是 JSInterface

   public class JSInterface {
        WebView mAppView;

        public JSInterface(WebView appView) {
            this.mAppView = appView;
        }

        public void doEchoTest() {
            Log.e("sample", "test details");
            Toast toast = Toast.makeText(mAppView.getContext(), "sample test details", Toast.LENGTH_SHORT);
            toast.show();
        }
    }

javascript 代码永远不会运行。

alert 等基本功能的工作原理:

webView.loadUrl("javascript:alert('sample')");

为什么是webView.loadUrl("javascript:window.sample.doEchoTest();void(0);"); 不工作?

【问题讨论】:

    标签: android android-jsinterface


    【解决方案1】:

    只是浏览不同的答案,对此的猜测是您尚未将其公开为可从 JS 访问。您需要为每个方法明确地这样做:

    @JavascriptInterface
    public void doEchoTest() {
                Log.e("sample", "test details");
                Toast toast = Toast.makeText(mAppView.getContext(), "sample test details", Toast.LENGTH_SHORT);
                toast.show();
            }
    

    【讨论】:

    • 欢迎来到 Stack Overflow!请随时使用该站点的tour,如果您需要该站点的其他帮助,请查看this。哦,如果您遇到帮助页面未涵盖的问题,请随时通过meta 提问。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2018-07-02
    相关资源
    最近更新 更多