2013-07-24 9 views
5

Un esempio potrebbe essere se il mio interno overrides the newtab page e l'utente installano un altro interno che sovrascrive anche la pagina newtab. Attualmente, viene mostrata solo un'estensione newtab che di solito non è mia.Come rilevare quando un altro Chrome Extension sovrascrive la stessa pagina

Cosa posso fare per rilevare quando si verifica un tale conflitto e informare l'utente di tale?

Il management API non mi dice se le estensioni ignorano le pagine, quindi purtroppo non posso usarlo.

risposta

4

Questo non sembra essere una funzionalità exant dell'API. Ti suggerisco di aprire un bug a http://crbug.com.

In mancanza di questo, è possibile eseguire il seguente trucco brutto (che non ho ancora testato):

  1. avere la tua pagina Nuova scheda inviare un messaggio alla tua pagina di background ogni volta che viene caricato.

  2. ascolto per chrome.webNavigation.onBeforeNavigate eventi che si occupano di chrome://newtab:

    chrome.webNavigation.onBeforeNavigate.addListener(function(details) { 
        /* send message */ 
    }, { url: [{ urlEquals: 'chrome://newtab/' }] }); 
    
  3. Quando webNavigation vede il carico del browser chrome://newtab ma non si vede un messaggio alla tua pagina di sfondo, poco dopo, la nuova scheda è probabilmente non essere usato Da lì, è possibile inviare una notifica o aprire un'altra scheda/finestra con un avviso.

Purtroppo, questo richiede il permesso webNavigation, che è un peccato se l'estensione non altrimenti ne ha bisogno. L'avvertimento che porta ("Questa estensione può accedere alle tue schede e attività di navigazione") potrebbe spaventare alcuni potenziali utenti, soprattutto se non c'è alcun motivo che sia ovvio per l'utente. (Poi di nuovo, forse sono troppo ottimista riguardo la sicurezza e la scrupolosità degli utenti.) Se la tua estensione utilizza attualmente l'API tabs, allora questo messaggio è già presente in ogni caso.

+2

L'API ['chrome.webNavigation'] (https://developer.chrome.com/extensions/webNavigation.html) sarebbe più adatta dell'API' tabs'. Questa API consente di dichiarare i filtri, ad es. 'chrome.webNavigation.onBeforeNavigate.addListener (function (details) {/ * fa qualcosa * /}, {url: [{urlEquals: 'chrome: // newtab /'}]});' –

Problemi correlati