2011-10-12 7 views
6

HTMLページで特定の正規表現に一致するすべてのテキストフラグメント(つまり、'< span>First name: < /span>< br/>< b>John< /b>'が一致するようにタグを無視する必要があります)を見つけ出す必要があります。新しい要素で装飾し、カスタムCSSスタイルを適用する)、これらのフラグメントを見つけることができるこれらをスクロールして表示することができます。 機能は、Skypeブラウザプラグインがページ上で見つかった電話番号と何をしているのかと似ています。正規表現に一致する文字列を含むDOM要素を検索

+7

あなたは動作していないコードを持っていますか?これは "私にコードを渡す"の質問ですか?何を試しましたか? – CanSpice

+0

私はアプローチを見つける必要がある、私はコーディングを行うことができます。すでに解決されていてコードが利用可能な場合はさらに良い。 –

+0

jQueryは:contains()セレクタでこれを行うことができます。多分そのロジックは部分文字列検索の代わりにregexp検索を使うように再定義することができます。 –

答えて

-1

あなたはこれを試しましたか?

document.body.innerHTML.replace(/<\/?[^>]+>/g, '')

+1

これは、動的に追加されたすべてのリスナーを破壊するだけでなく、他のブラウザでは、内容が重要でないページに対して、要素、属性、プロパティをさまざまな方法で混乱させる可能性があります。 – RobG

+0

DOM内の検索結果がどこにあるかに関する情報を保持する必要があります。必要なものではなく、document.body.innerText.match()を実行できます。 –

2

あなたはどちらかの再帰的要素ののTextContent(適宜)またはのinnerTextプロパティを見てDOMを歩くことができ、またはあなたがgetElementsByTagNameのによって返されたコレクションをループを使用することができます。いずれにしても、テキストと親要素を特定したら、それを置き換える方法を検討する必要があります。

文字列が1つ以上の他の要素に分割されている場合、置き換えの文書構造の要件は何ですか?

+0

私は、ノード中心のアプローチと文字列中心のアプローチを使用すると移植性が向上すると主張します。それに、それはほとんどの人が問題を抱えているDOMの側面です:)。 –

+0

はい、OPは複数の要素に分割されていても文字列が必要なので、テキストノードを見るだけでは仕事はできません。分割された文字列をどのように扱うのか分かりませんが、少なくとも上記の方法では文字列全体を持つ最も近い祖先を見つけることができます。 – RobG

2

あなたはFirst name:が含まれてい<span>タグの後に来るJohnを含む<b>タグを取得するためにjQuery selectorsを使用して、インスタンスのスタイルを適用することができます:ここで

$("span:contains('First name:') ~ b:contains('John')").css('color','red'); 

が実行されている例である:http://jsfiddle.net/XzwNj/

+0

これは単なる例であり、特定のケースではありません –

関連する問題