MrSchmidtdtdtdt: PageReload-Funktion "onload" nur EINMALIG ausführen?

Hallo,

ich möchte eine Refresh Funktion, welche die gesamte Seite neu läd beim Seitenaufbau (onload) auslösen, diese soll jedoch nur einmal durchgeführt werden und nicht in eine Refreshschleife springen.

Wie bewerkstellige ich das?

Grüße,
Mr. Schmidtdt

  1. Hallo Mr. Schmidtdt,

    dein Vorhaben könntest Du mittels JavaScript lösen.

    Wenn Du Dir merken möchtest, ob ein bestimmtes Ereignis schon einmal eingetreten ist, kannst Du dies mittels http://de.selfhtml.org/javascript/objekte/document.htm#cookie@title=Cookies oder  vielleicht auch einem http://de.selfhtml.org/javascript/objekte/location.htm#hash@title=Hash-Tag realisieren.

    Aber erklär' mir doch bitte, warum Du direkt nach dem Laden der Seite, diese erneut laden möchtest? Evtl. können wir Dir dann konkreter weiter helfen.

    Herzliche Grüße aus Ellhofen
    Helmut Weber

    --
    -------------------------------------------
    Mode ist eine Variable, Stil eine Konstante
    1. Danke für die schnelle Antwort, ich habe mein Problem mal etwas konkreter formuliert:

      Ich habe ein Iframe dessen Höhe ich gerne dynamisch regulieren lassen möchte, je nach generiertem Inhalt.
      Mein Ansatz besteht darin, dies mittels einer Javascript Funktion zu tun:

      function resizeFrame(f) {  
        f.style.height = f.contentWindow.document.body.scrollHeight + "px";  
      }
      

      Diese rufe ich im <body> des Parents über onload="resizeFrame(document.getElementById('childframe'))" auf.

      Das Ganze funktioniert natürlich immer nur wen das Frameparent aktualisiert wird. Klickt man innerhalb des Iframes nun auf Links die eine Änderung des Inhalts zur Folge haben, bleibt die Framehöhe unverändert.

      Ich möchte nun eine weitere Funktion in den Parent setzen, welche ich onload im childframe rufe. Diese sollte dann im optimalfall feststellen ob das derzeitige Frame zu lang (scrollbar vorhanden) oder zu kurz (?) ist und in diesem Fall einen reload des Parents durchführen. Dieser reguliert dann wiederum die Höhe und verhindert eine Endlosschleife.

      Wie würde eine solche Funktion aussehen?

      Mit freundlichen Grüße,
      Mr.Schmidtdt

      1. Hallo Mr.Schmidtdt,

        warum möchtest Du einen reload das Elternfensters erzwingen, wenn Du eigentlich "nur" die Abmessungen das iFrames bei Bedarf anpassen möchtest?

        Hast Du schon versucht, im Dokument des iFrames bei onload die resizeFrame-Funktion das Elternfensters aufzurufen?

        Herzliche Grüße aus Ellhofen
        Helmut Weber

        --
        -------------------------------------------
        Mode ist eine Variable, Stil eine Konstante
        1. Hallo,

          mit welchem Parameter würde ich die Funktion den vom childframe aufrufen? einfach "this"? also: javascript:parent.resizeFrame(this) ?

          Grüße,

          1. Ich stend da wohl tatsächlich ein wenig auf dem Schlauch. Theoretisch hast du recht, es reicht die resize-Funktion onload vom iframe aus aufzurufen.. aber ich benutze offensichtlich einen falschen parameter..
            ich habe hierzu mal ein alert an das ende der funktion angehangen und bekomme dieses nur zu sehen wenn ich den parent neu lade.. d.h. ich benutze einen falschen parameter beim aufruf vom frame aus..?

            Hallo,

            mit welchem Parameter würde ich die Funktion den vom childframe aufrufen? einfach "this"? also: javascript:parent.resizeFrame(this) ?

            Grüße,

            1. Hallo Mr.Schmidtdt,

              wenn es sich immer nur um das gleiche iFrame handelt, kannst Du dieses in der JavaScript-Funktion direkt ansprechen, und musst es nicht per Parameter übergeben:

              <script type="text/javascript">
                  function resizeFrame() {
                      f = document.getElementById('childframe');
                      f.style.height = childframe.document.body.scrollHeight + 'px';
                  }
              </script>

              Des Einbinden des iFrame sieht ungefähr so aus:
              <iframe id="childframe" name="childframe" scrolling="no" frameborder="0" width="200" height="240" src="iframe.html"></iframe>

              Jetzt brauchst Du nur noch in der iframe.html die resizeFrame-Funktion aufrufen:
              <body onload="parent.resizeFrame()">

              So ungefähr sollte es gehen. Natürlich bin ich jetzt nicht auf die Gefahren bei deaktivierten JavaScript oder ähnlichen eingegangen. Aber danach hast Du ja auch gar nicht gefragt ;-)

              Herzliche Grüße aus Ellhofen
              Helmut Weber

              --
              -------------------------------------------
              Mode ist eine Variable, Stil eine Konstante
              1. Hallo,

                vielen Dank, das hat so nun funktioniert!
                Komischerweise funktioniert das Script immer direkt beim vergrößern des Frames, wird der Inhalt jedoch weniger, muss ich immer manuel aktualisieren um eine Anpassung des Frames zu bekommen.
                Hast du hierfür vielleicht auch eine Lösung?

                MFG

                1. Hallo Mr.Schmidtdt,

                  ich habe kurz einen Test aufgebaut, und dein Problem nicht reproduzieren können (IE8 und Firefox 6). Evtl. hast Du ein Cache-Problem oder ähnliches?

                  Herzliche Grüße aus Ellhofen
                  Helmut Weber

                  --
                  -------------------------------------------
                  Mode ist eine Variable, Stil eine Konstante