Tôi đã thử rất nhiều giải pháp, nhưng chỉ có một giải pháp mà tôi có thể làm với uBlock Origin, là sử dụng hết thời gian chờ để kiểm tra trạng thái đã đóng của cửa sổ bật lên.
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)
}
Rõ ràng đây là hack; giống như mọi giải pháp cho vấn đề này.
Bạn cần cung cấp đủ thời gian trong setTimeout để mở tài khoản và đóng cửa ban đầu, vì vậy nó sẽ không bao giờ hoàn toàn chính xác. Nó sẽ là một vị trí của thử và sai.
Thêm số này vào danh sách các lần thử của bạn.
Nguồn
2018-01-30 12:29:01
Nó không hoạt động với Chrome ;-(sử dụng tốt hơn giải pháp Kevin B bên dưới .. – sly63
Đây là câu trả lời cho chrome: [detect-blocked-popup-in-chrome] (http://stackoverflow.com/questions/668286/detect-blocked-popup-in-chrome/1089792 # 1089792) – ajwaka
cũng đọc phần này: https://stackoverflow.com/a/20235765/2892117 –