Avatar billede mobildata Nybegynder
11. juli 2006 - 00:46 Der er 6 kommentarer og
1 løsning

Problem med opener

jeg har en side med en iframe i den iframes åbnes en popup hvor man kan fore nogle udregninger. og bagefter overføre tallene til "opener", det virker som også fint. men jeg prøver at lave en funktion der åbner et nyt billede med hovedsiden hvis "opener" er blevet lukket og stadig overføre tallene.

scriptet:

<SCRIPT LANGUAGE="JavaScript"><!--
function copyForm() {
    if (window.opener.closed){
    var myWin = window.open('frame.php');
    opener = myWin;
    opener.iframe.save.box1.value = document.popupForm.box1.value;
    opener.iframe.save.box2.value = document.popupForm.box2.value;
    opener.iframe.save.box3.value = document.popupForm.box3.value;
    opener.iframe.save.box4.value = document.popupForm.box4.value;
    }
    else
    opener.iframe.save.box1.value = document.popupForm.box1.value;
    opener.iframe.save.box2.value = document.popupForm.box2.value;
    opener.iframe.save.box3.value = document.popupForm.box3.value;
    opener.iframe.save.box4.value = document.popupForm.box4.value;
    window.close();
}
//--></SCRIPT>

scriptet detecter fint hvis opener er blevet lukket og åbner et nyt vindue med frame.php men den overfører ikke tallene.
som den gør hvis opener ikke var blevet lukket.
Avatar billede jakoba Nybegynder
11. juli 2006 - 07:48 #1
når du åbener en side med en iframe i får du klarmelding fra siden selvom den underside der skal ligge i din iframe måske endnu ikke er hentet. og så prøver du at stoppe data i en form der ikke er der endnu.

Så du skal have indføre en check på om din ifram er blevet loadet.
fx:
<SCRIPT LANGUAGE="JavaScript"><!--

function afventLoadAfIframe() {
    if ( opener.iframe && opener.iframe.save && opener.iframe.save.box4 ) {
        opener.iframe.save.box1.value = document.popupForm.box1.value;
        opener.iframe.save.box2.value = document.popupForm.box2.value;
        opener.iframe.save.box3.value = document.popupForm.box3.value;
        opener.iframe.save.box4.value = document.popupForm.box4.value;
        window.close();
    }
    else {
        setTimeout( "afventLoadAfIframe()", 200 );    // vent lidt mere
    }
}

function copyForm() {
    if (window.opener.closed) {
        var myWin = window.open('frame.php');
        opener = myWin;
        setTimeout( "afventLoadAfIframe()", 200 ); 
    }
    else {
        opener.iframe.save.box1.value = document.popupForm.box1.value;
        opener.iframe.save.box2.value = document.popupForm.box2.value;
        opener.iframe.save.box3.value = document.popupForm.box3.value;
        opener.iframe.save.box4.value = document.popupForm.box4.value;
        window.close();
    }
}
//--></SCRIPT>

mvh JakobA
Avatar billede mobildata Nybegynder
11. juli 2006 - 10:14 #2
da jeg prøvede at lægge en alert ind efter "opener = myWin;"
fandt jeg også ud af at den ikke overførte det fordi frame.php ikke var loaded.

men hvis jeg ventede med at klikke ok til den alert til frame.php var loaded overførte den tallene som den skulle.

jeg har prøvede ovenstående men uden held, også selv jeg sætter timeout noget højere.

findes der ikke en måde at pause udførslen af scriptet, udover ovenståede?
Avatar billede jakoba Nybegynder
11. juli 2006 - 12:08 #3
Længden af timeout betyder ikke så meget (hvis den er lille ventes der blot flere gange). bare den ikke er latterliget lille eller stor.
Det må være min test der er noget galt med:
    if ( opener.iframe && opener.iframe.save && opener.iframe.save.box4 ) {

du kan evt prøve at sætte en variabel i siden i din iframe onload og så teste på den variabel istedet.

fx:
<body onload="window.nuErJegLoaded=1;">
og så lave testen om til:
    if ( opener.iframe && opener.iframe.nuErJegLoaded ) {
det vil være en sikrere test
Avatar billede mobildata Nybegynder
12. juli 2006 - 00:00 #4
hej jakoba, jeg har lige prøvet med den body onload i framen uden held.
og nuErJegLoaded funktionen. det eneste der stadig får det til at fungere er når jeg sætter den alert ind.
Avatar billede jakoba Nybegynder
12. juli 2006 - 02:28 #5
Det var sørens. Det eneste der skulle kunne få 'nuErJegLoaded' metoden til at fejle er hvis du har scripts i siden der ændrer indholdet i formen efter load.

Har du mulighed for at lægge et link så vi kan kikke på siden og dens kildekode ?
Avatar billede mobildata Nybegynder
12. juli 2006 - 10:44 #6
Hej Jakoba,

Jeg har valgt at indsætte den alert så det tilsyneladende virkede, og i stedet puttet noget brugbart indformatione ind i alert´en så den ikke er generende.

Men tilgæld har jeg kunnet bruge din hjælp til en anden del at mit script.
så hvis du smider et svar kan du få dine velfortjente point.
Avatar billede jakoba Nybegynder
12. juli 2006 - 11:53 #7
ok
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