Avatar billede yoka Nybegynder
14. marts 2010 - 21:48 Der er 1 løsning

alert() og if ændrer behaviour?

Hey med jer!


Argh, den er sejlet helt ned. Jeg er lidt rusten til js, men altså jeg forstår virkelig ikke hvad der foregår i mit script!

Jeg er igang med at lave et lille simpelt "oldschool ajax" script der:



2) sætter iframe src (får den til at loade side i iframen)
3) kopier iframe indhold over i div på siden, og sletter derefter iframe indhold

info:
handler() bliver kaldt iframe onLoad.
jeg bruger lidt mootools til DOM navigation).



mysterier:

1)
counteren på handleren skal forhindre feedback loop firefox: iframe OnLoad > handler() > ændrer iframe src som firefox opfatter son onLoad igen. (det er i hvert fald det jeg tror der sker)

men det virker ikke. Hvis den kun må løbe igennem 1 gang sker der ikke noget; Iframen bliver ikke loadet over i div'en. Hvis jeg fjerner count++, så virker det, iframen bliver loadet over i div'en men til gengæld er der feedback loop.

Tilgengæld hvis jeg putter en alarm("hi") ind i copyBuffer så virker det pludselig, med counteren på. Dvs: det virker kune hvis løkken bliver løbet igennem mere en 1 gang, eller der er en alarm i copybuffer!??



2) koden er lavet udfra en længere kode. Der er en lille "if" jeg ikke forstår hvad gør i copyBuffer:

if (window.frames['buffer'] && $('display') )

hvis jeg fjerner den så virker scriptet ikke i safari og chrome!?



og her den lille kode:


count=0; //
function handler(){

    if (count==0){
    copyBuffer();
        count++
}
       
}

function copyBuffer(){

    $('buffer').set('src','http://www.digibutik.dk/185');

    if (window.frames['buffer'] && $('display') ) { // what does this do??
        $('display').innerHTML = window.frames['buffer'].document.body.innerHTML;
        window.frames['buffer'].document.body.innerHTML="";
    }

}





På forhånd tak. Glæder mig til at se hvad problemerne er...
Avatar billede yoka Nybegynder
15. marts 2010 - 03:15 #1
Okay. Problemet var at iframen ikke havde nået at loade ved første gennemløbning. En event handler løste problemet. Har lavet mootools version af koden her:

window.addEvent('domready', function() {

    $('buffer').addEvent('load', function(){

        $('display').set('html',window.frames['buffer'].document.body.innerHTML)
        window.frames['buffer'].document.body.innerHTML="";

    }).set('src','somelink');

});
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester