NEWS
Image reload
-
ich suche eine Möglichkeit ein Image alle x Stunden neu zu laden
ich habe ein widget "jqui - html - dialog" mit folgendem Code unter "HTML"
` >
onload='setTimeout(function() {src = src.substring(0, (src.lastIndexOf("t=")+2))+(new Date()).getTime()},3600000)'
onerror='setTimeout(function() {src = src.substring(0, (src.lastIndexOf("t=")+2))+(new Date()).getTime()}, 5000)'
alt='' /> `
erwarte dass alle 3600000 milisekunden das teil neu geladen wird .. macht es aber nicht…
jemand eine Idee wie es gehen könnte ??
-
Also wenn es nur um ein Bild geht, kannst du doch das Widget "Image" nehmen. Dort kann der Intervall für Aktualisierung ja eingetragen werden.
Den Intervall dann über das Feld eintragen, da der Slider nicht weit genug reicht. Gespeichert wird der Wert dann aber auf alle Fälle.
-
Also wenn es nur um ein Bild geht, kannst du doch das Widget "Image" nehmen. Dort kann der Intervall für Aktualisierung ja eingetragen werden.
Den Intervall dann über das Feld eintragen, da der Slider nicht weit genug reicht. Gespeichert wird der Wert dann aber auf alle Fälle. `
kurz und knapp…NEIN...
ich brauche genau das "jqui - html - dialog" Widget... ich mache noch paar sachen mit den dialog bei draufklicken..
p.s.. mit dem Image weiss ich auch das es geht..es ist aber nicht klickbar
-
 ```` `
Fast korrekt, hier eine kurze Erklärung was falsch läuft:
src verweist nicht (wie du vermutlich erwartest) auf die URL des -Objekts, sondern auf eine (nicht definierte) Variable.
Auf die URL des kannst du in onload/onerror mit ****this.****src zugreifen.
Jetzt ist das Problem aber, dass setTimeout eine Funktion des Window-Objekts ist, d.h. in der Callback-Funktion verweist this nicht mehr auf das .
Daher musst du im Event-Handler den Wert von this zwischenspeichern, etwa so (nachher alles in eine Zeile zusammenfassen):
onload = " var that = this; setTimeout(function() { that.src = that.src.substring([...]) }, 3600000); "
-
ich hasse javascript…
aber eher so
onload = " setTimeout(function() { var that = this; that.src = that.src.substring([...]) }, 3600000); "
-
Nein, eben nicht so. Die Zuweisung ist in deinem Code unnötig, da könntest du auch direkt this verwenden.
Die Variable that muss außerhalb setTimeout den Wert von this zugewiesen bekommen, da sie dort noch auf das img verweist.
Innerhalb der Callback-Funktion verweist this auf das Window-Objekt. Die vorherige Zuweisung stellt sicher, dass du Zugriff auf das img hast.
-
axo