[JavaScript] Auto Refresh Script - URL wechseln ?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [JavaScript] Auto Refresh Script - URL wechseln ?

    Moin!

    Ich habe ein kleines Auto Refresh Script geschrieben, weil mir die Firefox Lösung nicht gefällt. Dazu öffne ich zwei Frames. Der erste Frame ist für die Seite die refreshed werden soll und der zweite Frame ist für das eigentliche Script, also ne kleine Übersicht wann zb. refresht wird und ne Eingabemaske für die URL. Wenn ich also dort ne url eingeben wird diese im oberen Frame mit parent.frames[0].location.href refresht.
    Soweit alles kein Problem aber nun hätte ich gerne das oben die URL von der aktuellen Seite im Hauptframe angezeigt wird. Denn im moment steht da natürlich nur der aktuelle Pfad zur Refresh Tool Index. Geht das irgendwie ? Oder vieleicht das beim Start des Scriptes zumindest ne url angeben kann, er dort die Seite läd und unten den Frame für das Script hinsetzt ?

    Eigentlich wollte ich das schon mit Bookmarklets lösen allerdings ist das Script ja schon recht komplex und ist nicht komplet in Javascript geschrieben, von daher gestaltet sich das ganze doch als recht schwierig.

    Achso und noch was. Ist es eigentlich möglich, ein Fenster zu öffnen was das Script dann in regelmäßigen Abständen aktualisiert (aus dem alten Fenster herraus ?)

    mfg
    Rumpelstilzchen

  • #2
    Wieso ist das nicht komplett in Javascript? Was brauchst du denn für serverseitige Verarbeitung, um den Inhalt eines Frames zu refreshen?

    Genügt nicht eine HTML+JS-Datei, die einen gegebenen GET-Parameter als src eines iFrames einsetzt und mit setTimeout einen Refresh des Frames auslöst?

    Kommentar


    • #3
      Moin!
      Also die ausgabe ist in html gefasst. Hab mal versucht das ganze per write(); abzuarbeiten, aber irgendwie gibt das nur wirwar. Mir gehen langsam die Ideen aus =)
      Ist natürlich schwer zu erklären ohne Quellcode, von daher hier mal zur besseren Übersicht wovon ich eigentlich rede ;-)

      autorefresh.htm
      Code:
      <html>
      <head>
      <title>Auto Reload</title>
      </head>
      <frameset rows="95%, 5%" framespacing="0" border="0" frameborder="no">
      <frame src="about:blank" id="hauptframe" noresize scrolling="auto">
      <frame src="settings.html" id="timebar" noresize scrolling="no">
      </frameset>
      </html>
      settings.html
      Code:
      <html>
      <head>
      <title>auto refresh - settings</title>
      <style type="text/css">
      <!--
      body, form {
      font-family: Verdana, Arial, Helvetica;
      font-size: 11px;
      font-weight: normal;
      margin: 0px;
      background-color: #EFEFEF;
      }
      
      td {
      font-family: Verdana, Arial, Helvetica;
      font-size: 11px;
      font-weight: normal;
      border-right: 1px solid #D0D0D0;
      padding: 5px;
      }
      
      td.submit {
      font-family: Verdana, Arial, Helvetica;
      font-size: 11px;
      font-weight: normal;
      text-align: right;
      vertical-align: bottom;
      }
      
      input.URL {
      font-family: Verdana, Arial, Helvetica;
      font-weight: normal;
      font-size: 80%;
      }
      select.URL {
      font-family: Verdana, Arial, Helvetica;
      font-weight: normal;
      font-size: 80%;
      -->
      </style>
      <script type="text/javascript">
      <!--
      function refresh()
      {
      clearTimeout(codown);
      countDown(i);
      }
      function abbrechen()
      {
      clearTimeout(codown);
      }
      function weiter()
      {
      codown=window.setTimeout("refresh()", 1000);
      }
      function refreshFrame()
      {
      parent.frames[0].location.href = document.form_settings.URL1.value;
      min = document.form_settings.interval1.value*1;
      max = document.form_settings.interval2.value*1;
      switch(document.form_settings.interval_unit1.selectedIndex)
      {
      case 0: // seconds (s)
      switch(document.form_settings.interval_unit2.selectedIndex)
      {
      case 0: // seconds (s)
      var tem = max-min;
      var a = min+tem*Math.random();
      var interval = Math.ceil(a)*1000;
      break;
      case 1: // minutes (min)
      max = max*60
      var tem = max-min;
      var a = min+tem*Math.random();
      var interval = Math.ceil(a)*1000;
      break;
      default: // not necessary due to fixed selection list
      }
      break;
      case 1: // minutes (min)
      switch(document.form_settings.interval_unit2.selectedIndex)
      {
      case 0: // seconds (s)
      min = min*60
      var tem = max-min;
      var a = min+tem*Math.random();
      var interval = Math.ceil(a)*1000;
      break;
      case 1: // minutes (min)
      min = min*60
      max = max*60
      var tem = max-min;
      var a = min+tem*Math.random();
      var interval = Math.ceil(a)*1000;
      break;
      default: // not necessary due to fixed selection list
      }
      break;
      default: // not necessary due to fixed selection list
      }
      countDown(interval);
      }
      function countDown(time)
      {
      i = time; // to circumvent problem with re-defining parameter value in recursive runs (?)
      document.form_settings.timer.value = (i/1000);
      i = i - 1000;
      if(i <= -1)
      {
      refreshFrame();
      }
      else
      {
      codown=window.setTimeout("refresh()", 1000);
      }
      }
      //-->
      </script>
      </head>
      <body>
      <form action="send" name="form_settings">
      <table><center>
      <tr>
      <td>
      <b>Noch 
       <input type="text" class="URL" size="4" name="timer" style="text-align: center;" readonly>
      <b> Sekunden!</b>
      </td>
      <td>
      <b>URL:</b>
      <input type="text" class="URL" size="30" name="URL1" value="http://www.">
      </td>
      <td>
      </b>Zwischen</b>
      <input type="text" class="URL" size="5" name="interval1" style="text-align: center;" value="30">
      <select class="URL" size="0" name="interval_unit1" title="unit">
      <option class"URL" value="s">Sekunde(n)</option>
      <option class"URL" value="min" selected="selected">Minute(n)</option>
      </select>
      <b>und</b>
      <input type="text" class="URL" size="5" name="interval2" style="text-align: center;" value="30">
      <select class="URL" size="0" name="interval_unit2" title="unit">
      <option class"URL" value="s" >Sekunde(n)</option>
      <option class"URL" value="min" selected="selected">Minute(n)</option>
      </select>
      </td>
      <td class="submit">
      <input type="button" class="URL" value="Neuladen" onclick="refreshFrame()">
      </td>
      <td class="submit">
      <input type="button" class="URL" value="abbrechen" onclick="abbrechen()">
      </td>
      <td class="submit">
      <input type="button" class="URL" value="Weiter" onclick="weiter()">
      </td>
      </tr></center>
      </table>
      </form>
      </body>
      </html>
      mfg
      Rumpelstilzchen
      Zuletzt geändert von Rumpelst1lzchen; 05.08.2006, 18:52.

      Kommentar


      • #4
        Zunächst mal brichst du bitte deinen Code um, so dass man nicht mehr nach rechts scrollen muß. Danke.

        Und dann wirfst du einfach das Frameset weg und versuchst stattdessen folgendes:

        Code:
        <html>
        <head>
        	<title>Auto Reload</title>
        	<style type="text/css"><!--
        		/* hier die ganzen Styles */
        	--></style>
        	<script type="text/javascript"><!--
        		/* hier der angepasste JS-Code */
        	--></script>
        </head>
        <body>
        	<iframe src="about:blank" id="hauptframe"></iframe>
        	<!-- hier alles aus dem Body von settings.html -->
        </body>
        </html>
        Und nun beschreib bitte mal das Problem!
        Zuletzt geändert von onemorenerd; 05.08.2006, 17:43.

        Kommentar


        • #5
          ok, hab mal die ganzen Leerzeichen rausgenommen ... ich hoffe das reicht ? ;-)
          Gut, iframe funktioniert und das ganze ist jetzt in einer Datei (Danke!), aber das eigentliche Problem hab ich leider immer noch.
          Also man startet ja mit der autoRefresh.html und das heißt zb. im moment das bei mir als URL oben in der Adressezeile steht "file:///D:/FinalRC1/autoRefresh.html". Wenn ich jetzt zb. dem Script mitteile das es zb. http://www.irgendwas.de laden soll, dann zeigt er natürlich oben die Seite an. Aber in der Adresszeile bleibt aber file:///D:/FinalRC1/autoRefresh.html und dort möchte ich die Adresse stehen haben die aktuell im Hauptframe ist. Und da liegt das Problem.
          mfg
          Rumpelstilzchen

          Kommentar


          • #6
            Das geht nicht! In der Adresszeile des Browsers steht immer die Adresse der Seite, die er gerade anzeigt. (Ausnahme: Du tippst etwas rein, drückst aber nicht Enter. Hilft dir hier nicht.)
            Änderst du mit window.location den Inhalt des Browserfensters, bist du nicht mehr auf deiner Seite.
            Änderst du mit top.hauptframe.location (oder src?) den Inhalt des iFrames, bleibt das Browserfenster auf deiner Seite und somit auch deren URL in der Adresszeile.

            Kommentar


            • #7
              ok, vielen Dank für Dein Hilfe
              Hatte sowas schon befürchtet =)
              Bleibt wohl nur noch das ganze als Bookmarklet zu schreiben (hab da schon eins gesehen was auf diese weise funktioniert) oder als Erweiterung für Firefox, wobei ich das erstere als einfacher halte.
              mfg
              Rumpelst1lzchen

              Kommentar


              • #8
                hi ...
                ich hab das jetzt soweit hinbekommen *freu*
                Eine kleine Sache fehlt aber noch!
                Also das Script funktioniert folgendermasen

                Die aktuelle Seiten URL wird eingelesen, dann wird das iframe geöffnet und die seite dort "reinkopiert".
                Jetzt möchte ich aber auch noch den Title der Seite voher einlesen.

                Also im moment versuch ich das mit
                til=document.title einzulesen
                und später wieder mit document.title=til
                auszugeben. Klappt aber nicht
                Er zeigt dann nur die URL im Tab an aber nicht nen richtigen Titel
                Hab ich das irgendwie falsch verstanden ?

                Kommentar


                • #9
                  document.title gibt dir den Titel der Seite, die im Browserfenster geladen ist. Das ist deine Refresh-Seite, die das iFrame enthält.

                  An den Titel der Seite im iFrame kommst du mit
                  top.hauptframe.document.title oder
                  document.getElementById('hauptframe').document.title.

                  Bin mir nicht sicher, was die Objekthierarchie betrifft, aber auf jeden fall mußt du die title-Eigenschaft des document-Objekts lesen, dass im iFrame angezeigt wird und das ist nicht das globale document!

                  Kommentar


                  • #10
                    keine chance ... egal wie ich das drehe oder wende ... ich komme da nicht dran
                    laut : "http://forum.de.selfhtml.org/archiv/2000/5/t14644/#m74232"
                    ist der syntax aber richtig.
                    Ich mach morgen weiter, so ein pillepups kram und stunden arbeit
                    trotzdem danke für die Hilfe
                    mfg
                    Rumpelstilzchen

                    Kommentar

                    Lädt...
                    X