2012-09-05 41 views
6

Trên điện thoại di động, trong safari Nếu tôi truy cập trang mặc định có alert("Hello") trên sự kiện tải cơ thể, cảnh báo sẽ hiển thị với trang mặc định của tôi hiển thị hoàn toàn dưới nền. Nếu tôi sau đó đi đến một trang web khác ví dụ bbc.co.uk và sau đó nhập vào địa chỉ web của tôi cho trang mặc định của tôi trong thanh địa chỉ, cảnh báo hiển thị với nội dung của BBC ở chế độ nền, giống như cảnh báo tải trước trang đã tải.Tải cảnh báo Javascript trước khi hiển thị trang

Làm cách nào để chỉ hiển thị thông báo sau khi toàn bộ trang hiển thị. Tôi đã đọc rằng window.onload đợi cho đến khi mọi thứ được tải trước khi nó kích hoạt cảnh báo nhưng tôi phải nhận được một cái gì đó sai vì hành vi không thay đổi. Tôi cũng đã thử:

$(document).ready(function() { 
    window.onload= alert('Test'); 
}); 

<meta http-equiv="Pragma" content="no-cache"/> 

trong trường hợp nó có cái gì để làm với bộ nhớ cache nhưng tôi không nghĩ rằng đây là vấn đề. Bất kỳ ý tưởng?

Cảm ơn

+0

[Sự khác nhau giữa $ (document) .ready và .load $ (window) trong jQuery] (http://web.enavu.com/ hàng ngày-tip/hàng ngày-tip-khác biệt-giữa-tài liệu-sẵn sàng-và-cửa sổ-tải-in-jquery /) – smilledge

Trả lời

2
$(window).load(function() { 
     alert('Test'); 
}); 
+0

Cảnh báo vẫn xuất hiện trước khi trang hiển thị. Trang giới thiệu vẫn hiển thị trong nền. – mjroodt

+0

Tôi đã phải sử dụng hàm setTimeout cũng như cửa sổ jquery window.load. Tôi không có ý tưởng tại sao nó không hoạt động nhưng điều này làm việc cho tôi. $ (cửa sổ) .ready (function() { setTimeout (function() {alert ("Test")}, 1000); }); – mjroodt

+0

@mjroodt Vậy tại sao bạn lại chấp nhận câu trả lời này? – showdev

3

nếu bạn wanto hiển thị hộp alrert hoặc sử dụng window.onload không có điểm trong việc sử dụng cả hai, đây là mã mà sẽ làm việc tốt

window.onload (được thực hiện thậm chí trong các trình duyệt cũ), mà cháy khi toàn bộ tải trang

window.onload = function(){ alert('test'); } 

jQuery cung cấp document.ready, mà tóm tắt những lập tức, và cháy như Ngay sau khi trang của DOM đã sẵn sàng

$(document).ready(function() {  
alert('Test'); 
}); 

Kiểm tra câu trả lời từ: window.onload vs $(document).ready()

window.onload là được xây dựng trong sự kiện Javascript, nhưng khi triển khai thực hiện có tinh tế quirks trên các trình duyệt (FF/IE6/IE8/Opera), jQuery cung cấp document.ready, để tóm tắt chúng đi và cháy ngay sau khi DOM của trang sẵn sàng (không chờ đợi hình ảnh, v.v.).

document.ready là một hàm jQuery, gói và cung cấp quán đến sự kiện sau đây:

  • document.ondomcontentready/document.ondomcontentloaded - một sự kiện hơi mới mà cháy khi DOM của tài liệu được nạp (có thể là một thời gian trước các hình ảnh, vv được tải); một lần nữa, hơi khác nhau trong IE và trong phần còn lại của thế giới
  • và window.onload (được thực hiện ngay cả trong các trình duyệt cũ), mà cháy khi toàn bộ tải trang (hình ảnh, phong cách, vv)
+0

Chắc chắn ngay cả khi cả hai cùng nhau là không cần thiết bằng cách sử dụng cả hai người trong số họ không nên làm cho nó chạy quá sớm nên nó ? – Chris

+0

Sự kiện 'ready' xảy ra sau khi tài liệu HTML đã được tải, không phải khi toàn bộ trang đã được hiển thị ... Xem http://stackoverflow.com/questions/3698200/window-onload-vs-document-ready – smilledge

+0

Ah , một poster khác có câu trả lời. câu trả lời của bạn sẽ không hoạt động vì mã bạn đã trích dẫn sẽ đánh giá 'alert ('Test')' trước khi gán nó cho onload. Bạn cần truyền một hàm để tải. – Chris

7

Bạn chuyển một tham chiếu đến một hàm đến window.onload chứ không phải cuộc gọi thực.

thử

window.onload = function(){ 
alert('test'); 
} 
+0

+1 để thực sự giải thích lý do mã của người dùng không hoạt động thay vì chỉ cung cấp mã khác. Thực tế nó sẽ đánh giá cảnh báo trước khi gán nó cho sự kiện này là một lỗi tìm kiếm tinh tế, rất khó để phát hiện nếu bạn không tìm kiếm nó (vì người quan sát biết ý nghĩa của nó là gì và không nghĩ về nó thực sự nói). – Chris

+0

Tôi đã thử điều này và cảnh báo vẫn xuất hiện trên trang giới thiệu ở chế độ nền. – mjroodt

-1

<!DOCTYPE html> 
 
<html> 
 
<body onload="show_popup()"> 
 

 
<script> 
 
function show_popup() { 
 
    alert("Popup shows"); 
 
} 
 
</script> 
 

 
</body> 
 
</html>

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