07. april 2004 - 08:33
Der er
6 kommentarer og
1 løsning
popup kan man få sådan en væk automatisk igen
// Hvis jeg nu skriver
alert("din session udløber om 2 minutter");
// Kan jeg så få den væk igen automatisk?
Det jeg gerne vil er at jeg 2 minutter før session.timeout viser boxen og vil så når session.timeout er 15 sekunder automatisk refrehser siden.
Måske jeg skal bruge et popup vindue i stedet?
07. april 2004 - 15:41
#1
Under alle omstændigheder skal du have styret timingen !o]
alert-boxe kan kun fjernes ved at brugeren trykker 'Ok', så det er ikke så brugbart til meddelelser, som ikke kræver bruger-indgreb ...
Men umiddelbart lyder det som det du har brug for er en flydende layer, som bliver synlig, når der er 2 minutter af session tilbage (ca. for du kan aldrig gøre den helt sikker, når der skal kommunikeres over indernettet !-)
Altså sådan noget:
<div id="sessDiv" style="position:absolute;left:600px;top:400px;height:75px;width:150px;background:#c70;color:red;font-size:x-large;font-family:vaerdana,sans-serif;display:none;">Din session udløber om ca. 2 minutter</div>
Når du så skriver siden, skriver du et timestamp et sted, som et javascript kan tage fat i, f.eks.
<script type="text/javascript">
var sessTO = <?=session.timeout?>; //eksemplet skal selvfølgelig tilpasses dit script-sprog;
//Og jeg går her ud fra, at du bruger unix-time ligesom javascript, men det er nemt at lave om ...
var t = 0;
var tid = new Date();
tid = tid.getTime() - sessTO;
setTimeout('visTO()',tid-120000);
function visTO(){
if(t==0){
document.getElementById('sessDiv').display='block';
setTimeout('visTO',15000);
t++;
}else if(t==1){
document.getElementById('sessDiv').display='none';
setTimeout('visTO',60000);
t++;
}else
document.getElementById('sessDiv').innerHTML = "Siden vil blive refreshet om 30 sekunder";
document.getElementById('sessDiv').display='block';
setInterval('taelned()',1000);
t = 30;
}
}
function taelned(){
--t;
if(t==0){
document.getElementById('sessDiv').innerHTML = "Nu refreshes siden !-)";
location.reload(true);
}else{
document.getElementById('sessDiv').innerHTML = "Siden vil blive refreshet om "+ t + " sekund" + ((t==1)?"":"er");
}
}