Avatar billede mik789 Nybegynder
26. maj 2002 - 18:33 Der er 1 kommentar og
1 løsning

huske værdier på kryds og tværs

Jeg har bøvlet en del med at få en IE dialogboks (som laves med showModelessDialog() ) til at gøre som jeg vil. Det har været et problem at få dialogboksen til at vise sit indhold fra forskellige #mærker, når dette gøres fra et af de andre vinduer på skærmen.
Se http://www.eksperten.dk/spm/212681
Men nu er DET på plads. Der er dog stadig problemer. For at forstå hvad jeg vil have er det lettest at se siden. Den er på: www.dahr.dk/Untouchability/ ,men se den først i NS6. Åben en af noterne (markeret med blåt) og klik på nogle af forfatternavnene. Så åbner et nyt vindue der i NS er "dependent", dvs. bliver på skærmen så længe de vinduer, der kalder det, er åbne, med mindre man selv lukker det. Find også forfatternavne i hovedvindet (den store iframe), søg f.eks. efter "Inden" og "Lariviere", og klik også på dem, for at se hvordan vinduet skal virke. I IE kan man ikke lave et "dependent" vindue, men kan i stedet lave en Modeless Dialogbox, der har nogle af de samme egenskaber, når man nørkler tilstrækkeligt med det. He er koden:

// Funktion der placerer og åbner vindue med forkortelser og henvisninger

var dialog = null;

function openReferences(refItem) {

  var leftPosition=0;
  if (screen) {
    leftPosition = screen.width -666
  }

  if (document.all) {
    if (dialog != null) {
      if (!dialog.closed) {
        dialog.focus();
        dialog.window.location = 'references.html#' + refItem;
      } else {
        dialog = showModelessDialog("references.html", refItem, "dialogWidth:660px;dialogHeight:333px;dialogTop:118px;dialogLeft:"+leftPosition+"px;resizable:yes;help:no");
      }
    }
    else {
      dialog = showModelessDialog("references.html", refItem, "dialogWidth:660px;dialogHeight:333px;dialogTop:118px;dialogLeft:"+leftPosition+"px;resizable:yes;help:no");
    }
  }
  else {
    var refItem="references.html#"+refItem;
    win = window.open(refItem, "win", "width=660,height=333,top=118,left="+leftPosition+",scrollbars=yes,resizable=yes,dependent=yes");
    win.focus();
  }
}

------

Denne kode ligger i en ekstern js fil og kaldes dels fra dokumentet i den store iframe og dels fra noterne i den lille iframe. Men disse noter skrives af js filen "on the fly" (med html, css og det hele) og det betydervel vel, at js filen genloades hver gang en ny note vises. Og derfor (tror jeg) kan scriptet ikke huske at dialogboksen allerede er åben, når funktionen kaldes fra den anden iframe. Dvs. hvis dialogboksen først er kaldt i den store iframe og dernæst kaldes fra den lille med noterne, så åbnes en ny dialogboks oven i den anden. Men inden for hver iframe fungerer dialogboksen efter hensigten: fokus flyttes til nye henvisninger i boksen når man klikker på forskellige forfatternavne, uden at dialogboksen åbner på ny. Det er kun når man kalder den på tværs af de to iframes at problemet opstår. Samtidig sker der det uheldige, at når der klikkes på et nyt notenummer (hvilket jo reloader dokumentet i iframen "on the fly"), så lukker dialogboksen. Men altså, det jeg godt vil frem til er at man kun behøver at åbne dialogboksen én gang og kan kalde forskellige steder i den både fra den store iframe og fra noterne i den lille iframe uden at dialogboksen lukker i mellemtiden, og uden at der åbnes to dialogbokse oven i hinanden.
Avatar billede mik789 Nybegynder
26. maj 2002 - 18:38 #1
skulle måske også lige have koden med til de der testlinks i starten af den store iframe:

function testDialog() {
  if (dialog != null) {
    if (!dialog.closed) {
      alert ('IE vinduet er åbent');
    } else {
      alert ('IE vinduet er lukket');
    }
  }
  else {
    alert ('IE vinduet har slet ikke været åbnet')
  }
}

function openDialog(refItem) {
  var leftPosition=0;
  if (screen) {
    leftPosition = screen.width -666
  }
  dialog = showModelessDialog("references.html", refItem, "dialogWidth:660px;dialogHeight:333px;dialogTop:118px;dialogLeft:"+leftPosition+"px;resizable:yes;help:no");
}

function newReference (refItem) {
  dialog.focus();
  dialog.window.location = 'references.html#' + refItem;
}

function closeDialog() {
  if (dialog && !dialog.closed) {
    dialog.window.close();
  }
}
Avatar billede mik789 Nybegynder
30. maj 2002 - 12:32 #2
OK, der er åbenbart ingen løsninger
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