如何将HTML属性插入到Android WebView中加载页面的元素中?

时间:2018-04-02 12:55:11

标签: android

我正在尝试将某个属性插入到页面上的<i>元素中,该元素在Android WebView中加载。

应该如何运作?

例如,我在我的WebView中加载了m.facebook.com。现在我想为每个<i>标记添加一个属性src =“mydata”。因此,在结果中我将拥有相同的页面,但每个<i>元素现在将包含src =“mydata”(<i src="mydata"></i>)。

我该怎么办?它甚至可能吗?

1 个答案:

答案 0 :(得分:1)

您想要的JavaScript代码示例如下:

var i_tag = document.getElementsByTagName('i');
for (var i = 0; i < i_tag.length; i++) {
    i_tag[i].setAttribute('src', 'mydata');
}

因此,您需要做的是在通过loadUrl()

加载网页时调用JavaScript函数
final WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(webView, url);
        webView.loadUrl("javascript:(function(){" +
                "var i_tag = document.getElementsByTagName('i');" +
                "for (var i = 0; i < i_tag.length; i++) {i_tag[i].setAttribute('src', 'mydata');}" +
                "})();");
    }

    @Override
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {

    }
});

webView.loadUrl("https://m.facebook.com/");