1
7
答案是“否”,没有您可以访问的内部ID。歌剧和IE(也许是狩猎?)支持
可以通过生成给定节点的xpath或从中查找节点的索引来模拟源索引。
当然,所有这些都需要一个完全静态的文件。对dom的更改将中断查找。 我不明白的是,您如何可以释放对节点的引用,而不是(理论上)内部ID的引用?关闭和分配工作或者它们不工作,或者我遗漏了什么? |
2
6
关闭是一条路。这样,您就可以精确地引用元素,这些元素甚至可以经受住一些DOM的洗牌。 例如,对于不知道闭包的用户:
如果
您必须将它存储在一个cookie中,然后我建议您为它计算xpath(例如,遍历dom,计算以前的兄弟姐妹,直到找到具有id的元素,您将得到类似的结果
XPointer 是W3C解决这个问题的方法。 |
3
6
对问题的措辞有点困惑——你说你“需要一个字符串ID,稍后你可以使用它来引用该元素”,但是你“不能将引用存储在你的脚本中,因为当你需要它们的时候,GreaseMonkey脚本本身就会超出范围。” 如果脚本已经超出了范围,那么以后如何引用它们?! 我会忽略一个事实,那就是我对你的所作所为感到困惑,并告诉你我经常写油腻猴的剧本,而且 可以 修改我访问的dom元素,给它们一个id属性。这是可用于获取临时使用的伪唯一值的代码:
这对我很有用,我只是用一个油脂猴子的脚本来测试它。 更新: 闭包是一种方式-就个人而言,作为一个核心的javascript开发人员,我不知道你 没有 立刻想想这些。:)
现在,
也许,如果你发布了一个你想做的事情的例子,那么帮助你会更容易,假设这不是。 |
4
5
更新: 关闭确实是答案。所以,在对它进行了更多的处理之后,我发现了闭包最初有问题的原因以及如何修复它。闭包的棘手之处在于,在遍历元素时必须小心,不要以引用同一元素的所有闭包结束。例如,这不起作用:
但是这样做:
无论如何,我决定不选择一个答案,因为这个问题有两个答案:1)不,没有内部ID可以使用;2)您应该为此使用闭包。所以我简单地否决了第一个说是否有内部ID或者谁建议生成ID的人,以及任何提到闭包的人。谢谢你的帮助! |
5
4
如果你 可以 写信给DOM(我相信你可以)。我会这样解决这个问题: 返回函数或生成ID:
根据需要使用此项获取ID:
这样,当服务器将HTML交付给您时,您不必担心它是什么样子的。 |
6
3
如果不修改DOM,可以按索引顺序获取它们: ( Prototype 实例)
您可以循环访问所有节点,并为它们提供一个唯一的类名,稍后您可以轻松地选择。 |
7
2
可以将id属性设置为计算值。原型库中有一个函数可以为您实现这一点。 http://www.prototypejs.org/api/element/identify 我最喜欢的javascript库是jquery。不幸的是,jquery没有类似identify的函数。但是,您仍然可以将id属性设置为自己生成的值。 http://docs.jquery.com/Attributes/attr#keyfn 以下是jquery文档中根据页面中的位置为div设置ID的部分代码段:
|
8
1
还可以使用pguid(页唯一标识符)生成唯一标识符:
|
9
1
使用元素的鼠标和/或位置属性生成唯一的ID。 |
10
1
可以使用以下函数为DOM中的任何给定节点生成稳定的唯一标识符:
这将创建标识符,例如
您还可以进行一些优化和更改,例如:
|
11
0
在JavaScript中,可以将自定义ID字段附加到节点
这是一个有点黑客,但它会给每个节点一个你可以使用的ID。当然,
|
12
0
我想我刚刚解决了一个类似的问题。但是,我在浏览器DOM环境中使用jquery。 var obja=$(“selector to some dom element”); var objb=$(“其他DOM元素的选择器”); 如果(obja[0]==objb[0])。{ 很好!这两个对象指向完全相同的DOM节点 } |
13
0
好的,没有与dom元素自动关联的ID。 dom具有元素的层次结构,元素是主要信息。 从这个角度来看,你可以 将数据与DOM元素关联 使用jquery或jqlite。当必须将自定义数据绑定到元素时,它可以解决一些问题。 |
Softly · 单选按钮未按预期取值 1 年前 |
SlickRed · 我无法使用JS关注HTML元素 1 年前 |
assembler · Nextjs没有处理发布请求 1 年前 |
BADRUM · 执行两个获取功能后,如何导航回页面? 1 年前 |
Toniq · javascript为php保存多维数组 1 年前 |