cuốn sách gpt4 ai đã làm

javascript - 为什么 window.open 在 setTimeout <= 1000ms 时不会被阻塞?

In lại Tác giả: Taklimakan 更新时间:2023-11-02 21:24:54 27 4
mua khóa gpt4 Nike

document.querySelector('#ontime').onclick = function() {
setTimeout(() => {
window.open('https://www.google.com');
}, 1000);
};

Hết thời gian chờ khi người dùng nhấp vào <= 1000 ms (hoặc Promise.resolve().then(...)), nó sẽ không bị trình duyệt chặn.

Nếu bạn sử dụng thời gian chờ > 1000 ms hoặc requestAnimationFrame Làm tương tự và cửa sổ bật lên sẽ bị chặn.

Nhấp vào các liên kết bên dưới để xem ví dụ đầy đủ về 4 trường hợp: https://jsfiddle.net/kouty79/rcwgbfxy/

Có ai biết tại sao không? Có tài liệu hoặc thông số kỹ thuật w3c nào cho việc này không?

câu trả lời hay nhất

từ HTML 5.2 :

Thuật toán được phép hiển thị cửa sổ bật lên nếu bất kỳ điều kiện nào sau đây là đúng:

trình xử lý sự kiện cho một sự kiện đáng tin cậy…

… được xếp hàng bởi một thuật toán được phép hiển thị cửa sổ bật lên và chuỗi các thuật toán như vậy bắt đầu trong khung thời gian do tác nhân người dùng xác định.

onclick là một sự kiện đáng tin cậy, nhưng setTimeout Đặt nó vào hàng đợi (để nó không được gọi trực tiếp) để cửa sổ bật lên phải xuất hiện trong một thời gian nhất định.

Thời gian đó được xác định bởi trình duyệt.

Về javascript - tại sao window.open không chặn khi setTimeout <= 1000ms? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/48788231/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress