2012-04-26 27 views
21


Tôi muốn viết một trang web cho bài kiểm tra trực tuyến.Có yêu cầu không, nếu người thay đổi câu đố hoặc mở cửa sổ mới ngay cả khi không thu nhỏ trình duyệt, tức là nếu người đó cố gắng xem câu trả lời từ một số cửa sổ/tab khác, bài kiểm tra nên dừng lại. Làm thế nào tôi có thể làm điều đó?
P.S: nó không phải là một số tính năng HTML5 rất mới. Tôi muốn nó được hỗ trợ bởi tất cả các trình duyệt chính hiện nay.Javascript để phát hiện xem người dùng có thay đổi tab

+1

Vâng chắc chắn thay đổi trong tab có thể được phát hiện bằng cách sử dụng Javascript as far as i know.What tôi muốn biết là, nếu sự thay đổi trong trọng tâm của cửa sổ như mở một trình duyệt mới có thể được phát hiện! – Maxsteel

+0

Bạn sẽ không phát hiện được nếu điều đó xảy ra trong một cửa sổ trình duyệt khác. –

Trả lời

36

Bạn có thể xác định xem một tab hoặc cửa sổ đang hoạt động bằng cách gắn một mờ/tập trung kiện nghe để cửa sổ.

trong jQuery nó sẽ là

$(window).focus(function() { 
    //do something 
}); 

$(window).blur(function() { 
    //do something 
}); 

trích dẫn từ này SO trả lời: https://stackoverflow.com/a/1760268/680578

+1

Cũng sẽ cháy vì chỉ mất tiêu điểm trên cửa sổ, nhưng cửa sổ vẫn hiển thị. – Matt

+1

Nó có thể phát hiện nếu người dùng khởi chạy cửa sổ/trình duyệt mới mà không thu nhỏ cửa sổ bài kiểm tra? – Maxsteel

+0

Nếu một cửa sổ bật lên mới xuất hiện, sẽ có sự mất tập trung vào cửa sổ hiện tại, sẽ không có ở đó? – Kristian

14

Nếu bạn đang nhắm mục tiêu các trình duyệt hỗ trợ nó, bạn có thể sử dụng API hiển thị trang có sẵn trong HTML5. Nó không trực tiếp phát hiện các thay đổi tab, mỗi lần nói, nhưng thay đổi hiển thị. Trong đó sẽ bao gồm (nhưng không giới hạn) thay đổi tab.

Xem https://developer.mozilla.org/en/DOM/Using_the_Page_Visibility_API

+0

Đây là một API tiện dụng tuy nhiên cần lưu ý rằng tại thời điểm này (ngày 6 tháng 3 năm 2015) có một số hạn chế: 'Alt' +' Tab' (ví dụ: chuyển đổi ứng dụng dưới mọi hình thức) không đăng ký trên Windows cho Firefox/Chrome/IE10. Chuyển đổi các tab trong mỗi trình duyệt chỉ hoạt động tốt. Trên iOS, mặc dù chuyển đổi ứng dụng hoặc khóa thiết bị ** sẽ ** kích hoạt thay đổi mức hiển thị. – scunliffe

4

tốt nhất có nguồn gốc chức năng tay xuống, không có jQuery.

document.hasFocus 

Kiểm tra bút, kiểm tra xem điều gì sẽ xảy ra khi bạn truy cập liên kết và quay lại tab mã.

https://codepen.io/damianocel/pen/Yxxzdj

+0

Dường như làm việc cho tôi trong Opera, FireFox, Safari và Chrome. Chưa được thử nghiệm ở những người khác. – Umair

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