1

わかりました、この単純な HTML コードがあります

<html>
    <head>
        <script src="jquery.js"></script>
        <script src="script.js"></script>
        <title>Get all text</title>
    </head>
    <body>
        <span>This is Thomas</span>
        This is Bar
        <div id="content">
            This is Foo.
        </div>
        <span>This is Bufu</span>
    </body>
</html>

そして、変数内のすべてのテキストを取得したい。だから私はこのJavaScriptコードを作りました。ただし、「This is Foo」と「This is Bar」は表示されません。

var sep = '~';

$(function() {
    pageTexts = getTextFromPage();
    console.log(pageTexts);  
});

function getTextFromPage()
{
    var pageText = '';
    i = 0;
    j = 0;
    var itr = document.createTreeWalker(
        document.getElementsByTagName("body")[0],
        NodeFilter.SHOW_TEXT,
        null, // no filter
        false
    );

    while(itr.nextNode()) 
    {     
        if (itr.currentNode.textContent.search("\t") && itr.currentNode.textContent.search("\n") && itr.currentNode.parentNode.nodeName.toLowerCase() != 'script' && itr.currentNode.parentNode.nodeName.toLowerCase() != 'noscript')
        {            
            if (i == 0)
            {
               pageText = itr.currentNode.textContent;
                i++; 
            } 
            else 
            {
                pageText = pageText + sep + itr.currentNode.textContent;
                i++;
            }       
        }
        charNumber = pageText.length;    
        elemNumber = i;      
    }
    return pageText;  
}

現在の結果は「トーマスです~ブフです」です。そして、「これはトーマス~これはバー~これはフー~これはブフ」でお願いしたいです。何が間違っているのか、何をすべきなのか誰か教えてもらえますか? 私に役立つ答えがあれば感謝します。PS。これはクロム拡張用であり、非常に複雑なページであっても、任意の html ページからすべてのテキストを取得する必要があります。

4

1 に答える 1