15

JSを使用してDOMツリーで全文検索を実行する方法を探しています。つまり、特定の文字列を含むテキストノードのリストを取得したいと思います。

mootoolsを試しましElement.getElements ( ':contains[string]' )たが、空白を含む文字列で動作させることができません。

編集:jQueryとmootoolsは、:containsオペレーターがツリートラバーサルを実行するように見えます。これは、ページを検索するためのネイティブな方法がないことを意味しますが、これは正しいですか?ページが巨大で、要素に関する唯一の情報が検索対象の文字列である場合、非常に非効率的なようです。私が間違っている?

すべてのテキストノードにインデックスを付け、検索対象の各文字列のインデックスをチェックすることを考えていますが、私のプロジェクトでは、そのようなインデックスを最新の状態に維持するためにDOMがいつ更新されるかを知る方法がありません。

より良いアイデアはありますか?

ありがとう

4

3 に答える 3

22

最新のブラウザを使用している場合は、コンテンツベースの検索機能を備えているため、いつでもXPATHを使用できます。

これは例です:

document.evaluate('//*[text()="' + string + '"]', document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE).snapshotItem(0);

また、古いブラウザーでは、http://llamalab.com/js/xpath/のようなものでXPATHをシムすることができます。

于 2012-03-04T21:19:19.643 に答える
4

jqueryの「contains」セレクターは問題を解決しますか?

http://api.jquery.com/contains-selector/

于 2010-05-02T01:41:32.043 に答える
1

一般的なDOM:DOMでテキストごとに要素を取得する場合

//*[text()='anytext']

また

//*[.='anytext']
于 2014-10-21T16:03:17.263 に答える