Я пишу скрипт GreaseMonkey, в котором я перебираю кучу элементов. Для каждого элемента мне нужен идентификатор строки, который я могу использовать для ссылки на этот элемент позже. Сам элемент не имеет атрибута id
, и я не могу изменить исходный документ, чтобы получить его (хотя я могу вносить изменения в DOM в моем скрипте). Я не могу сохранить ссылки в моем скрипте, потому что, когда они мне понадобятся, сам скрипт GreaseMonkey выйдет из области видимости. Есть ли способ, например, получить «внутренний» идентификатор, который использует браузер? Подходит только для Firefox; кросс-браузерное решение, которое может быть применено в других сценариях, было бы замечательно.
Edit:
Если сценарий GreaseMonkey находится вне области действия, как вы будете ссылаться на элементы позже? Они сценария GreaseMonkey добавляют события к объектам DOM. Я не могу сохранить ссылки в массиве или каком-либо другом подобном механизме, потому что, когда событие сработает, массив исчезнет, потому что скрипт GreaseMonkey выйдет из области видимости. Таким образом, событию нужен какой-то способ узнать ссылку на элемент, которая была в сценарии, когда событие было присоединено. И рассматриваемый элемент не тот, к которому он прикреплен.
Разве вы не можете просто использовать пользовательское свойство для элемента? Да, но проблема в поиске. Я должен был бы прибегнуть к переборам всех элементов, ища тот, у которого это пользовательское свойство установлено в желаемый идентификатор. Конечно, это сработает, но в больших документах это может занять очень много времени. Я ищу что-то, где браузер может выполнять работу поиска.
Подождите, вы можете или не можете изменить документ? Я не могу изменить исходный документ, но могу внести изменения в DOM в сценарии. Я уточню в вопросе.
Разве вы не можете использовать замыкания? Закрытия оказались эффективными, хотя я изначально думал, что они не будут. Смотрите мой следующий пост.
Звучит как ответ на вопрос: "Могу ли я использовать какой-нибудь внутренний идентификатор браузера?" это "Нет."