Avatar billede supermand69 Nybegynder
15. september 2005 - 19:55 Der er 12 kommentarer og
1 løsning

innerHTML med timeout

Hey...

Jeg skal have lavet et script som skal skrive til en body i en iframe med innerHTML fra en div. Men det er sådan at jeg ind imellem får en fejl, da den pågældende iframe ikke er loadet endnu og jeg derved får fejl :( Jeg kan heller ikke lave sådan at scriptet loades i min iframe, da min div i forvejen er i en anden iframe.. hehe.. forvirrende? Så på en eller anden måde skal der være en timeout der tjekker om min iframe er loadet inden der skrives, så jeg undgår fejl

eks.
iframe_broadcast (det er her jeg skal skrive til body)
iframe_timeout (det er her jeg har min div som der skal skrives fra)
Avatar billede roenving Novice
15. september 2005 - 20:01 #1
Går ud fra, at begge iframes er børn af det samme window-objekt:

if(parent.iframe_broadcast && parent.iframe_broadcast.document)
Avatar billede supermand69 Nybegynder
15. september 2005 - 20:05 #2
ja :)

grunden til at jeg skal lave det på denne lidt akavede måde, er at der kan forekomme nogle select inputs bagved min iframe_broadcast og derved går lige igennem :( oprindelig havde jeg nøjes med at skrive til en div, men det dutter ikke :s
Avatar billede horsmark Nybegynder
15. september 2005 - 21:41 #3
<html>

<body>
<script type="text/javascript">
var isFrame1Loaded = false
var isFrame2Loaded = false

function checkFrames(){
    if( isFrame1Loaded && isFrame2Loaded ){
        alert("both loaded write 2 div")
    } else {
        document.write("testet igen\n<br>")
        window.setTimeout("checkFrames()", 1000)
    }
}


</script>

<iframe src="http://horsmark.com" onLoad="isFrame1Loaded = true"></iframe>
<iframe src="http://aarfing.dk" onLoad="isFrame2Loaded = true"></iframe>

<script type="text/javascript">
    checkFrames()
</script>
</body>
</html>
Avatar billede roenving Novice
15. september 2005 - 21:46 #4
>>horsmark

-- jeg troede du var xhtml-freak ?-)
Avatar billede supermand69 Nybegynder
15. september 2005 - 21:49 #5
jamen hvad nu hvis begge frames ikke er loadet efter 1000??

kan man ikke lave en løkke som bliver ved med at tjekke indtil iframe_broadcast er loadet?
Avatar billede horsmark Nybegynder
15. september 2005 - 21:54 #6
checkFrames er en uendelig løkke :-) og nej roenvig er ikke xhtml-freak bare æhh "dybt religiøs" øhh freak *G*
Avatar billede supermand69 Nybegynder
15. september 2005 - 21:57 #7
horsmark > arh ja.. klart.. kan jeg godt se nu ;)

ser lige på det..
Avatar billede roenving Novice
15. september 2005 - 21:58 #8
Kan du ikke bare nøjes med en jeg startede med, for det er vel kun, når der reelt er noget at skrive, du skal skrive ?-)
Avatar billede supermand69 Nybegynder
15. september 2005 - 22:00 #9
rowenving > nej, for det er ikke altid at begge frames er loadet i det øjeblik der skal skrives.. så bliver nød til at være sikker på at de er loadet
Avatar billede supermand69 Nybegynder
15. september 2005 - 22:07 #10
nu vil jeg gerne være på tværs :)

men kunne man ikke også gøre således? jeg vil så tjekke fra iframe_timeout

function checkFrames()
{
    if(parent.frames['iframe_broadcast_dropdown'].document.body) alert('loadet');
    else
    {
        document.write("testet igen\n<br>");
        window.setTimeout("checkFrames()", 1000);
    }
}
Avatar billede roenving Novice
15. september 2005 - 22:13 #11
-- du kan i hvert fald ikke bruge document.write, da den sletter det eksisterende dokument !-)
Avatar billede supermand69 Nybegynder
15. september 2005 - 22:31 #12
roenving > nej det var også lige en fejl det kom med.. men det var mere princippet ;)
Avatar billede supermand69 Nybegynder
15. september 2005 - 23:04 #13
nu ser det ud til at virke :)

function load_broadcast()
{
    if(parent.frames['iframe_broadcast_dropdown'].document.body) parent.frames['iframe_broadcast_dropdown'].document.body.innerHTML = document.getElementById('broadcast_dropdown').innerHTML;
    else window.setTimeout("load_broadcast()", 100);
}
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