我有一個頁面在兩個瀏覽器窗口中打開,並且正在通過套接字傳達用戶交互。如果有人點擊某個元素,我希望它在另一個瀏覽器中發生。爲此,我需要知道與之交互的元素。識別跨瀏覽器的元素
我有幾個選擇,但沒有一個是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