2011-07-28 53 views
5

tôi đang làm việc trên trang này: "Chúng ta hãy Go" http://www.weloveflyers.co.uk/order.phponbeforeunload dường như không làm việc trong Safari hoặc Chrome

Sau khi ai đó đã bước chi tiết để họ và nhấp vào thông tin đơn đặt hàng được chụp, hiển thị cho họ để kiểm tra và sau đó là "Thanh toán ngay!" nút xuất hiện ở phía dưới (thử nó, bạn không phải trả bất cứ điều gì, chỉ để bạn có thể thấy những gì tôi có ý nghĩa)

Tôi không muốn cản trở bất kỳ ai rời khỏi trang TRƯỚC KHI họ nhấp vào nút Bắt đầu, nhưng nếu họ đã nhấp vào "Let's Go!" (ví dụ: đặt hàng) nhưng chưa nhấp vào "Thanh toán ngay!" Tôi muốn có thể kiểm tra với họ "Bạn có thực sự muốn rời đi không? Nếu bạn rời đi mà không trả tiền, đơn đặt hàng của bạn sẽ bị hủy!"

Trước khi tôi gặp rắc rối khi đảm bảo nó chỉ hoạt động khi một đơn đặt hàng đã được đặt, tôi đã thử thiết lập onbeforeunload rất cơ bản chỉ để xem trình duyệt có hỗ trợ nó hay không. Tôi dường như nhận được hỗ trợ lẻ tẻ cho chức năng này trong Safari, nói chung nó không hoạt động, nhưng rất thỉnh thoảng nó có, và trong Chrome nó không hoạt động chút nào.

Bất kỳ trợ giúp hoặc lời khuyên nào mà bất kỳ ai có thể cung cấp đều sẽ được biết ơn!

Cảm ơn,

Phil

T.B. Đối với thông tin của bạn, tôi đã xóa tất cả chức năng onbeforeunload khỏi trang trực tiếp ngay bây giờ, bởi vì tôi không muốn làm phiền khách truy cập cho đến khi tôi nhận được đúng và nó thực hiện chính xác những gì tôi muốn.

CẬP NHẬT: Đây là nỗ lực mới nhất:

var needToConfirm = true; 
window.onbeforeunload = confirmExit; 
function confirmExit() { 
    if (needToConfirm) 
    return "Message"; 
}; 
+0

Bạn có thể vui lòng đăng mã mà bạn đang sử dụng để ràng buộc sự kiện onbeforeunload không? – rkaregaran

+0

Lần thử gần đây nhất của tôi là sử dụng: \t \t 'code' '/ code' Trong khi thử nghiệm, tôi đã thử đặt needToConfirm thành false, sử dụng" Let's Go! " để đặt thành True, sau đó sử dụng nút "Trả tiền ngay" để đặt lại thành False như một cách để kích hoạt nó chỉ vào thời điểm thích hợp. –

+0

Nỗ lực khó nhất của bạn hoạt động tốt cho tôi trong Chrome. – serg

Trả lời

6

Theo MDN documentation, tôi chỉ cố gắng như sau trong Chrome 11 (và 13) và Safari 5 trên OS X, và trong Chrome 14 trên Windows 7, và nó hoạt động tốt cho tôi (như mã của bạn ở trên!):

window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
    e.returnValue = 'Any string'; 
    } 

    // For Safari 
    return 'Any string'; 
}; 

Điều gì sẽ xảy ra nếu bạn sử dụng mã ở trên trang của bạn, chính xác như vậy?

Bạn đang sử dụng phiên bản Chrome và Safari nào?

+1

Có, nó đang hoạt động ngay bây giờ! Cảm ơn! – Phuong

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