Link to home
Start Free TrialLog in
Avatar of 1234_new
1234_new

asked on

refresh page

I'm looking for a code the will do the following....
It will refresh the page depending on the selection from a drop down menu...

Like..
         <select name="Refresh" size="1">
               <option value="0" selected>Don't reload automatically</option>
                <option value="1">Reload page every minute</option>
                <option value="2">Reload page every 2 minutes</option>
                <option value="5">Reload page every 5 minutes</option>
                <option value="10">Reload page every 10 minutes</option>
                <option value="15">Reload page every 15 minutes</option>
          </select>
Avatar of James Rodgers
James Rodgers
Flag of Canada image

are you using serverside code also?

<select name="Refresh" size="1" onChange="setRefreshRate(this.value)">
             <option value="0" selected>Don't reload automatically</option>
               <option value="1">Reload page every minute</option>
               <option value="2">Reload page every 2 minutes</option>
               <option value="5">Reload page every 5 minutes</option>
               <option value="10">Reload page every 10 minutes</option>
               <option value="15">Reload page every 15 minutes</option>
          </select>

<script>
function setRefreshRate(iRate){
    window.location.href=window.location.href+'?refRate="+iRate;
}
</script>

and on the server side you can output a metatag
(coldFusion code)
<cfif isDefined("url.refRate") and url.refRate gt 0>
<META HTTP-EQUIV=Refresh CONTENT="#evaluate(60*iRate)#;URL=url/To/Refresh/">
</cfif>

asp (not a lot of asp coding latly so might need some touch up)

<%if(request("iRate") > 0) then %>
<META HTTP-EQUIV=Refresh CONTENT="<%=60*iRate%>;URL=url/To/Refresh/">
<%end if%>

perl (worse than my asp)

my $iRate = param('iRate');
my $totalRate=$iRate*60;
print "<META HTTP-EQUIV=Refresh CONTENT=\"$totalRate;URL=url/To/Refresh/\">"
here is example with cookie:
========================
<html>
<body bgcolor=ffffff>
<script>
function runit()
{
      if(getc("myRefresh"))
      {
            if(getc("myRefresh")*1>0)
            setTimeout("document.location=document.location;",getc("myRefresh")*60000);
      }
}
function getc(name)
{
      var rs=null;var mc=" " + document.cookie + ";";
      var sn=" " + name + "=";var sc=mc.indexOf(sn);var ec;
      if (sc!=-1) {sc+=sn.length;ec=mc.indexOf(";",sc);
      rs=unescape(mc.substring(sc,ec));}return rs;
}
function setc(name,value) {document.cookie=name+"="+escape(value);}
window.onload=mklastselected;
function mklastselected()
{
      if(getc('myRefresh')){document.forms[0].myRefresh.value=getc('myRefresh')}
      runit();
}
function fcounter()
{
      if(getc('counter'))
      {
            var counter=getc('counter')*1;
            document.write("counter="+counter);
            counter++;
            setc("counter",counter);
      }
      else
      {
            document.write("counter="+0);
            setc("counter",0);
      }
}
fcounter();
function resetAll()
{
      setc("counter",0);
      setc("myRefresh","null");
      document.location=document.location;
}
</script>

<form>
     <select name="myRefresh" size="1" onchange='setc("myRefresh",this.value);runit();'>
            <option value="null" selected>Don't reload automatically</option>
              <option value="1">Reload page every minute</option>
              <option value="2">Reload page every 2 minutes</option>
              <option value="5">Reload page every 5 minutes</option>
              <option value="10">Reload page every 10 minutes</option>
              <option value="15">Reload page every 15 minutes</option>
         </select>
             <input type=button value=reset onclick=resetAll()>
</form>

</body>
</html>
ASKER CERTIFIED SOLUTION
Avatar of Tacobell777
Tacobell777

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of JakobA
JakobA

>> Tacobell777
    Sorry, but that wont do. As the page reloads all running javascript processes are unloaded, so you would get only one reload for each time the user chose an option in the select.
LOL
Seems like the Author thought it would do the trick...
This may not be the most graceful way of doing it but it will work.  Just replace "reLoadTest.html" with the url of the page.  What I'm doing is saving the setting by appending it to the end of the url and reading it in on onload.

<html><head><title></title>
<script language="javascript">
<!--
function doLoad(){
  url = window.location.href;
  if(url.search(/\?/g) != -1){
    val = url.split("?");
    set = val[1].split("=");
    time = document.forms[0].elements[0].options[set[1]].value;
    timeOut = setInterval("window.location.reload()", time * 60000);
    document.forms[0].elements[0].selectedIndex=set[1];
  }
}
function fnSetTimeout(item){
  if(item.selectedIndex==0){
    window.location.href="reLoadTest.html";
  }else{
    window.location.href="reLoadTest.html?Value=" + item.selectedIndex;
  }
}
//-->
</script>

</head><body onLoad="doLoad();">
<form>
  <select name="Refresh" size="1" onChange="fnSetTimeout(this);">
    <option value="0" selected>Don't reload automatically</option>
    <option value="1">Reload page every minute</option>
    <option value="2">Reload page every 2 minutes</option>
    <option value="5">Reload page every 5 minutes</option>
    <option value="10">Reload page every 10 minutes</option>
    <option value="15">Reload page every 15 minutes</option>
  </select>
</form>
</body></html>