2011-04-04 43 views
16

¡Gracias de antemano!(Extensión de Chrome) Cómo abrir pragmáticamente la ventana emergente desde background.html

Lo que quiero lograr es abrir la ventana emergente cuando mi extensión detecta una etiqueta especial en una página web. Después de buscar por un momento, parece que la ventana emergente solo se puede abrir cuando el usuario hace clic en la extensión. ¿Es verdad?

¿O podría obtener la ubicación del ícono de mi extensión en el navegador? Tal vez podría dibujar una ventana y mostrar debajo del icono de la extensión para que se vea como la ventana emergente.

+0

Solo para el registro: https://code.google.com/p/chromium/issues/detail?id = 399859 – HaNdTriX

+0

Un enfoque que podría funcionar sería configurar un atajo de teclado para la ventana emergente en el manifiesto de la extensión, luego usar un archivo ejecutable para activar artificialmente ese atajo de teclado. Consulte [Native Messaging] (https://developer.chrome.com/extensions/nativeMessaging) para obtener más información sobre cómo comunicarse con un archivo ejecutable desde una extensión. – Miscreant

Respuesta

4

Si con ventana emergente quiere decir emergente de acción del navegador, entonces tiene razón, no hay forma de abrirlo programáticamente.

Puede insertar todo lo que necesite desde su ventana emergente bajo demanda directamente en una página a través de content script. Creo que esta sería la mejor solución.

Si su ventana emergente no contiene nada sofisticado, tal vez desktop notifications sea suficiente para usted.

Crear una nueva ventana y colocarla debajo de la barra de direcciones sería una solución bastante incómoda y no muy fácil de usar.

+2

¿Por qué Firefox tiene openPopup pero no Chrome? – Pacerier

10

Es imposible obtener la ventana de extensión de abrir sin un usuario haga clic en él ... Sin embargo, se puede obtener la página de extensión emergente para abrir en una nueva pestaña de la siguiente manera:

1) Establecer su background page en el archivo de manifiesto ...

"background_page": "background.html", 

Aquí es donde se va a ejecutar el código para ver si se detecta la etiqueta especial ... páginas de fondo se pueden ejecutar código constantemente en el fondo, y es hasta usted para establecer un ciclo de repetición para verificar si su condición variable es verdadera cada tanto a menudo ...

2) Habilitar tabs permission en el archivo de manifiesto ...

"permissions": [ "tabs" ], 

necesita este permiso para el paso 3 (permite que el fondo de la página para abrir una nueva pestaña)

3) En la página de fondo, llame al create y señale la URL emergente de la extensión.

if(condition == true){ 
    chrome.tabs.create({url:"popup.html"}); 
} 
7

This guy quiere efecto contrario y no puede conseguir su ventana emergente no se abra. Eche un vistazo a su código para abrir su página emergente;)

+0

Esto realmente funciona ... – jtblin

+1

Lamentablemente ya no funciona :( – Oleg

5

No puede fingir haga clic en la acción del navegador, pero aún puede abrir la página emergente del script de fondo como ventana emergente de la ventana habitual y funcionará como se esperaba. Así, por ejemplo, la página HTML de la acción del navegador es "popup.html"

window.open("popup.html", "extension_popup", "width=300,height=400,status=no,scrollbars=yes,resizable=no"); 

Nota: se le puede llamar sólo desde el (página del evento) script de fondo. Por lo tanto, debe registrar la secuencia de comandos de fondo en su archivo de manifiesto y agregar un controlador de eventos, que abriría la ventana emergente. Puede leer más sobre las páginas de eventos aquí https://developer.chrome.com/extensions/event_pages

+0

Nota: Si no se llama a window.open como resultado de una acción del usuario, como un clic, la mayoría de navegadores lo bloqueará como ventana emergente –

+0

@JanacMeena Eso no se aplica a extensiones de Chrome llamando a window.open – Miscreant

+0

Esto debería marcarse como la respuesta correcta. Tan simple, pero funciona! Gracias @devza! – kecman

Cuestiones relacionadas