iframe automatisch aktualisieren lassen

ComFreek

Mod | @comfreek
Moderator
Kommen wieder Fehler in der Fehlerkonsole?

Edit: Bei mir kommt alle 3 Sekunden folgender Fehler:
Code:
Uncaught TypeError: Cannot call method 'reload' of undefined

Probier mal folgenden Code:
HTML:
<script type="text/javascript">
function RefreshIFrame()
{
  document.getElementById("Tisch1").window.location.reload();
}
window.setInterval("RefreshIFrame()", 3000);
</script>
 
Zuletzt bearbeitet:

Quaese

Moderator
Moderator
Hi,

der Zugriff auf das window-Objekt ist in den Browsern unterschiedlich. Versuch es mal hiermit:
Code:
<script type="text/javascript">
function RefreshIFrame(){
  if(document.all && !window.opera)
    document.frames['Tisch1'].location.reload();
  else
    document.getElementById("Tisch1").contentWindow.location.reload();
}
window.setInterval("RefreshIFrame()", 3000);
</script>
Ciao
Quaese
 

ComFreek

Mod | @comfreek
Moderator
@Quaese: Funktioniert, zumindest im Google Chrome!

Edit: Funktioniert auch im IE, Safari, Opera und Firefox!
 

ComFreek

Mod | @comfreek
Moderator
@Schpringer: Passiert bei dir wirklich gar nichts? Eventuell liegt das an der Quelle des Frames.
Oder hast du wirklich den Code von Quaese übernommen?


PS: Wenn man immer auf die Buttons drücken muss, ist das auch doof.
 

Sven Mintel

Mitglied
Moin,

ich habe das mal überflogen, und keine eindeutige Info darüber gefunden, ob nun das Problem mit den unterschiedlichen Domains beseitigt ist.
Für den Fall, dass es nicht beseitigt werden kann, hier ein anderer Lösungsansatz:
Die Same Origin Policy kommt ja zum tragen, wenn Dokument von Domain A auf ein Dokument von Domain B zugreifen will.

Man muss die Sache also irgendwie reloaden, ohne auf das Dokument zuzugreifen.

Wie das gehen kann....kurzer Beispielcode:
Code:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; 
                                charset=ISO-8859-1"   />
<meta name="author"             content="doktormolle" />
<meta name="date"               content="2010-09-03" />
<title>Test</title>
<script type="text/javascript">
<!--
function reloadFrame(frameElement)
{
  frameElement.parentNode.replaceChild(frameElement.cloneNode(true),frameElement);
}
window.onload=function(){
  setInterval(function(){reloadFrame(document.getElementsByTagName('iframe')[0]);},5000);
}
//-->
</script>
</head>
<body>
<iframe src="http://doktormolle.de/temp/365897/" width="200" height="80"></iframe>
</body>
</html>

Das Dokument im iFrame wird nicht angefasst, es wird lediglich das aktuelle iFrame-Element durch eine Kopie seiner selbst ersetzt, der Nebeneffekt: das Dokument im iFrame wird neu geladen :)

Beachtet, dass ich von Element spreche. Es ist also das DOM-Element-Objekt <iframe> gemeint, und nicht das window-Objekt, welches das iFrame ja auch ist.
 

Schpringer

Mitglied
@ComFreek Ja es passiert tatsächlich nichts. Ich habe den Code von Quaese übernommen..

@ Sven Mintel Wie baue ich nun den Code am besten ein? Kann ich einfach Den Script Bereich übernehmen und das "iframe" durch die ID des iframes ersetzen? Muss ich die Meta daten auch übernehmen?

Vielen Dank euch beiden. :)

EDIT: @ Sven Mintel Schein zu funktionieren :) Kann ich auch mehrere iframes auf einer Seite ansteuern? Oder werden automatisch alle neu geladen?
 
Zuletzt bearbeitet:

Sven Mintel

Mitglied
EDIT: @ Sven Mintel Schein zu funktionieren :) Kann ich auch mehrere iframes auf einer Seite ansteuern? Oder werden automatisch alle neu geladen?

Du kannst die Funktion reloadFrame() so oft aufrufen, wie du willst.
Als Parameter erwartet sie das <iframe> als Element-Objekt, also z.B.

document.getElementById('Tisch1')
document.getElementById('Tisch5')

oder aber auch
document.getElementsByTagName('iframe')[0]
..oder sonstige Methoden/Member, die ein Element-Objekt zurückliefern(node.nextSibling,document.getElementsByName,node.lastChild usw.)
 
Zuletzt bearbeitet:

Schpringer

Mitglied
Cool :) Vielen Dank für deine Hilfe :)

Auch dir ComFreek für deine Bemühungen.

Ich schätze das sehr, dass es so hilfsbereite Menschen gibt. Nun ist das Turnier zwar gleich vorbei, aber es kommt noch eines im Oktober. Dann läuft es von Anfang an richtig ;)

Nochmals danke euch :)

Gruss aus der Schweiz
 

miguel778

Grünschnabel
Hallo, ist zwar schon ein sehr altes Thema, aber für mich heute sehr relevant.

Mein IFrame aktualisiert sich zwar alle 3 Sekunden aber das ständige aufflackern ist unpassend - gibt es da eine andere Möglichkeit das IFrame zu aktualisieren ohne, dass es derart "stört" ?

Was die Auswahl der Browser angeht, bin ich frei, d.h. mit dem wo es am besten geht, würde ich es auch nutzen.

Für jede Hilfe bedanke ich mich jetzt schon mal !

Grüsse
MM