无法使用javascript在android webview中设置文本

无法使用javascript在android webview中设置文本,javascript,android,webview,Javascript,Android,Webview,我有一个具有以下设置的webview: mView.getSettings().setLoadWithOverviewMode(true); mView.getSettings().setUseWideViewPort(false); mView.getSettings().setJavaScriptEnabled(true); mView.getSettings().setAllowContentAccess(true); mView.getSettings().setDomStorageEn

我有一个具有以下设置的webview:

mView.getSettings().setLoadWithOverviewMode(true);
mView.getSettings().setUseWideViewPort(false);
mView.getSettings().setJavaScriptEnabled(true);
mView.getSettings().setAllowContentAccess(true);
mView.getSettings().setDomStorageEnabled(true);
加载网页后,当我尝试执行Javascript时:

mView.loadUrl("javascript:document.querySelector('input[type=password]').value ='" + password + "'");
打开一个新选项卡或窗口,而不是设置密码字段的值

document.querySelector('input[type=password]”)的输出(从控制台):

我尝试从控制台执行相同的javascript。它起作用了

我还配置了webviewclient:

mView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                Log.d(TAG, " shouldOverrideUrlLoading :" + url);
                view.loadUrl(url);
                return true;
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                Log.d(TAG, "onPageStarted " + url);
            }

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

            public void onReceivedError(WebView view, int errorCode,
                                        String description, String failingUrl) {
                Log.e(TAG, "Error: " + description);
            }
        });

loadUrl
方法,在WebView中加载提供的URL。您需要做的是执行
evaluateJavascript
方法

webView.evaluateJavascript("document.querySelector('input[type=password]').value ='" + password + "'", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        /// This callback is called after a result is returned by the script.
    }
});
webView.evaluateJavascript(“document.querySelector('input[type=password]”)值=“+password+””,新值回调(){
@凌驾
公共无效onReceiveValue(字符串值){
///此回调在脚本返回结果后调用。
}
});

加载URL
方法,在WebView中加载提供的URL。您需要做的是执行
evaluateJavascript
方法

webView.evaluateJavascript("document.querySelector('input[type=password]').value ='" + password + "'", new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        /// This callback is called after a result is returned by the script.
    }
});
webView.evaluateJavascript(“document.querySelector('input[type=password]”)值=“+password+””,新值回调(){
@凌驾
公共无效onReceiveValue(字符串值){
///此回调在脚本返回结果后调用。
}
});
从Android Kitkat(4.4,API级别19)开始,您可以使用

从Android Kitkat(4.4,API级别19)开始,您可以使用


您忘记了CSS选择器上的引号

应该是:

document.querySelector('input[type="password"]');

请参见

您忘记了CSS选择器上的引号

应该是:

document.querySelector('input[type="password"]');