Iframe mit random content

VCF

Mitglied
Hallo :)

Ich habe hier ein kleines Script, welches mir zufällige Inhalte in einen Inlineframe lädt sobald die Seite aktualisiert wird. Die zufälligen Inhalte sind ganz einfach vorgefertigte html- Dokumente.

Nun funktioniert das an und für sich ganz prächtig, bis auf einen kleinen Schönheitsfehler, welcher mich ein wenig nervt. Es kommt oft vor, dass ein und der selbe Inhalt bei mehrmaligem Aktualisieren, öfter angezeigt wird. Natürlich ist mir schon klar, dass diese Wahrscheinlichkeit mit steigender Anzahl von Anzeigemöglichkeiten (aktuell sind es ja nur 4) sinken wird, jedoch wäre es schön, wenn zumindest nicht direkt hintereinander, zweimal das gleiche Angezeigt wird.

Ich habe nun schon herum gespielt und versucht, die "array-position" des letzten angezeigten Inhalts zu speichern und in einer If-Schleife abzufragen und gegebenenfalls solange eine weitere zufällige zahl errechnen zu lassen, bis diese nicht mehr der vorhergehenden entspricht und somit jedes mal einen neuen Inhalt anzeigen zu lassen --> sodass eben nie zweimal hintereinander das gleiche kommt.

Wie ihr euch denken könnt, hat das ganze nicht richtig funktioniert und nun wollte ich euch mal um eure Meinung und ggf. Hilfe bitten.

Hier ist noch der unveränderte Originalcode, also ohne meine kläglichen Versuche:

HTML:
 <script language="JavaScript1.2">



var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1
var dom=document.getElementById&&navigator.userAgent.indexOf("Opera")==-1



var iframeprops='width=600 height=300 marginwidth="0" marginheight="0" hspace="0" vspace="0" frameborder="0" scrolling="no"'


var randomcontent=new Array()
randomcontent[0]="tip1.html"
randomcontent[1]="tip2.html"
randomcontent[2]="tip3.html"
randomcontent[3]="tip4.html"



if (ie||dom)
document.write('<iframe id="dynstuff" src="" '+iframeprops+'></iframe>')

function random_iframe(){
if (ie||dom){
var iframeobj=document.getElementById? document.getElementById("dynstuff") : document.all.dynstuff
iframeobj.src=randomcontent[Math.floor(Math.random()*randomcontent.length)]
}
}

window.onload=random_iframe

</script>

In diesem Sinne: Über ein bisschen Hilfe würde ich mich sehr freuen! :) Dankeschön
 
Hi
Dein Versuch geht in die richtige Richtung!
Allerdings ist die Frage, wie du die Arrayposition gespeichert hast. Bei einem Reload der Seite sind nämlich alle JS-Variablen weg. Aus dem Stehgreiff fallen mir zwei/drei Arten ein um die Arraypossition zwischenzuspeichern:
- Cookies, Arraypos auslesen. Andere Pos auswählen, neue Pos in Cookie speichern
- via Ajax. Sende die Pos zu PHP, PHP speichert die Variable in einem File. Dann beim Reload wieder PHP nach der Pos anfragen
- Web Storage / Sessionstorage (HTML5, ältere Browser haben damit ein Problem)
- Hashtag in der URL


Alles hat Vor und Nachteile. Wenn die Ausgabe eh via PHP läuft, dann kannst du es auch gleich bei der Ausgabe mitgeben (und in einer Session zwischenspeichern).
Wenn du kein PHP brauchst dann würde ich wohl auf Cookies oder Web Storage (IE8+) zugreiffen.
Hashtag fände ich nicht so schön.
 

Neue Beiträge

Zurück