如何以浏览器无关的方式识别HTML元素(javascript)
我需要以浏览器无关的方式识别页面上的所有html元素。我所做的基本上是使用鼠标事件来记录页面上的点击。我需要记录单击了哪个元素。因此,我向document.body元素添加了一个鼠标按下侦听器。在鼠标按下时,我得到鼠标下的元素。假设它是一个div。然后我使用如何以浏览器无关的方式识别HTML元素(javascript),javascript,dom,Javascript,Dom,我需要以浏览器无关的方式识别页面上的所有html元素。我所做的基本上是使用鼠标事件来记录页面上的点击。我需要记录单击了哪个元素。因此,我向document.body元素添加了一个鼠标按下侦听器。在鼠标按下时,我得到鼠标下的元素。假设它是一个div。然后我使用文档中该div的索引。getElementsByTagName('*')nodelist和nodeName('div')来标识该div。示例元素id将是div45,这意味着它是一个div,并且是'*'nodelist中的第45个元素 这一切都
文档中该div的索引。getElementsByTagName('*')
nodelist和nodeName('div')来标识该div。示例元素id将是div45,这意味着它是一个div,并且是'*'nodelist中的第45个元素
这一切都很好,直到我使用IE,它给了我不同的索引。所以FireFox中的div45可能就是IE中的div47
有人有什么想法吗?我只需要页面上所有元素的id在任何浏览器中都相同,也许索引不够好,但我真的没有更多的想法
谢谢
GuidoIE错误地返回注释节点作为
getElementsByTagName('*')
的一部分。过滤掉这些元素(例如,只收集元素节点-node.nodeType==1
),您应该会得到一致的结果。类似于jQuery
的Javascript库被设计为不依赖于浏览器。请使用它们
搜索整个DOM树对我来说似乎不是一个好方法。您可能对@bgy感兴趣:xpath如何帮助我识别节点?nodelis仍然是同一个nodelist。我非常确定IE甚至不支持xpathUnfortunatelly,我不能在我的脚本中使用库(复杂的原因)。然而,我可以删除麻省理工学院许可项目(如jQuery)的识别代码。然而,我不认为jqueryids元素能做到这一点吗?我知道它在输入标记中添加了愚蠢的jqueryxxx属性,但这并不是我真正需要的。@gatapia,您想要一个用于标识元素的命名约定吗?还是对实际元素的引用?@gatapia:那是什么,你最后打算怎么做?一定有更好/更简单的方法来做。很棒的东西,它通过了我在所有浏览器中的所有测试!很高兴能有一个聪明的解释。