As sometimes happens, I got quite carried away with this one. You may prefer my version posted just before this post. It has almost all the functionality of this version but is in a much rougher form that might be easier to highly customize, though this version should be easier to just slip in wherever you want it and has the advantage of leaving no footprint on the page if javascript is disabled and should work in older IE versions:
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">
<html>
<head>
<title>User's Select Refresh Rate w/counter - Demo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<style type="text/css">
/* Begin Styles for User's Select Refresh Rate w/counter */
#reCounter b { /* Set Style for 'Refresh Disabled' Message */
color:red;
background-color:white;
font-weight:normal;
}
#refreshCounter { /* Set these two styles for Select Refresh Counter Container */
border-collapse:collapse;
border:1px solid black;
font-family:tahoma,verdana,arial,sans-serif;
font-size:.9em;
}
#refreshCounter td {
padding:10px;
}
#preCount { /* These three Styles should remain unchanged */
visibility:hidden;
}
#preC, #sufC {
display:none;
}
/* End Styles for User's Select Refresh Rate w/counter */
</style>
</head>
<body>
<script type="text/javascript">
/*User's Select Refresh Rate w/counter - script
© John Davenport Scheuer as first seen in
http://www.dynamicdrive.com/forums
under user name: jscheuer1
This credit must remain on your page
for legal use */
//Set number of days persistence for Cookie
var pDays=7
//NOTE: HTML allowed in Set Strings
//Put text all on one line
//Set String for select header:
var selHead="Set Page Refresh Frequency:<br>"
//Set String for Explanation of this setting to users:
var reExp="<br>Your choice will persist for "+pDays+" Days, site wide, on pages displaying the<br>above select box, unless changed or you clear your browser's cookies.<br>"
//Set String for Refresh Disabled:
var reDis="Refresh Disabled"
//Set String for counter prefix text:
var prefixC="There are"
//Set String for counter suffix text:
var suffixC="seconds left until page refresh."
/////////////////////Stop Editing Script///////////////////
//Begin http://www.quirksmode.org Cookie Code:
function createCookie(name,value,days)
{
if (days)
{
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; path=/";
}
function readCookie(name)
{
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for(var i=0;i < ca.length;i++)
{
var c = ca[i];
while (c.charAt(0)==' ') c = c.substring(1,c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
}
return null;
}
function eraseCookie(name)
{
createCookie(name,"",-1);
}
//End http://www.quirksmode.org Cookie Code
var reIt, countRe, reCounter, text1, text2, opt
function doit(){
if (window.location.reload)
window.location.reload( true );
else if (window.location.replace)
window.location.replace(unescape(location.href))
else
window.location.href=unescape(location.href)
}
function startUp(){
text1=document.getElementById? document.getElementById('preC').style : document.all['preC'].style
text2=document.getElementById? document.getElementById('sufC').style : document.all['sufC'].style
clearInterval(countRe)
if (readCookie('resetInt')!=null){
opt=(readCookie('resetInt')/1000).toString(10).length
text1.display=text2.display='inline'
reCounter=document.getElementById? document.getElementById('reCounter') : document.all['reCounter']
reCounter.innerHTML=padTo(readCookie('resetInt')/1000)
var opts=document.getElementById? document.getElementById('selRe').options : document.all['selRe'].options
for (var i_tem = 0; i_tem < opts.length; i_tem++)
if (opts[i_tem].value==readCookie('resetInt')/1000)
opts.selectedIndex=i_tem
countRe=setInterval("reCounter.innerHTML=padTo(parseInt(reCounter.innerHTML, 10)-1)", 1000)
reIt=setTimeout("doit()", readCookie('resetInt'))
}
else
return;
}
function padTo(val){
var val=val.toString(10)
var preCount=document.getElementById? document.getElementById('preCount') : document.all['preCount']
preCount.innerHTML=val.length==1&&opt==3? '00' : (val.length==2&&opt==3)||(val.length==1&&opt==2)? '0' : ''
return val
}
function setRe(val){
clearTimeout(reIt)
if (val==0){
text1.display=text2.display='none'
clearInterval(countRe)
reCounter.innerHTML='<b>'+reDis+'</b>'
eraseCookie('resetInt')
return;
}
createCookie('resetInt', val*1000, pDays)
startUp();
}
onload=startUp;
with (document){
write('<table id="refreshCounter"><tr><td><span>'+selHead+'</span>')
write('<select id="selRe" onchange="setRe(options[selectedIndex].value)">')
write('<option value="0" selected>No Refresh</option>')
write('<option value="60">1 Minute</option>')
write('<option value="120">2 Minute</option>')
write('<option value="300">5 Minute</option>')
write('</select>')
write('<span>'+reExp+'<span id="preC">'+prefixC+' </span><span id="preCount"></span><span id="reCounter"><b>'+reDis+'</b></span><span id="sufC"> '+suffixC+'</span></span>')
write('</td></tr></table>')
}
</script>
</body>
</html>
Bookmarks