Вот что я пытаюсь сделать: у меня есть букмарклет, который ищет элементы на текущей странице (это может быть любой сайт) и отправляет событие click на те из них, которые соответствуют. У меня эта часть работает.
В некоторых случаях, однако, ничего не совпадает автоматически, и я хочу иметь возможность показать (при наведении на него), какой элемент должен быть активирован, а затем сохранить некоторую информацию о нем в localStorage
. В следующий раз, когда я использую букмарклет на этой странице, я хочу получить эту информацию, чтобы идентифицировать элемент в DOM, а затем отправить событие щелчка.
Вопрос в том, какую информацию я должен сохранить, чтобы иметь возможность ее идентифицировать? (в большинстве случаев, поскольку всегда можно создать случай, когда она не работает)
В лучшем случае, элемент-элемент будет иметь значение id
, и я готов. В некоторых других случаях это не так, и я хотел бы увидеть ваши предложения относительно того, какую информацию и какой метод я должен использовать, чтобы получить ее обратно.
Пока что моя идея - сохранить некоторые свойства элемента и пройти через DOM, чтобы найти элементы, которые соответствуют всему. Не все свойства будут работать (например, clientWidth
будет зависеть от размера браузера), и не все типы элементов будут иметь все свойства (например, узел div
не будет иметь значения src
), что означает, что с одной стороны, я не могу слепо сохранить все свойства, но с другой стороны, мне нужно либо выбрать ограниченный список свойств, которые будут работать для любых типов элементов (с риском потери полезной информации), либо иметь другие случаи для разных элементов (что звучит не супер).
Вещи, о которых я думал, я мог бы использовать:
id
конечно
className
, tagName
помогло бы, хотя className
в некоторых случаях может не совпадать
innerHTML
должно работать во многих случаях, если содержимое текста
src
должно работать в большинстве случаев, если содержимое является изображением
- иерархия предков (но это может запутаться)
- ...
Итак, мой вопрос немного «как бы вы поступили по этому поводу?», Не обязательно код.
Спасибо!