Javascript注入webview

mrr*_*aat 5 javascript android webview android-webview

我知道它存在很多问题,但我不明白为什么我的下面的代码不再起作用了

这是我的代码:

private void init() {
    webview.setWebViewClient(new FormWebViewClient());
    webview.postUrl(url, EncodingUtils.getBytes(data, "BASE64"));
}

private class FormWebViewClient extends WebViewClient {
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            super.onPageStarted(view, url, favicon);
            // progressBar.setVisibility(View.VISIBLE);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            LOGD(TAG, "Url : " + url);
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            view.loadUrl("javascript:" +"document.getElementsByClassName('my_class_name')[0].value = '" + myValue + "';" +
    }
}
Run Code Online (Sandbox Code Playgroud)

我的原始webview被覆盖,它只显示myValue在页面中而不是大量的信息.

如果有人知道为什么我有这种行为......

谢谢


编辑:

和HTML的一部分

<input type="text" size="20" maxlength="19" autocomplete="off" name="CARD_NUMBER" id="CARD_NUMBER" class="my_class_name" value="">
Run Code Online (Sandbox Code Playgroud)

mrr*_*aat 10

最后,我找到了答案:

我必须void(0);在JavaScript指令的末尾添加如下:

view.loadUrl("javascript:" +"document.getElementsByClassName('my_class_name')[0].value = '" + myValue + "';void(0);")
Run Code Online (Sandbox Code Playgroud)