我正在創建一個用戶測驗,每個問題的測試時間爲3分鐘。我該如何做到這一點,以便用戶無法按下或刷新,或者即使他們按下它也不會發生任何事情,或者他們得到一條消息,如果他們按下它,他們將獲得0分。我嘗試了一個警告框來做到這一點,但當警報框打開時鐘停止。任何人都知道如何實現這一目標?禁止用戶按下或刷新
回答
後退按鈕的行爲取決於用戶/瀏覽器,這意味着無法禁用後退按鈕本身。有幾種解決方法,例如打開一個新窗口並從父窗口引用計數器。但禁用後退按鈕本身不可能
正如其他地方所建議的,您不能覆蓋後退或刷新行爲。但是,您可以執行操作(如彈出一個消息)時,他們試圖離開頁面的用戶:
<body onbeforeunload="return confirm('If you leave this page, you will receive 0 points. Stay on page?');">
請注意,這種類型的干擾是惱人的用戶,不應該使用在一般的觀衆。然而,在權威測驗的背景下,這可能是可以接受的。
另請注意,某些瀏覽器(例如Opera)不支持onbeforeunload.
您可能需要限制測試者可以使用的瀏覽器。
您可以嘗試使用數據庫而不是JavaScript來強制實施時間限制。
+-------+-----------+----------+--------+------+
|user_id|question_id|start_time|end_time|answer|
+-------+-----------+----------+--------+------+
你只需要確保(user_id, question_id)
是獨一無二的,如果他們需要超過3分鐘,他們的問題得到了0。
這也可以讓你阻止他們多次回答同一個問題。
這就是唯一的解決方案不要在客戶端做這樣的事情。 – ThiefMaster
即使使用服務器端代碼,也要考慮用戶可能經常無法在Internet中完全識別的可能性。所以如果有人有兩次登錄,這個用戶仍然會繞過你的陷阱。 – BurninLeo
@BurninLeo你說的是非常真實的,很難唯一地標識一個用戶,但是從嘗試使用JavaScript保持用戶在頁面上來看,這仍然是一個巨大的進步。 –
如果您存儲會話中顯示的當前問題,即使用戶單擊回來,它也會始終顯示問題所在的位置。
但是,這顯然會重置(javascript)計時器。爲了解決這個問題,在同一個會話中顯示問題時存儲時間戳,並驗證提交後可能是一個想法。如George Cummins所述,將其與JavaScript「onbeforeunload」結合起來,以通知用戶其行爲的後果。
所以,加載的問題時:
$_SESSION['current_question']['id'] = $question['id'];
$_SESSION['current_question']['timestamp'] = time();
並提交答案時:
if((time() - $_SESSION['current_question']['timestamp']) =< 180)
{
// Decide the amount of points earned
$score = ...
}
else
{
// User took more than 3 minutes, set score to 0;
$score = 0;
}
- 1. 禁止用戶刷新頁面
- 2. 刷新按鈕禁用
- 3. 禁止wxPython GridTableBase刷新?
- 4. 防止用戶刷新
- 5. 按鈕來暫時禁用/停止元標記刷新?
- 6. Swift 2.0:如何禁止當前用戶再次按下按鈕?
- 7. 如何禁用Mac用戶的後退和刷新按鈕?
- 8. 禁用模式中的按鈕刷新
- 9. 禁用按鈕後刷新整數值
- 10. 禁用瀏覽器刷新按鈕
- 11. 禁用按鈕刷新瀏覽器
- 12. 防止客戶端腳本被重新註冊在後退按鈕或刷新
- 13. 停止頁面刷新時我按下提交按鈕
- 14. 強制按F5刷新時,瀏覽器或刷新按鈕
- 15. 按下後退按鈕時強制刷新/刷新
- 16. 刷新,重繪,或刷新用戶控件(UWP)
- 17. Facebook禁止用戶
- 18. 按下按鈕刷新tkinter幀
- 19. 按下按鈕時刷新webview?
- 20. 當按下瀏覽器的刷新按鈕時防止重新插入數據
- 21. 對於「禁用」用戶,HTTP 401未授權或403禁止?
- 22. 禁用/刷新OleDbConnection緩存
- 23. 禁用刷新後uiwebview
- 24. 禁用頁面刷新
- 25. 禁用HTML自動刷新?
- 26. 防止按鈕serverclick在每個頁面上刷新刷新
- 27. 如何在用戶刷新頁面之前禁用提交按鈕?
- 28. 一旦用戶進入特定的網頁,如何禁用刷新按鈕?
- 29. 如何在點擊後禁用按鈕,即使用戶刷新網頁?
- 30. 錯誤_代碼:禁止(403)。 Python的Django的:當用戶登錄刷新頁面
你不應該,當用戶想離開,他/她應該能夠 – Ibu