0

Android で利用可能なオープン ソース ブラウザー用の JavaScript を作成して、ブラウザーに読み込まれたページのbody タグ内のテキストを別のテキストに置き換えます。

これは、ページがブラウザーに読み込まれると、この JavaScript が実行され、置換が行われ、最終的に置換されたテキストを含むページがブラウザーに表示されるように処理する必要があります。

これは、コードの置換部分です。

var textnodes, node, i;
textnodes = document.evaluate("//body//text()[not(ancestor::script) and not(ancestor::style)]",document,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);
replace();
function replace() {
   for (i = 0; i < textnodes.snapshotLength; i++) {
      node = textnodes.snapshotItem(i);
      text = node.data;
      text = text.replace(/\'/g, "♥");
      //The rest of the replacements
      node.data = text;
   }
}

ただしdocument.evaluate、機能していないようです。このコードを修正したり、この本文テキストの置き換えタスクを他の方法で行うための提案を手伝ってくれる人はいますか?

ありがとう!

4

1 に答える 1

0

申し訳ありませんが、Android ブラウザーでは DOM Level 3 XPath を取得できません。

JavaScript XPath 実装 ( など) を使用できますが、特定の DOM トラバーサル コードを作成する場合に比べて、遅くてかさばるソリューションになります。

function replaceInTextNodes(parent, needle, replacement) {
    for (var child= parent.firstChild; child!==null; child= child.nextSibling) {
        if (child.nodeType===1) { # Node.ELEMENT_NODE
            var tag= child.tagName.toLowerCase();
            if (tag!=='script' && tag!=='style' && tag!=='textarea')
                replaceInTextNodes(child, needle, replacement);
        }
        else if (child.nodeType===3)
            child.data= child.data.replace(needle, replacement);
    }
}
replaceInTextNodes(document.body, /'/g, '\u2665');
于 2010-10-10T08:09:16.010 に答える