稍后要引用的唯一元素ID

时间:2010-03-24 09:00:15

标签: javascript

我正在尝试找出一种方法,用于存储特定页面上每个标记的唯一引用。我将无法编辑页面内容,并且我将生成的UID保持在每次刷新页面时保持不变。

由于浏览器不为元素生成任何类型的UID,我认为执行此操作的唯一方法是执行一个脚本,该脚本遍历DOM并为其遇到的每个创建UID。我不知道这有多准确,特别是考虑到每次脚本抓取页面时我都需要确保它为标记创建相同的UID。

有人能想到任何其他更准确的页面映射方式吗?

非常感谢。

2 个答案:

答案 0 :(得分:2)

我需要完全相同的功能。我的想法是查看标签的位置,相对于像BODY Tag这样的固定元素,并使用类似XPATH的表达式作为唯一ID。例如,如果有像

这样的HTML
<BODY><TABLE><TD>

......等,TD的唯一ID可以是/Body/Table/1...等等。但是这假设下次页面呈现时,之前不会有更多节点。稍微改进可以是在生成时在路径中使用“ID”标记,而不是在不使用的情况下使用它们。例如,假设页面为:

<BODY>
<DIV id="test">
<TABLE id="testtable">
<TR><TD></TD></TR>
.....

TD标签的唯一ID可以是/ Body / Div @ test / Table @ testtable / TD @ 0等。

答案 1 :(得分:2)

如果页面的内容在刷新之间保持不变,那么显而易见的方法是在DOM中元素的位置上生成UID。它甚至不需要是XPath表达式;一个简单的整数就可以了。但是,如果内容可以在刷新之间更改,则任务变得更加困难(如果不是不可能的话)。