Avatar billede rundt_om Nybegynder
13. juli 2011 - 11:42 Der er 9 kommentarer

Tjeck om vindue er åbent, ikke fra "parent"

Hej.

jeg har en udfordring, med et vindue som jeg åbner, ved klik på en knap. Hvis knappen så klikkes igen, så skal vinduet ikke genåbnes, men en anden java-funktion skal køres.

Problemet er, at hvis jeg i mellemtiden navigerer på min "parent" side, så kan jeg ikke tjekke mit åbne vindue.

Nogen ideer til hvordan dette kan lade sig gøre?

Jeg bruger denne funktion:

function openWin()
{
myWindow=window.open('','','width=200,height=100');
myWindow.document.write("This is 'myWindow'!");
myWindow.focus();
}

-men problemet er, at "myWindow" jo ikke længere eksisterer når jeg navigerer
Avatar billede jakobdo Ekspert
15. juli 2011 - 07:46 #1
Er det ikke at forsøge at smide noget logik med til det vindue, som du åbner.
Ala:

window_opened = 1
og er den værdi = 1, så gør noget andet...

Og ellers kunne det vel være at bygge det sammen med noget serverside script, som så kan håndtere state i en session.
Avatar billede Ole_N Nybegynder
19. juli 2011 - 08:24 #2
Jeg er ikke helt sikker på hvad det er du gerne vil det lyder lidt som om at du gerne vil kunne navigere væk fra den side hvor du åbner vinduet og over på en anden side hvor den samme knap er. Er det korrekt eller ?

hvis dette er tilfældet kan du løse det ved at gemme en boolean variable i en cookie som du som tjekker op imod for at se om vinduet er åbent eller ej.

Hvis du der imod bliver ved med at være på den samme side, kan du bare have en boolean variable på siden som jakobdo beskriver.

Hvis du bliver på samme side vil jeg dog anbefalde dig at gå fra at bruge et vindow til at kalde window siden ind i en div via ajax i stedet så slipper du også for at den evt. bliver blokkeret af popup blokker.

Det er nemt at gøre du kan f.eks bruge jquery lib. og dettes dialog box du kan se et eks. her : http://jqueryui.com/demos/dialog/
Avatar billede olebole Juniormester
19. juli 2011 - 19:19 #3
<ole>

Kunne det hjælpe at popup'en lukkes ved navigation? Noget i stil med:


function openWin()
{
    myWindow=window.open('','','width=200,height=100');
    myWindow.document.write("This is 'myWindow'!");
    myWindow.focus();
    window.onbeforeunload = function() {
        myWindow.close();
    }
}



/mvh
</bole>
Avatar billede rundt_om Nybegynder
27. juli 2011 - 15:16 #4
Hej.

Tak for svarene og undskyld min lange svartid :)

Ole_N, du har fat i noget af det rigtige, tror jeg

Det jeg skal bruge det til, er en jquery mp3 afspiller som åbnes i et eksternt vindue (og afspiller) Og så skal man gerne kunne navigere videre på siden (parent), og derefter klikke på andre lydklip, som så bliver sat i kø i den eksterne spillers playliste.

Jeg ville også helst holde det i samme vindue og så bruge jquery.load - men så vil lydafspilningen jo blive afbrudt ved navigation... og det vil jeg helst undgå.
Avatar billede olebole Juniormester
27. juli 2011 - 16:06 #5
Hvis du navigerer til en anden side, kender den nye side jo ikke til popup vinduet. En cookie kan kun holde strenge - ikke en reference til et (window)object - så du vil vist have en udfordring omkring at loade nye sange fra andre sider end den, der åbnede playeren med den metode  =)
Avatar billede olebole Juniormester
27. juli 2011 - 16:30 #6
I popup vinduet kunne du skrive noget i stil med:


function setRef() {
    opener.popupPlayer = window;
}
setInterval("setRef()", 2000);


Så vil der maksimalt gå 2 sekunder fra en side begynder at loade i hovedbrowseren, til siden kan loade en ny sang i playeren, der ligger i vinduet, som variablen popupPlayer refererer til
Avatar billede rundt_om Nybegynder
28. juli 2011 - 16:36 #7
Wauw!

Fedt, det virker lige som det skal :)

-og der burde vel ikke være noget performance-problem i, at sætte intervallet til 1000 i stedet?

Tak for hjælpen - smider du et svar, Ole?
Avatar billede olebole Juniormester
28. juli 2011 - 16:54 #8
Ellers tak, jeg samler ikke points. Læg selv et svar og accepter det, så tråden lukkes.

Jeg satte netop delay til 2000 msec for at forbedre performance - og fordi, du med garanti ikke har noget at bruge kun 1 sekund til. Jeg tør næsten vædde på, der slet ikke er nogen links at klikke på efter et sekund  *o)
Avatar billede olebole Juniormester
28. juli 2011 - 16:57 #9
- og nej, det er ikke "Wauw!". Det er en uskøn og uelegant løsning - men desværre nok den eneste løsning  :o|
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