Оценка выражения xpath в Chrome - PullRequest
2 голосов
/ 25 февраля 2012

Я пытаюсь извлечь несколько строк из таблицы с этой страницы http://www.money.pl/pieniadze/, используя выражение xpath и javascript.Я могу получить всю страницу, отображаемую как всплывающее окно, но я не могу оценить выражение xpath с помощью document.evaluate ();Попытался поиграть с XPathResultType, но безрезультатно.Кто-нибудь может помочь?

Вот моя фоновая страница:

<html><head><script>
...
var wholePage;
setInterval(fetch, 20000);


    function fetch()
    {
        req = new XMLHttpRequest();
        var url = "http://www.money.pl/pieniadze/";
        req.open("GET", url);
        req.onload = process;
        req.send();
    }   

    function process()
    {
        wholePage = req.responseText;
    }
</script></head></html>

, а вот всплывающая страница:

<html><head><script>
...
    onload = setTimeout(extract, 0); 

        function extract()  
        {
            chrome.browserAction.setBadgeText({text: ''});
            var bg = chrome.extension.getBackgroundPage();
            var EurPlnPath = "//tr[@id='tabr_eurpln']";
            var tempDiv = document.getElementById('current');
            tempDiv.innerHTML = bg.wholePage;
            var oneTopic = document.evaluate( EurPlnPath, bg.wholePage, null, XPathResult.ANY_TYPE, null)
            var res = oneTopic.iterateNext();
        }

</script></head>
<body>
<div id="current">
</div>
</body>
</html>

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

Вы не можете использовать XPath для простых строк.Вы должны сначала преобразовать строку в документ.Например, используя DOMParser.Текущие браузеры пока не поддерживают text/html.Чтобы это сработало, вы должны включить код, указанный в этом ответе :

var bgWholePage = new DOMParser().parseFromString(bg.wholePage, 'text/html');
document.evaluate( EurPlnPath, bgWholePage, ...

Если вы хотите проанализировать документ на фоновой странице, используйте bg.document.evaluateиз document.evaluate:

var oneTopic = bg.document.evaluate( EurPlnPath, bg.wholePage, null, XPathResult.ANY_TYPE, null)
2 голосов
/ 25 февраля 2012

Попробуйте document.querySelector("tr#tabr_eurpln") вместо document.evaluate, это вернет элемент DOM, соответствующий селектору.

...