Tôi biết tất cả mọi người là đạo đức chống lại điều này, nhưng tôi hiểu có những lý do của thực tiễn đùa nơi này là mong muốn. Tôi nghĩ Chrome đã có lập trường vững chắc về điều này bằng cách thực thi một khoảng thời gian tách biệt thứ hai bắt buộc giữa các thông điệp cảnh báo. Điều này mang lại cho khách truy cập chỉ đủ thời gian để đóng trang hoặc làm mới nếu họ bị kẹt trên trang web trò đùa gây phiền nhiễu.
Vì vậy, để trả lời câu hỏi của bạn, tất cả đều là vấn đề về thời gian. Nếu bạn cảnh báo nhiều lần mỗi giây, Chrome sẽ tạo hộp kiểm đó. Dưới đây là một ví dụ đơn giản của một workaround:
var countdown = 99;
function annoy(){
if(countdown>0){
alert(countdown+" bottles of beer on the wall, "+countdown+" bottles of beer! Take one down, pass it around, "+(countdown-1)+" bottles of beer on the wall!");
countdown--;
// Time must always be 1000 milliseconds, 999 or less causes the checkbox to appear
setTimeout(function(){
annoy();
}, 1000);
}
}
// Don't alert right away or Chrome will catch you
setTimeout(function(){
annoy();
}, 1000);
Tôi không muốn thêm khung như jQuery. Ngoài ra, có rất nhiều hộp 'alert()' và 'confirm()' trong suốt mã. Tôi không muốn phát minh lại bánh xe, chỉ cần tắt hộp kiểm đó. –
@DannyBeckett cũng có các phương thức JS thuần túy. JS có thể thực sự tối thiểu, nó chỉ để hiển thị/ẩn một div. Phần còn lại là CSS. Bạn có thể ghi đè các chức năng cảnh báo/xác nhận mặc định bằng chính bạn để bạn không phải thay đổi mã của mình. – sachleen
Nhân tiện, bạn có thể dễ dàng ghi đè lên chức năng cảnh báo hiện có để tất cả các cuộc gọi đến 'alert()' sẽ sử dụng cửa sổ bật lên tùy chỉnh phương thức của bạn thay cho quảng cáo gốc. http://stackoverflow.com/questions/1729501/javascript-overriding-alert – sachleen