gpt4 book ai didi

javascript - 唯一的元素 ID,即使元素没有

转载 作者:IT王子 更新时间:2023-10-29 03:19:16 27 4
gpt4 key购买 nike

我正在编写一个 GreaseMonkey 脚本,我在其中迭代了一堆元素。对于每个元素,我都需要一个字符串 ID,以后可以使用它来引用该元素。该元素本身没有 id 属性,我无法修改原始文档来为它提供一个属性(尽管我可以在我的脚本中更改 DOM)。我无法将引用存储在我的脚本中,因为当我需要它们时,GreaseMonkey 脚本本身将超出范围。例如,是否有某种方法可以获取浏览器使用的“内部”ID?仅适用于 Firefox 的解决方案很好;一个可以应用于其他场景的跨浏览器解决方案会很棒。

编辑:

  • 如果 GreaseMonkey 脚本超出范围,您稍后如何引用元素? GreaseMonkey 脚本正在向 DOM 对象添加事件。我无法将引用存储在数组或其他类似机制中,因为当事件触发时,数组将消失,因为 GreaseMonkey 脚本将超出范围。因此,事件需要某种方式来了解附加事件时脚本所具有的元素引用。并且所讨论的元素不是它所附加的元素。

  • 不能只在元素上使用自定义属性吗? 是的,但问题出在查找上。我不得不求助于遍历所有元素,寻找将自定义属性设置为所需 ID 的元素。这当然可行,但在大型文档中,这可能非常耗时。我正在寻找浏览器可以执行查找繁琐工作的东西。

  • 等等,你能不能修改文档?我不能修改源文档,但我可以在脚本中更改 DOM。我会在问题中澄清。

  • 你能不使用闭包吗? 闭包确实有效,尽管我最初认为它们不会。看我后面的帖子。

这听起来像是对这个问题的回答:“是否有一些我可以使用的内部浏览器 ID?”是“否”。

最佳答案

答案是否定的,没有您可以访问的内部 ID。 Opera 和 IE(也许是 Safari?)支持 .sourceIndex (如果 DOM 改变了)但是 Firefox 没有这种东西。

您可以通过生成给定节点的 Xpath 或从 document.getElementsByTagName('*') 中查找节点的索引来模拟源索引。这将始终按源顺序返回元素。

当然,所有这些都需要一个完全静态的文件。对 DOM 的更改将破坏查找。

我不明白的是您如何可以松散对节点的引用而不是对(理论上的)内部 ID 的引用?关闭和分配要么有效,要么无效。还是我遗漏了什么?

关于javascript - 唯一的元素 ID,即使元素没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/226689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com