Скажем, вы идете в какое-то место и выбираете какой-то текст:
![enter image description here](https://i.stack.imgur.com/8PGvD.png)
Когда вы смотрите на DOM, он где-то здесь:
![enter image description here](https://i.stack.imgur.com/rL0Og.png)
Но на самом деле это такой текст: "Local embassy – For Wikipedia"
, отладчик не совсем правильно понял.
Что мне интересно, так это как найти набор селекторов, которые наиболее точно соответствуют выделенному тексту. Таким образом, с точки зрения выделения, вы получите это:
<b><a href="/wiki/Wikipedia:Local_Embassy" title="Wikipedia:Local Embassy">Local embassy</a></b> – For Wikipedia
Каким-то образом это должно идти из этой простой функции выделения текста:
function getSelectionText() {
var text = ''
if (window.getSelection) {
text = window.getSelection().toString()
} else if (document.selection && document.selection.type != 'Control') {
text = document.selection.createRange().text
}
return text
}
(что разрешает к этому):
![enter image description here](https://i.stack.imgur.com/OTU9E.png)
... Для функции, которая вместо этого возвращает набор селекторов, которые соответствуют тексту, что-то вроде:
parent == '#mp-other-content li'
selectors relative to parent ==
[
'b',
'#text'
]
Хотите знать, как правильно это сделать. Не интересно, как заставить отладчик выделять текст, как получить выделенный текст и вернуть селекторы, наиболее близко соответствующие ему.