¿Es posible hacer que el script de contenido se inyecte solo si el tipo de contenido del documento coincide con un patrón específico? De hecho, mi objetivo es mucho más simple: necesito que mi script de contenido se haya inyectado en documentos HTML solo (por ahora, también se ha inyectado en documentos XML). Los scripts de contenido deben ser inyectados en "document_start".¿Cómo limitar el script de contenido de extensión de Chrome a un tipo de contenido específico?
Respuesta
Llegué a un problema similar y lo resolvió de la siguiente manera.
En lugar de limitar la variedad de documentos en los que se inyecta una secuencia de comandos de contenido, según los documentos 'Content-Type
, decidí inyectar la secuencia de comandos en todos los documentos, pero ejecutarla solo en los correctos.
Esto se hace mediante el análisis de document.xmlVersion
y document.doctype
propiedades:
document.doctype
no debe sernull
en un documento HTML;document.xmlVersion
no debe sernull
en un documento XML;
Por lo tanto, es fácil usar cualquiera de ellos para distinguir un tipo de otro y "enlazar" todo el material de escritura necesario solo cuando sea apropiado. En particular, uno puede inyectar un pequeño gestor de scripts, que cargará cosas adicionales, posiblemente pesadas, condicionalmente.
Chrome aún no proporciona ningún medio para limitar la inyección de scripts por tipo de documento.
La forma más robusta de hacerlo es a través de chrome.webRequest.onHeadersReceived
, que le permite consultar y conservar la información del encabezado de respuesta (incluido Content-Type
). Desafortunadamente, esta API no está disponible actualmente en versiones estables de Chrome. (Puede usar la API experimental en las versiones actuales de Chrome, pero no podrá publicar extensiones que la usen).
Una posible solución para usted es determinar si el documento inyectado está siendo tratado o no por Chrome. como XML. (Y si lo es, detenga el procesamiento del documento.) Un truco para lograr esto es verificar si document.getElementById('webkit-xml-viewer-source-xml')
es null
. Este elemento forma parte del visor XML de Chrome/webkit.
- 1. Extensión de Chrome: comunicación entre script de contenido y background.html
- 2. Cómo inyectar CSS utilizando el archivo de script de contenido en la extensión de Chrome?
- 3. cómo no heredar estilos en un script de contenido de extensión de Chrome
- 4. Extensión de Chrome: ¿cómo detectar que el script de contenido ya está cargado en una pestaña?
- 5. Cómo usar @ font-face en una extensión de Chrome en un script de contenido
- 6. Lea el archivo empaquetado con la extensión de Chrome en el script de contenido
- 7. ¿El equivalente a un script de contenido en una extensión de Firefox?
- 8. Carga de script de contenido en la extensión de cromo
- 9. ¿Cómo puedo abrir la página emergente de mi extensión de Chrome desde el script de contenido de la extensión?
- 10. Reintentar script de contenido de extensión de Chrome después de la actualización o instalar
- 11. ¿Cómo obtener la extensión de archivo del tipo de contenido?
- 12. Drupal 7 hook_menu para el tipo de contenido específico
- 13. JavaScript tipo de contenido
- 14. ¿Limitar la extensión de Chrome a ciertas URL?
- 15. jpg Tipo de contenido
- 16. Extensión de Chrome: Descargar/exportar contenido creado "sobre la marcha"
- 17. Panel y contenido de PageMod Mensaje de script que pasa en una extensión de Firefox
- 18. Cómo configurar el tipo de contenido en el servlet
- 19. UIWebView - Limitar el ancho del contenido
- 20. RSS y contenido de átomos de tipo
- 21. Código de extensión de Chrome vs Guiones de contenido vs Guiones inyectados
- 22. addEventListener en el script de contenido no funciona
- 23. ¿Cómo ver el contenido IndexedDB en chrome?
- 24. leer el contenido de un directorio utilizando script de shell
- 25. ¿Cómo puedo redireccionar a una URL con una extensión de Google Chrome y una secuencia de comandos de contenido?
- 26. Google Chrome Javascript Depurador y secuencias de comandos de contenido
- 27. Cómo comunicarse entre el script de contenido y el panel
- 28. ¿Cómo establecer un tipo de contenido para un archivo específico con Rack?
- 29. Cómo establecer el encabezado de tipo de contenido de WebClient?
- 30. ¿Cómo averiguar qué tipos de escucha de eventos se unen a un elemento HTML específico en la extensión de Chrome?
¿Qué sucede si su secuencia de comandos de contenido agrega un agente de escucha de eventos para esperar a que se cargue el documento antes de realizar una acción? Por ejemplo, 'document.addEventListener (" DOMContentLoaded ", function() {do.stuff()};'. – cheeken
Esto es lo que debo evitar, mi script debe ejecutarse primero (antes de cargar el documento). – spektom
Veo. En ese caso, no tengo otras recomendaciones. Buena suerte. – cheeken