我有一个页面在两个浏览器窗口中打开,并且正在通过套接字传达用户交互。如果有人点击某个元素,我希望它在另一个浏览器中发生。为此,我需要知道与之交互的元素。识别跨浏览器的元素
我有几个选择,但没有一个是100%保证工作。
- 按元素名称:可以有多个具有相同名称的元素。
- 由ID:不是所有的元素由类有一个id
- :不是所有的元素有一个类和类不是唯一
- 的位置:如果网站是在两个不同的浏览器中打开的位置可以是不同的。
那么,有没有一种其他的方式来确定的100%确凿的元素呢?
我有一个页面在两个浏览器窗口中打开,并且正在通过套接字传达用户交互。如果有人点击某个元素,我希望它在另一个浏览器中发生。为此,我需要知道与之交互的元素。识别跨浏览器的元素
我有几个选择,但没有一个是100%保证工作。
那么,有没有一种其他的方式来确定的100%确凿的元素呢?
如果您在两个页面中都有完全相同的HTML,那么您可以直接在document.body中使用由父指标构建的“路径”。它很容易构建,易于使用来查找元素。
下面是函数来计算这条路径或是按照:
function indexInParent(node) {
var children = node.parentNode.childNodes;
for (var i=0; i<children.length; i++) {
if (children[i]==node) return i;
}
return -1;
}
function nodePath(e) {
var path = [];
while (e!=document.body) {
path.push(indexInParent(e));
e = e.parentNode;
}
return path.reverse().join('-');
}
function getNode(path) {
path = path.split('-');
var e = document.body;
while(path.length && e) e=e.childNodes[parseInt(path.shift())];
return e;
}
Demonstration:点击“与JS运行”,然后
你是如何做到这一点的? –
@Chris B这里是一个相关的问题:http://stackoverflow.com/questions/5728558/jquery-get-the-dom-path-of-the-clicked-a如果你搜索'按路径查找元素',你找到很多例子。 – Pickels
您是否具有完全相同的HTML第几页? –
为什么不给所有元素ID?! – hop
如果html文件是相同的(AND没有错误),并且浏览器渲染的文件不是在怪癖模式下,那么元素的xpath应该是相同的 – Eineki