Android Webview-页面加载完成后使用Java脚本更改元素

问题描述 投票:0回答:1

我想使用Webview中的Javascript更改HTML页面上的某些值。页面加载完成后,我尝试了多种评估Javscript的方法。

这是我的代码:

    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setDomStorageEnabled(true);
    webview.getSettings().setBlockNetworkImage(false);

    webview.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }


        public void onPageFinished(WebView view, String url) {

            webview.loadUrl("javascript:(function() { document.getElementById('options').value = '" + found.getId() + "'; ;})()");
            button.performClick();

        }
    });

我认为这意味着,在页面完全加载之前,该方法要尽早调用。你有什么想法吗?

javascript android dom webview
1个回答
0
投票

为了使用javascript也称为DOM Manipulate来更改HTML中的值/内容/样式,那么在DOM准备就绪或完全加载后,我们要等待。在这种情况下,我们将页面加载到小部件WebView中,然后开展业务。

我有在相同情况下总是使用的示例代码,

...

    final String url = "http://example.com";
    final WebView webview = findViewById(R.id.my_webview);
    final String myNewValue = "it works!";

    webview.getSettings().setJavaScriptEnabled(true);
    webview.setWebChromeClient(new WebChromeClient());
    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url) {
            // Your custom javascript here
            String myCustomJS = "document.getElementById('options').innerHTML = '" +
                     myNewValue + "'";

            // here we execute the javascript code
            webview.loadUrl("javascript:(function(){" + myCustomJS + "})()");
        }
    });

    // and here we load the url
    webview.loadUrl(url);

...

我希望上面的代码可以帮助您继续工作。

© www.soinside.com 2019 - 2024. All rights reserved.