2

xpath式とjavascriptを使用して、このページhttp://www.money.pl/pieniadze/のテーブルからいくつかの行を抽出しようとしています。ページ全体をポップアップとして表示できますが、document.evaluate(); で xpath 式を評価できません。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>
4

2 に答える 2

3

プレーン文字列では 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)
于 2012-02-25T18:41:11.663 に答える
2

document.querySelector("tr#tabr_eurpln")document.evaluate の代わりに試してください。これは、セレクターに対応する DOM 要素を返します。

于 2012-02-25T18:40:43.893 に答える