2011-04-04 21 views
16

Grazie in anticipo!(Chrome Extension) Come aprire pragmaticamente la finestra popup da background.html

Quello che voglio ottenere è aprire la finestra popup quando un tag speciale viene rilevato su una pagina web dalla mia estensione. Dopo aver cercato per un po 'sembra che il popup possa essere aperto solo quando l'utente fa clic sull'estensione. È vero?

Oppure è possibile ottenere la posizione dell'icona del mio interno sul browser? Forse potrei disegnare una finestra e visualizzarla sotto l'icona dell'estensione per renderla simile alla finestra popup.

+0

Solo per la cronologia: https://code.google.com/p/cromo/temi/dettaglio?id = 399859 – HaNdTriX

+0

Un approccio che potrebbe funzionare sarebbe quello di impostare una scorciatoia da tastiera per il pop-up nel manifest dell'estensione, quindi utilizzare un file eseguibile per attivare artificialmente quella scorciatoia da tastiera. Vedi [Native Messaging] (https://developer.chrome.com/extensions/nativeMessaging) per maggiori informazioni su come comunicare con un file eseguibile da un'estensione. – Miscreant

risposta

4

Se per popup si intende popup di azione del browser, allora hai ragione, non c'è modo di aprirlo a livello di codice.

È possibile incorporare qualsiasi richiesta dal proprio popup su richiesta direttamente in una pagina tramite content script. Penso che questa sarebbe la soluzione migliore.

Se il tuo popup non contiene niente di particolare, forse desktop notifications sarebbe sufficiente per te.

Creare una nuova finestra e posizionarlo sotto l'url bar sarebbe una soluzione piuttosto scomoda e non molto user friendly.

+2

Perché Firefox ha openPopup ma non Chrome? – Pacerier

10

E 'impossibile ottenere la finestra di estensione per aprire senza un click dell'utente su di esso ... Tuttavia, è possibile ottenere la pagina popup estensione per aprire in una nuova scheda nel modo seguente:

1) Impostare la background page nel file manifest ...

"background_page": "background.html", 

Questo è dove si eseguire il codice per vedere se viene rilevato il tag speciale ... pagine di sfondo possono correre costantemente il codice in background, ed è fino a per impostare un ciclo di ripetizione per verificare se la condizione variabile è vera ogni tanto spesso ...

2) Attivare tabs permission nel file manifest ...

"permissions": [ "tabs" ], 

Questa autorizzazione è necessaria per la fase 3 (Consente lo sfondo della pagina per aprire una nuova scheda)

3) Nella pagina di sfondo, chiamare create e puntare all'URL popup di estensione.

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

This guy vuole effetto opposto e non può ottenere la sua finestra popup non aprire. Dai un'occhiata al suo codice per aprire la tua pagina popup;)

+0

Questo funziona davvero ... – jtblin

+1

Purtroppo non funziona più :( – Oleg

5

Non puoi fingere di fare clic sull'azione del browser, ma puoi comunque aprire la pagina popup dallo script di sfondo come solito finestra popup e funzionerà come previsto. Così, per esempio la pagina html della vostra azione browser è "popup.html"

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

Nota: si può chiamare solo dal (pagina dell'evento) sfondo script. Pertanto è necessario registrare lo script di background nel file manifest e aggiungere un gestore di eventi, che aprirà il popup. Puoi leggere di più sulle pagine degli eventi qui https://developer.chrome.com/extensions/event_pages

+0

Nota: se window.open non viene chiamato come risultato di un'azione dell'utente, ad esempio un clic, verrà bloccato come popup dalla maggior parte dei browser –

+0

@JanacMeena Che non si applica alle estensioni di Chrome che chiamano window.open – Miscreant

+0

Questo dovrebbe essere contrassegnato come risposta corretta. Semplice, ma funzionante! Grazie @devza! – kecman

Problemi correlati