Domanda

C'è un buon modo per determinare se una persona ha un blocco popup abilitato? Devo mantenere un'applicazione Web che purtroppo ha tonnellate di popup in tutto e devo verificare se l'utente ha i blocchi popup abilitati.

L'unico modo in cui ho scoperto di farlo è aprire una finestra da JavaScript, verificare se è aperta per determinare se un blocco è abilitato e quindi chiuderlo immediatamente.

Questo è leggermente fastidioso poiché gli utenti che non lo hanno abilitato vedono un piccolo lampo sullo schermo mentre la finestra si apre e si chiude immediatamente.

Esistono altri metodi non invadenti per raggiungere questo obiettivo?

È stato utile?

Soluzione

Leggi Rileva un blocco popup usando Javascript :

Fondamentalmente si controlla se il metodo 'window.open' restituisce un handle a una finestra appena aperta.

Assomiglia a questo:

var mine = window.open('','','width=1,height=1,left=0,top=0,scrollbars=no');
if(mine)
    var popUpsBlocked = false
else
    var popUpsBlocked = true
mine.close()

Altri suggerimenti

Come altri hanno già detto, dovrai provarlo e vedere, ma verificando che l'oggetto della finestra risultante sia non "errato". non è sufficiente per tutti i browser.

Opera restituisce comunque un oggetto Window quando un popup è bloccato, quindi è necessario esaminare l'oggetto sufficientemente per determinare se si tratta di una finestra reale:

var popup = window.open(/* ... */);
var popupBlocked = (!popup || typeof popup.document.getElementById == "undefined");

Come altri hanno commentato, l'unico modo per scoprirlo con certezza è provarlo.

Tuttavia, una buona risposta approssimativa alla domanda & # 8220; è un blocco popup installato & # 8221; è, in questi giorni, & # 8220; sì & # 8221 ;. Tutti i browser recenti bloccheranno i tuoi popup per impostazione predefinita, quindi è meglio progettare la tua app per far fronte con grazia a questo. Vale a dire, non provare a window.open se non in risposta a un'interazione dell'utente (in genere onclick), e andrà tutto bene.

Non credo che ci sia modo di rilevarlo senza tentare di aprire una finestra, poiché i blocchi popup non aggiungono nulla che possa essere interrogato in JS.

I popup che vengono aperti in risposta a un'azione di un utente & # 8212; come fare clic su un link & # 8212; non devono essere bloccati dai blocchi popup.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top