如何使用WebView获取最近更新的HTML内容?

时间:2018-12-30 08:31:06

标签: java android html webview

我有一个问题,我知道如何在webview中获取HTML源代码,并且有很多方法可以获取它。但这就是我遇到的: 例如,我可以使用以下网址获取该网站的html来源:

web.loadUrl("javascript:window.HTMLOUT.processHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');")

但是它只是给我第一个源代码HTML,如果此网站更改了html的某些元素,或者内容将在几秒钟内更改,我将无法获得它。那么如何在webview中获取最新的html?我使用的是Button,我等待网站更改内容,然后单击Button获取HTML,但仍与第一个相同。谢谢

1 个答案:

答案 0 :(得分:1)

您正在使用javascript获取html代码, 那么我认为您可以仍然使用javascript 来检测html的更改。

您可以尝试使用MutationObserver javascript对象https://developer.mozilla.org/it/docs/Web/API/MutationObserver

// Select the node that will be observed for mutations
var targetNode = document.getElementById('some-id');

// Options for the observer (which mutations to observe)
var config = { attributes: true, childList: true, subtree: true };

// Callback function to execute when mutations are observed
var callback = function(mutationsList, observer) {
    for(var mutation of mutationsList) {
        if (mutation.type == 'childList') {
            console.log('A child node has been added or removed.');
            //RELOAD YOUR WEBVIEW HERE
        }
        else if (mutation.type == 'attributes') {
            console.log('The ' + mutation.attributeName + ' attribute was modified.');
            //RELOAD YOUR WEBVIEW AND HERE
        }
    }
};

// Create an observer instance linked to the callback function
var observer = new MutationObserver(callback);

// Start observing the target node for configured mutations
observer.observe(targetNode, config);