2015-05-22 16 views
5

chúng tôi đang cố gắng để có được một số dữ liệu kỹ lưỡng về hoạt động của người dùng, vì vậy chúng tôi đang xây dựng cho mình một thư viện, ghi lại thời gian người dùng chi tiêu trên trang nhất định. Chúng tôi đang đo thời gian sử dụng thư viện TimeMe. Chúng tôi đang cố gắng để gửi measurments đến máy chủ của chúng tôi chỉ một lần, khi trang người dùng thay đổi, tab, trình duyệt chặt chẽ, vv bỏCách phát hiện việc đóng trình duyệt di động (Android Chrome) bằng Javascript?

Hiện nay chúng tôi đang nghe hai sự kiện:

  1. trang: trước-dỡ bỏ trên tài liệu (vì turbolinks ray)
  2. beforeunload trên cửa sổ (trường hợp khác)

Nó hoạt động tốt trên các trình duyệt máy tính để bàn. Tuy nhiên những người nghe này sẽ không bắt được một số sự kiện. Ví dụ: nếu chúng tôi truy cập trang web trên trình duyệt dành cho thiết bị di động (Android Chrome) và sau đó đóng trình duyệt này, những người nghe này sẽ không kích hoạt.

Câu hỏi của tôi là, làm thế nào chúng ta có thể sửa lỗi này? Trình duyệt trên thiết bị di động tạo sự kiện gì khi họ đang đóng cửa?

Cảm ơn lời khuyên của bạn.

+0

Bạn có thể muốn xem xét mã phía máy chủ có thể phức tạp hơn ... Tôi không nghĩ có cách đáng tin cậy để phát hiện qua javascript. – brso05

+0

Hãy thử thêm trình xử lý sự kiện thông qua 'window.addEventListener (" beforeunload ", unloadHandler);' where 'unloadHandler' là một hàm nhận đối tượng sự kiện làm đối số đầu tiên. – marekful

+0

@marekful Không, không giúp được gì. – piko

Trả lời

0

Bạn không bao giờ có thể phát hiện việc đóng trình duyệt bằng JavaScript, JavaScript là một ngôn ngữ được nhập động và nó sử dụng các công cụ trình duyệt để thực thi. Nhưng nếu bạn định đóng trình duyệt thì mã JavaScript sẽ có thể thực thi như thế nào. Vì vậy, điều này là không thể ở tất cả. nhưng trong trường hợp để đối phó với google chrome, vì android là một hệ điều hành và hỗ trợ biên dịch javascript, vì V8 cũng là công cụ thực thi cho chrome do google cung cấp. Vì vậy, kịch bản sau đây có thể dẫn đến một ca khúc đúng.

$ (window) .bind ('beforeunload', function() {
if (iWantTo) {
trở lại "Đừng bỏ em!";
}
});

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