• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

IE lädt javascripts nicht neu

Status
Für weitere Antworten geschlossen.

heureka

Neues Mitglied
Hallo,

Meine HTML-Seite sieht ungefähr so aus:

Code:
<table>
<tr>
<td>
<script type="text/javascript" src="http://meinserver.de/GetJS.cgi?par1=xxx&par2=yyy"></script>
</td>
</tr>
<tr>
<td>
<script type="text/javascript" src="http://meinserver.de/GetJS.cgi?par1=abc&par2=zzz"></script>
</td>
</tr>
<tr>
<td>
<script type="text/javascript" src="http://meinserver.de/GetJS.cgi?par1=tgm&par2=xyz"></script>
</td>
</tr>
</table>

Wenn ich F5 drücke wird die Seite oftmals nicht aktualisiert!

Ich habe dann versucht die script-Tags abzuwandeln, z.B.:

Code:
<script type="text/javascript">document.write("<script type='text/javascript' src='http://meinserver.de/GetJS.cgi?par1=tgm&par2=xyz[COLOR="Red"]&time=" + (new Date).getTime() [/COLOR]+ "'><\/script>");</script>

... damit der Url jedes Mal anders aussieht, aber da dürfte document.write Probleme bereiten, weil es anscheinend zu früh die Seite löscht :-(

Am Server habe ich Caching deaktiviert. Ich weiß nicht mehr was ich noch machen kann.

Die Meta-Angaben bezüglich Caching in der HTML-Webseite haben anscheinend auch keine Auswirkung!

Die IE Developer Toolbar hat ja Funktion "Immer vom Server holen" oder so, aber auch das bringt nichts.

Bitte um Tipps und Tricks.

Danke und lg.
 
<script> in <script> zu schreiben wird nichts bringen. Evtl. musst du no-cache-Header für die JS-Dateien senden.
 
Gibt es denn keine Möglichkeit einem <script src=...> Url die aktuelle Zeit als Urlparameter anzuhängen?
Sicher. Beispiel PHP:
HTML:
<script type="text/javascript" src="http://meinserver.de/GetJS.cgi?var1=<?php echo date('His'); ?>">
Mfg
 
Ich meinte aber, dass die Uhrzeit am Client dem src-Url angefuegt wird, damit quasi immer ein neuer Url aufgerufen wird und nicht einer aus dem Cache.
 
Kommt drauf an. Mit Javascript ist das möglich indem du den Link eine Methode anfügst die, window.location benutzt. Sowas wie

HTML:
<a onclick="goUrl('test.php')">Klick mich </a>
Code:
function goURl(url) {
 var date = new Date();
 window.location = url+"?time="+date.getTime();
}
So bekommst du den unix timestamp mitgegeben. Die Zeit wird jedoch vom Client ausgelesen.
Den unixtimestamp kannst du in php mit date()umwandeln in ein datum und zeit
Code:
$datum = date("H:i:s",$_GET['time']);
Hoffe das hilft

Natürlich ist der User damit auf Javascript angewiesen. Es gibt betsimmt noch eine schönere Methode wo er dies nicht ist :)
Wollte nur nich href beschreiben, da der user bei zu schnellem klicken sonst trotzdem auf die href seite kommt
 
Ja schon, aber meine Scripttags werden ja während dem body-onload geladen.
Somit kann ich kein onclick verwenden, oder stehe ich auf der Leitung?
 
Die Funktion wird ja trotzdem nicht ausgeführt (Es sei denn du läst sie beim laden ausführen) Der Script teil mit der Funktion, den ich gepostet hab gehört auch in den head Teil :)
 
Die Zahl hat recht. Grade verpennt. Natürlich ist seine Lösung wesentlich eleganter, da du dort kein javascript brauchst :D
 
Dann funktioniert nur die Javascript Methode. Aber erklär mal wieso du nicht die PHP variante nehmen willst. Denn die uhrzeit die du dabei erhälst, ist fast die selbe(+-2 Sekunden), wenn die Uhrzeit des Clients richtig gestellt ist.
 
Weil alles nichts half. Weder dan anfügen der Zeit, noch das deaktivieren des Browsercaches oder Servercaches.

Einziges was jetzt endlich geholfen hat, war das Schlüsselwort "defer" in jedem einzelnen script-Tag!

Vielleicht brauchts ja wieder mal jemand...

Vielen Dank für eure Tipps!
 
Ich kann das zwar nicht nachvollziehen (allerdings nutze ich seltenst den IE und noch seltener mit eigeschaltenem JS), doch defer hat nichts mit dem Cache zu tun.
<strike>Damit symbolisierst du dem Browser nur, dass er nicht warten muss und das das eingebundene Skript keine Ausgabe mit document.write macht. </strike>

EDIT:Es gibt unterschieldiche Aussagen über defer, aber die richtige scheint zu sien, dass Skript wartet mit der Ausführung, bis die Seite geladen wurde.

Kann es sein, dass du in dem Skript versuchst auf eine Element zu zugreifen, das noch nicht existiert?

Noch ein EDIT: Mit deinem Orginalcode kann defer nicht funktionieren
 
Zuletzt bearbeitet von einem Moderator:
Status
Für weitere Antworten geschlossen.
Zurück
Oben