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.
