Ho provato un sacco di soluzioni, ma l'unico che ho potuto venire con che ha anche lavorato con uBlock Origin, ero utilizzando un timeout per controllare lo stato chiuso del pop-up.
function popup (url, width, height) {
const left = (window.screen.width / 2) - (width / 2)
const top = (window.screen.height / 2) - (height / 2)
let opener = window.open(url, '', `menubar=no, toolbar=no, status=no, resizable=yes, scrollbars=yes, width=${width},height=${height},top=${top},left=${left}`)
window.setTimeout(() => {
if (!opener || opener.closed || typeof opener.closed === 'undefined') {
console.log('Not allowed...') // Do something here.
}
}, 1000)
}
Ovviamente questo è un hack; come tutte le soluzioni a questo problema.
È necessario fornire abbastanza tempo nel vostro setTimeout per tenere conto per l'apertura e la chiusura iniziale, quindi non è mai intenzione di essere accuratamente accurate. Sarà una posizione di tentativi ed errori.
Aggiungi questo alla tua lista di tentativi.