Stvar funkcionira tako da postavim setInterval kojim pozivam funkciju za random rotiranje, dok korisnik ne klikne na gumb za sljedeću (tada se radi clearInterval i dalje korisnik sam lista - to radi ok). Xml datoteka mi se kreira pomoću php-a, funkcijom koja prima kao vrijednost parametra 0 za random odabir slike.
Problem je sa internet explorerom 8, koji kad se bira random slika, uvijek odabere istu.
Primijetio sam da ako u drugom tabu pozovem php datoteku koja generira xml, te mi se generira npr. slika broj 5, prebacim se na tab sa webom, u ie8 će random odabrati baš sliku 5. Tako i za sve ostale primjere.
Da pokušam pojasniti što sam zaključio.
Moguće je da ie8 ne radi novi request za već učitanu istu datoteku? Ili radi neki cache xml datoteke, i ako se pozove ista xml datoteka on je ne učitava ponovno?
Putanja do datoteke ako je odabran random je ovakva
var xml_dat = base_url + "index.php/header_slike_xml/index/0";
Kod klika na sljedeću poziva se uvijek druga datoteka, i stvar funkcionira.
var xml_dat = base_url + "index.php/header_slike_xml/index/" + sljedeca;
Ovu varijablu sljedeća dobivam iz xml-a (uzimam broj trenutne slike i uvećavam za 1).
U nastavku dio ajaxa:
function new_XHR() { // kreiranje novog xml http requesta
var xhr;
try
{
xhr = new ActiveObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
xhr = new ActiveObject("Microsoft.XMLHTTP");
}
catch(E)
{
xhr = false;
}
}
if (!xhr && typeof XMLHttpRequest != 'undefined')
xhr = new XMLHttpRequest;
return xhr;
}
function AjaxHeaderSlike(tipa) {
var tip = tipa; // 1 - sljedeća, 0 - random
myxhr = new_XHR();
if (tip == 0) {
var xml_dat = base_url + "index.php/header_slike_xml/index/0";
} else if (tip == 1) {
sljedeca++;
var xml_dat = base_url + "index.php/header_slike_xml/index/" + sljedeca;
}
myxhr.onreadystatechange = AjaxHeaderSlikeCb;
myxhr.open('GET', xml_dat);
myxhr.send(null);
}
Kako riješiti ovaj problem? Da napomenem kako skripta uredno radi u ff, operi i safari-u.