other network how google chrome javascript google-chrome xpath google-chrome-extension content-script

javascript - network - inspector google chrome



La función $ x() no está definida dentro de una extensión de Chrome, script de contenido (1)

$x("//a[contains(@href,''.jpg'')]");

funciona como se esperaba desde el símbolo del sistema de las herramientas del desarrollador. Pero, cuando en el script de contenido de una extensión obtengo un '' $x is not defined ''.

¿Por qué esto no está disponible en un script de contenido o hay una forma especial de acceder a él dentro de un script de contenido / extensión de Chrome?

Estoy usando Chrome 22 en Debian.


$x() no es parte del entorno de tiempo de ejecución de una página web o script de contenido. Es una herramienta que forma parte de la API de línea de comandos para DevTools de Chrome .

Para usar XPath en una secuencia de comandos de contenido, debe hacerlo de la manera normal, el acceso directo conveniente de DevTools no está disponible.

Tu código se vería así:

var jpgLinks = document.evaluate ( "//a[contains(@href,''.jpg'')]", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null ); var numLinks = jpgLinks.snapshotLength; for (var J = 0; J < numLinks; ++J) { var thisLink = jpgLinks.snapshotItem (J); console.log ("Link ", J, " = ", thisLink); }

- que es el tipo de cosas que $x() estaba haciendo por ti, detrás de las escenas.

Mientras lo hace, considere cambiar a selectores de CSS . Entonces la misma funcionalidad es:

var jpgLinks = document.querySelectorAll ("a[href$=''.jpg'']"); var numLinks = jpgLinks.length; for (var J = 0; J < numLinks; ++J) { var thisLink = jpgLinks[J]; console.log ("Link ", J, " = ", thisLink); }

- que es mucho más aceptable en mi libro.