Avatar billede sluppermanden Nybegynder
25. juli 2007 - 10:40 Der er 12 kommentarer og
1 løsning

Liste over windows fra top

Hej,

Er det muligt at få en liste over hvilke windows der findes under et window. f.eks top.

Det muligt den anden vej altså ved brug af "parent" kan man se hvilke windows der ligger over dit window.

Men kan man også kigge ned af? og hvordan?
Avatar billede softspot Forsker
25. juli 2007 - 11:01 #1
Du kan traversere frames-listen i hvert document (hver frame har et document-objekt som så har en frames-liste).

Hvis du har iframes i dit dokument, kan du også traverse disse, men så skal du hente iframe-elementerne på en lidt anden måde. Noget i stil med dette:

      function traverseFrames(doc, lineprefix) {
        var txt = "";
        var iframes = doc.getElementsByTagName("iframe");
        for(var i = 0; i < iframes.length; i++) {
          var frm = iframes[i];
          var win = (frm.contentDocument ? frm.contentDocument.defaultView : frm.contentWindow);
          if(win) {
            txt += lineprefix + win.name + "\n";
            txt += traverseFrames(win.document, lineprefix + "  ");
          }
        }
        return txt;
      }

      function showFrameStructure() {
        alert(traverseFrames(window.top.document, ""));
      }
Avatar billede sluppermanden Nybegynder
25. juli 2007 - 11:20 #2
Jeg går ikke udfra at dette virker hvis det er nye frames der er lavet ved f.eks window.open()
Avatar billede softspot Forsker
25. juli 2007 - 11:28 #3
Nej, så er det vel et helt nyt vindue (med mindre window.open refererede til en navngiven frame som eksisterede i forvejen i dokumentet) og så virker det ikke.

Det er nok mig der har fortolket "windows" som frames, sikkert fordi du nævner "top" og "parent" - men du mener muligvis noget andet end frames (kan jeg fornemme)...?
Avatar billede sluppermanden Nybegynder
25. juli 2007 - 12:09 #4
Selvom et vindue er poppet up ved hjælp af window.open() vil dets parent stadigvæk være det vindue som har åbnet det.

Lad os tage et eksempel.
Jeg har mit "main" vindue.
Fra main åbner jeg 3 nye vinduer. [V1, V2, V3]
Med window.open()
Fra V3 skal jeg finde ud af hvor mange vinduer main har og hvad de hedder.
Avatar billede softspot Forsker
25. juli 2007 - 12:23 #5
Hvert popup-vindue har en egenskab som hedder opener (dvs. window.opener) og den kan du følge tilbage til det vindue som åbnede vinduet. Det må være den du leder efter...
Avatar billede sluppermanden Nybegynder
25. juli 2007 - 12:27 #6
Ja, men i mit eksempel skal jeg i V3 bruge navnene fra V1 og V2 uden at have kenskab til dem. Det vil sige at jeg skal finde dem dynamsik.
Avatar billede softspot Forsker
25. juli 2007 - 12:42 #7
Ja, ok, det er nok svært, med mindre du simpelthen holder styr på hvilke vinduer du åbner fra de enkelte vinduer. Såvidt jeg ved, findes der ikke nogen metode til at finde frem til vinduer som det aktuelle vindue har åbnet, så du kan ikke umiddelbart traversere vindueslisten "ovenfra". Du kan som sagt forsøge at holde styr på vinduer er åbnes ved at lægge dem i en liste når de åbnes (jeg vil undlade at eksemplificere, da jeg antager du har styr på dette). Denne liste bruges så til at traversere ned i hierarkiet af vindet "ovenfra". Du skal dog håndtere det specielt, hvis du også ville kunne finde vinduer som ligger dybere i hierarkiet, men hvor kæden er "brudt" mellem parent og grandchild... anyway!
Avatar billede sluppermanden Nybegynder
25. juli 2007 - 12:57 #8
ok, tak for svar. Jeg har desværre ikke mulighed for at holde styr på dem da nogle vindue bliver poppet ved hjælp af kode som ikke er generet af mig.
Så svaret må være at det kan jeg ikke. Læg et svar.
Avatar billede softspot Forsker
25. juli 2007 - 13:06 #9
Jeg er ikke 100% sikker på at det IKKE kan lade sig gøre, men jeg har tidligere spurgt om et lignende problem herinde og fik vist det samme svar, men du kan jo lade spørgsmålet stå åben for en stund og se om der skulle komme andre mere opløftende bud på en løsning... :)
Avatar billede olebole Juniormester
25. juli 2007 - 13:14 #10
<ole>

softspot >> Hvis du kun er 95% sikker leverer jeg gerne de sidste fem. Det er ikke muligt  ;o)

/mvh
</bole>
Avatar billede softspot Forsker
25. juli 2007 - 13:20 #11
olebole >> Lækkert! Tak for den bekræftelse - det var jo også dig der fortalte mig at det ikke kunne lade sig gøre sidste gang ;-)
Avatar billede sluppermanden Nybegynder
25. juli 2007 - 13:21 #12
;)
Avatar billede softspot Forsker
25. juli 2007 - 13:23 #13
Tak for point :)
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