14
window.addEventListener("onbeforeunload",function() {return "are you sure?"}); 

^này dường như không làm việc ... tại tất cả các ... trang sẽ chỉ cần đóng mà không hiển thị hộp xác nhận ...addEventListener không làm việc với onbeforeunload

Tôi nhận ra rằng ...

window.onbeforeunload = function() {return "are you sure?"} 

Sẽ hoạt động, nhưng tôi muốn thêm vào chức năng (ví dụ: thêm nhiều trình xử lý sự kiện vào hàm "onbeforeunload") không viết lại hàm hoàn toàn!

Trả lời

20

Xóa on từ onbeforeunload.

Ngoài ra, hãy lưu ý rằng addEventListener sẽ không hoạt động trong trình duyệt cũ hơn của IE và có thể là các trình duyệt khác. Nếu bạn muốn ràng buộc sự kiện nhất quán sử dụng một thư viện.

+0

Oh, lollllll, tôi biết đó là điều ngu ngốc -.- cảm ơn bạn rất nhiều! – zconnelly13

+2

Đây là giải pháp trình duyệt chéo cho addEvent: 'function addEvent (evt, fn, useCapture) {if (this.addEventListener) {this.addEventListener (evt, fn, useCapture); trả về true;} else if (this.attachEvent) {var r = this.attachEvent ('on' + evt, fn); trả về r;} khác cái này ['on' + evt] = fn;} Object.prototype.addEvent = addEvent; '(viết hàm như thế này : object.addEvent (sự kiện, hàm, useCapture);). – Mageek

+2

dường như không hoạt động trong FF - 14.0.1 mới nhất nữa – Marcin

13

Có "ví dụ hoạt động gần như trên nhiều trình duyệt" ở Mạng nhà phát triển Mozila API reference for beforeunload event. Sử dụng mã của họ.

window.addEventListener("beforeunload", function (e) { 
    var confirmationMessage = "\o/"; 

    (e || window.event).returnValue = confirmationMessage;  //Gecko + IE 
    return confirmationMessage;        //Webkit, Safari, Chrome etc. 
}); 
+0

không có vấn đề gì theo cách tôi làm điều đó tôi không thể tùy chỉnh tin nhắn – toddmo

+0

@toddmo Ngày nay, các trình duyệt không hiển thị thông báo tùy chỉnh. Đó là tính năng bảo mật/UX. Xem https://www.chromestatus.com/feature/5349061406228480. Hoặc trang MDN được liên kết tại đó. Đây là cái gì đó xuất hiện sau khi câu trả lời được viết. – user7610

+0

Cảm ơn cuối cùng tôi đã thấy rằng quá :) – toddmo

0

Không có tiền tố on cho EventListeners nhưng nó áp dụng hoặc tôi có thể nói cần thiết cho EventHandlers

Vì vậy, chỉ cần ghi nhớ rằng

EventHandlers = tiền tố trên

E ventListeners = tiền tố tắt

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