2013-06-04 43 views
8

Khách hàng của tôi muốn hiển thị cảnh báo khi truy cập trang web.Trang chặn cảnh báo javascript tải

Tuy nhiên, cảnh báo chặn tải thêm trang cho đến khi "Ok" được nhấp và trang cần tải trong nền khi cảnh báo được hiển thị.

Một giải pháp là sử dụng cảnh báo tùy chỉnh sử dụng HTML và CSS, nhưng điều này không trả lời các nhu cầu của khách hàng.

Có giải pháp nào sử dụng 'javascript lõi' hoặc jQuery để cho phép trang tải trong khi cảnh báo được hiển thị không? Cảm ơn.

+0

Tại sao không chỉ chờ trang được tải để hiển thị cảnh báo? – FLX

+0

Tôi hiểu ... Vì vậy, bạn có thể tạo cảnh báo tùy chỉnh giống hệt như cảnh báo gốc :) – FLX

Trả lời

8

Bạn nên chạy nó thông qua một setTimeout:

setTimeout(function() { alert('hello world'); }, 1); 

này được thể hiện ở đây: Is there a JavaScript alert that doesn't pause the script?

+0

Chà! hấp dẫn ! – FLX

+4

Điều này không hoạt động: http://jsfiddle.net/g33Et/ Javascript là một ngôn ngữ chủ đề duy nhất –

+0

wow +1 thats làm việc. –

3

EDIT

thấy @ câu trả lời Funky cho một workaround trong Firefox. (thực sự thú vị!)


Câu trả lời đơn giản là không, không thể!

Lý do gốc là hộp thoại alert() là chặn giao diện người dùng và javascript là ngôn ngữ chủ đề duy nhất.

Bạn phải sử dụng tin nhắn thoại tùy chỉnh.

Nhưng, nếu một số yêu cầu ajax được thực hiện ngay trước khi chặn giao diện người dùng, khi hộp thoại alert() bị đóng, phản hồi ajax sẽ/sẽ khả dụng. Vì vậy, bạn vẫn có thể thực hiện một số yêu cầu ajax ngay trước khi hiển thị cảnh báo.

+0

Xem nhận xét của tôi bên dưới – nadavge

+0

@FunKy Không, tôi không thể xem cách thức này có thể hoạt động. Webworkers có thể là một giải pháp nhưng nó vẫn chưa thực sự được thực hiện –

+0

Nó hoạt động, tuy nhiên tôi chưa từng nghe đến Web Worker cho đến bây giờ. Có vẻ đầy hứa hẹn. – nadavge

0

Bạn có thể sử dụng một hộp thoại tùy chỉnh thay vì một hộp cảnh báo (mà tải trang khối). Ví dụ: Jquery UI Dialog rất dễ sử dụng (nhưng có nhiều plugin thực hiện chính xác điều tương tự).

0

hiển thị cảnh báo khi tải trang hoàn tất. ở đây một ví dụ với jquery

$(function() { 
    alert("foo"); 
}); 
+0

Anh ấy muốn nó được hiển thị khi trang vẫn đang tải. – nadavge

Các vấn đề liên quan