Estoy escribiendo un script de GreaseMonkey en el que estoy iterando a través de un grupo de elementos. Para cada elemento, necesito una ID de cadena que pueda usar para hacer referencia a ese elemento más adelante. El elemento en sí no tiene un atributo id
, y no puedo modificar el documento original para darle uno (aunque puedo hacer cambios DOM en mi script). No puedo almacenar las referencias en mi script porque cuando las necesito, el script de GreaseMonkey se habrá salido del alcance. ¿Hay alguna forma de obtener una ID "interna" que usa el navegador, por ejemplo? Una solución solo para Firefox está bien; una solución de navegador cruzado que podría aplicarse en otros escenarios sería increíble.Id. De elemento único, incluso si el elemento no tiene uno
Editar:
Si el script de Greasemonkey está fuera de alcance, ¿cómo estás referenciando los elementos más adelante? El script GreaseMonkey agrega eventos a los objetos DOM. No puedo almacenar las referencias en una matriz u otro mecanismo similar porque cuando el evento se dispara, la matriz se habrá ido porque la secuencia de comandos de GreaseMonkey se habrá salido del alcance. Por lo tanto, el evento necesita alguna forma de conocer la referencia de elemento que tenía el script cuando se adjuntó el evento. Y el elemento en cuestión no es al que está unido.
¿No puede simplemente usar una propiedad personalizada en el elemento? Sí, pero el problema está en la búsqueda. Tendría que recurrir a iterar a través de todos los elementos buscando el que tiene esa propiedad personalizada establecida en el ID deseado. Eso funcionaría, claro, pero en documentos grandes podría llevar mucho tiempo. Estoy buscando algo donde el navegador pueda hacer el trabajo de búsqueda.
Espera, ¿puedes o no puedes modificar el documento? No puedo modificar el documento fuente, pero puedo hacer cambios DOM en el script. Voy a aclarar en la pregunta.
¿No puedes usar cierres? Los cierres sí funcionaron, aunque al principio pensé que no. Ver mi publicación posterior.
Parece la respuesta a la pregunta: "¿Hay alguna identificación interna del navegador que pueda usar?" no es."
Pregunta muy interesante. De hecho, me gustaría saber cómo varios navegadores implementan esto. Quizás algunos navegadores asignan un índice oculto a todos los elementos para que puedan acceder a ellos internamente sin la necesidad de recorrer todo el árbol DOM. Tendría sentido. La pregunta es si podemos acceder al índice desde JavaScript. –
@AsGoodAsItGets En realidad, es al revés, ya que esta pregunta se creó primero. :) –
@AsGoodAsItGets: * shrug * Nadie te obligará a hacerlo; hazlo si sientes que deberías hacerlo –