JS DOM:通过文本内容获取元素

新手上路,请多包涵

我正在寻找一种使用 JS 在 DOM 树上执行全文搜索的方法。简而言之,我想检索包含给定字符串的文本节点列表。

我试过 mootools’ Element.getElements ( ':contains[string]' ) 但我无法让它处理包含空格的字符串。

编辑:jQuery 和 mootools 似乎有他们的 :contains 运算符通过树遍历工作。这意味着没有用于搜索页面的本机方法,这是正确的吗?如果页面很大并且您拥有的有关元素的唯一信息是正在搜索的字符串,则效率似乎很低。我错了吗?

我正在考虑为所有文本节点编制索引并检查要搜索的每个字符串的索引,但是,在我的项目中,无法判断 DOM 何时更新以保持此类索引为最新。

有更好的主意吗?

原文由 Hristo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 686
2 个回答

如果你有一个现代浏览器,你总是可以使用 XPATH,因为它有基于内容的搜索。

这是一个例子:

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

对于较旧的浏览器,您可以使用类似 http://llamalab.com/js/xpath/ 的东西填充 XPATH

原文由 blerik 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题