Да, вы могли бы сделать это. Но с несколькими оговорками. Чтобы гарантировать, что селекторы уникальны, вам нужно будет использовать :nth-child()
, который не поддерживается повсеместно. Если вы хотите поместить эти CSS-селектора в файлы CSS, это не будет работать во всех браузерах.
Я хотел бы сделать это с чем-то вроде этого:
function() {
if (this.id) {
return sendToServer('#' + this.id);
}
var parent = this.parentNode;
var selector = '>' + this.nodeName + ':nth-child(' + getChildNumber(this) ')';
while (!parent.id && parent.nodeName.toLowerCase() !== 'body') {
selector = '>' + this.nodeName + ':nth-child(' + getChildNumber(parent) + ')' + selector;
parent = parent.parentNode;
}
if (parent.nodeName === 'body') {
selector = 'body' + selector;
} else {
selector = '#' + parent.id + selector;
}
return sendToServer(selector);
}
Затем добавить, что в обработчик щелчка для каждого элемента, который вы хотите моделировать. Я оставлю вас реализовать getChildNumber()
.
Edit: Просто видел ваш комментарий про то, что третья сторона кода ... так что вы можете добавить event
аргумент, заменить все экземпляры this
с event.target
, а затем просто прикрепить функцию к window
«s событие щелчка, если это Полегче.
Можете ли вы предоставить HTML, вам необходимо выбрать элемент в? –
На самом деле, у меня нет «моего» html, потому что мой код javascript вставлен в некоторые 3-е партийные сайты, поэтому код html имеет какую-то произвольную структуру. – tsds
А как насчет вашего JS-кода? – Miquel