0

我正在使用运行良好的Java Scripting API。现在我有一个函数,我想<a>从字符串中获取所有标签,然后在返回操纵的字符串之前添加/删除属性。问题当然是,我不能只使用document.getElementsByTagName. 是否有任何简单的选项可以在不经过 regex-hell 的情况下出现在您的脑海中?

请注意,我目前在 Java 7(使用 Rhino)上运行,计划更新到 Java 8(使用 Nashorn),所以我不想使用任何 Rhino 特定的 API。

4

1 回答 1

1

在 Addi Osmani 的“Learning JavaScript Design Patterns”一书中,作者提到了类似问题的 3 个替代方案,显然 getElementById() 是最快的。

书中摘录:

想象一下,我们有一个脚本,对于在页面上找到的每个具有类“foo”的 DOM 元素,我们希望增加一个计数器。查询此元素集合的最有效方法是什么?好吧,有几种不同的方法可以解决这个问题:

  • 选择页面中的所有元素,然后存储对它们的引用。接下来,过滤此集合并使用正则表达式(或其他方式)仅存储具有“foo”类的那些。
  • 使用现代本机浏览器功能,例如querySelectorForAll()选择具有“foo”类的所有元素。
  • 使用网络特征,例如getElementsByClassName()类似地......

另一种方法是,由于您使用的是 Nashorn/Rhino,您可以使用 Xerces 库的 Java 实现来操作 DOM。

希望这可以帮助您找到解决方案。

于 2014-11-06T16:23:46.640 回答