Limites de tempo controlados por script.
Esta técnica está relacionada com:
O objectivo desta técnica é notificar os utilizadores de que está prestes a terminar o tempo para completar uma interacção. Quando os scripts fornecem uma funcionalidade que tem limites de tempo, o script pode incluir uma funcionalidade para avisar o utilizador de que os limites de tempo estão iminentes e fornecer um mecanismo para solicitar mais tempo. No mínimo 20 segundos antes de ocorrer o limite de tempo, o script fornece uma caixa de diálogo de confirmação que indica que o limite de tempo está iminente, e pergunta ao utilizador se pretende mais tempo. Se a resposta do utilizador for "sim", o limite de tempo é redefinido. Se a resposta for "não", ou se o utilizador não responder, o limite de tempo expira.
Esta técnica envolve limites de tempo definidos através do método window.setTimeout()
. Se, por exemplo, o limite de tempo for definido para expirar em 60 segundos, pode definir o limite de tempo para 40 segundos e fornecer a caixa de diálogo de confirmação. Quando a caixa de diálogo de confirmação surge, um novo limite de tempo é definido para os restantes 20 segundos. Ao expirar o "limite do período de tolerância”, é executada a acção que deveria ter sido executada no final do limite de tempo de 60 segundos.
Uma página com as cotações da Bolsa utiliza o script para actualizar a página a cada 5 minutos, para garantir que as estatísticas mais recentes permaneçam disponíveis. Vinte segundos antes de o período de cinco minutos expirar, surge uma caixa de diálogo de confirmação a perguntar se o utilizador necessita de mais tempo antes de a página actualizar. Isto permite ao utilizador ter conhecimento da actualização iminente e, se assim o pretender, evitá-la.
Código Exemplo:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"<url>http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</title>">
<html lang="en">
<head>
<title>Stock Market Quotes</title>
<script type="text/javascript">
<!--
function timeControl() {
// set timer for 4 min 40 sec, then ask user to confirm.
setTimeout('userCheck()', 280000);
}
function userCheck() {
// set page refresh for 20 sec
var id=setTimeout('pageReload()', 20000);
// If user selects "OK" the timer is reset
// else the page will refresh from the server.
if (confirm("This page is set to refresh in 20 seconds.
Would you like more time?"))
{
clearTimeout(id);
timeControl();
}
}
function pageReload() {
window.location.reload(true);
}
timeControl();
-->
</script>
</head>
<body>
<h1>Stock Market Quotes</h1>
...etc...
</body>
</html>
Numa página Web que tenha um limite de tempo controlado por um script:
Carregue a página e programe um temporizador com 20 segundos a menos que o limite de tempo.
Quando o temporizador parar, verifique se é apresentada uma caixa de diálogo de confirmação a avisar que o limite de tempo está prestes a expirar.
O passo 2 é verdadeiro.