我正在编写一个 GreaseMonkey 脚本,在其中迭代一堆元素。对于每个元素,我需要一个字符串 ID,以后可以使用它来引用该元素。元素本身没有id
属性,我无法修改原始文档以赋予它属性(尽管我可以在脚本中进行 DOM 更改)。我无法将引用存储在我的脚本中,因为当我需要它们时,GreaseMonkey 脚本本身就会超出范围。例如,有什么方法可以获取浏览器使用的“内部”ID?仅 Firefox 的解决方案很好;可以应用于其他场景的跨浏览器解决方案会很棒。
编辑:
如果 GreaseMonkey 脚本超出范围,您以后如何引用这些元素?他们的 GreaseMonkey 脚本正在向 DOM 对象添加事件。我无法将引用存储在数组或其他类似机制中,因为当事件触发时,数组将消失,因为 GreaseMonkey 脚本将超出范围。因此,事件需要某种方式来了解附加事件时脚本所具有的元素引用。并且有问题的元素不是它所附加的元素。
你不能只在元素上使用自定义属性吗?是的,但问题在于查找。我不得不求助于遍历所有元素,以寻找将自定义属性设置为所需 id 的元素。这当然可以,但在大型文档中可能非常耗时。我正在寻找浏览器可以进行查找工作的东西。
等等,你能不能修改文件?我无法修改源文档,但我可以在脚本中进行 DOM 更改。我会在问题中澄清。
你不能使用闭包吗?Closuses 确实有效,尽管我最初认为它们不会。看我后面的帖子。
这听起来像是对以下问题的回答:“我可以使用一些内部浏览器 ID 吗?” 没有。”