Avatar billede clone Nybegynder
17. juli 2001 - 16:12 Der er 19 kommentarer og
1 løsning

At dele et vindue mellem flere JavaScripts, hvordan?

Jeg opretter et nyt vindue via. et JavaScript med følgende funktion:

var win = new Object();
win.closed = true;
function openEditorWindow(url, width, height)
{
  if ((win != null) && (!win.closed))
  {
    win.resizeTo(width, height);
    win.focus();
  }
  else
  {
    win = window.open(url, \'nytvindue\', \'width=\'+width+\',height=\'+height);
    win.focus();
  }
}

keine probleme - alt virker fint!
MEN: hvis jeg åbner et nyt browser-vindue og kører JavaScriptet igen, så henviser de to JavaScripts til det samme \"nye vindue\", nemlig: \'nytvindue\'. Det giver nemlig nogle problemer med window handlenen \'win\'.
Hvordan løser jeg lige det?
Avatar billede clone Nybegynder
17. juli 2001 - 16:17 #1
Den løsning jeg er ude efter er, på en eller anden måde, at undersøge om der ved opstart allerede er åbnet et vindue med navnet \'nytvindue\'. I så fald skal min window-handle \'win\' sættes til at pege på dette vindue. Kan det lade sig gøre? (hæver til 60 point).
Avatar billede olebole Juniormester
17. juli 2001 - 16:19 #2
<ole>

var win = new Object();
win.closed = true;
function openEditorWindow(url, winName, width, height)
{
  if ((win != null) && (!win.closed))
  {
    win.resizeTo(width, height);
    win.focus();
  }
  else
  {
    win = window.open(url, \'nytvindue\', \'width=\'+width+\',height=\'+height);
    win.focus();
  }
}


<a href=\"#\" onclick=\"function openEditorWindow(\'din_side.html\', \'et_navn\', \'300\', \'500\')\">test</a>

/mvh
</bole>
Avatar billede olebole Juniormester
17. juli 2001 - 16:20 #3
win = window.open(url,winName, \'width=\'+width+\',height=\'+height);
skulle der selvfølgelig have stået  :)
Avatar billede clone Nybegynder
17. juli 2001 - 16:26 #4
Yes, selvfølgelig. Det jeg mener er bare, at winName altid hedder det samme, altså: \'nytvindue\'.
Avatar billede clone Nybegynder
17. juli 2001 - 16:33 #5
For at klarlægge problemstillingen, tilføjer jeg lige en alert()...

function openEditorWindow(url, width, height)
{
  if ((win != null) && (!win.closed))
  {
    win.focus();
  }
  else
  {
    win = window.open(url, \'editorwindow\', \'width=\'+width+\',height=\'+height);
    win.focus();
    alert(\"New Window Loaded\");
  }
}

Nu dukker der en tekst op hver gang \'nytvindue\' bliver loaded på ny.
Problemet opstår hvis man går op i browser-menuen og vælger File->New->Window, og derefter trykket på den HTML button, som genererer \'nytvindue\': \'netvindue\' bliver loaded på ny, hvilket absolut IKKE må ske.
Avatar billede clone Nybegynder
17. juli 2001 - 16:35 #6
Derfor har jeg brug for følgende funktionalitet:

window.doesExist(\'nytvindue\')
Avatar billede olebole Juniormester
17. juli 2001 - 16:39 #7
Skal du kunne have to forskellige vinduer åbne samtidigt?
Avatar billede clone Nybegynder
17. juli 2001 - 16:47 #8
Ikke nødvendigvis. Det gør det egentlig nemmere for mig, hvis jeg kan nøjes med ét fælles \'nytvindue\'.
Avatar billede clone Nybegynder
17. juli 2001 - 16:54 #9
100 point...
Avatar billede olebole Juniormester
17. juli 2001 - 16:55 #10
Det vil du ikke kunne undgå, da du har to forskellige sider (hvis brugeren åbner et nyt vindue via \'File->New->Window\'). Den ene side har ingen mulighed for at kende til script\'s på den anden side...og kan ikke umiddelbart få det.
Den fejl må du leve med - eller ændre din approach fundamentalt.
/mvh
Avatar billede clone Nybegynder
17. juli 2001 - 17:10 #11
Kan det evt. lade sig gøre at gemme \'win\' i en cookie?
Avatar billede olebole Juniormester
17. juli 2001 - 17:18 #12
Jo, hvis du går turen rundt om kagebordet, kan du sikkert sætte en kage og spørge til den....jeg har dog ikke tid til at lave et eksempel lige nu  :o)
/mvh
Avatar billede clone Nybegynder
17. juli 2001 - 17:36 #13
Det kan åbenbart kun lade sig gøre, at gemme tekst i en cookie... lort! Hvad kan man så bruge det skidt til?
Jeg nægter at tro på, at det ikke kan lade sig gøre. Det må da være muligt at erklære en variable for static, så den gemmer sine værdier...?
Avatar billede olebole Juniormester
17. juli 2001 - 17:46 #14
Det kan du ikke - uanset din tro!  :)
Men det er da også rigeligt at spørge, om der eksisterer en cookie med strengen \'side1.html\', når du åbner et vindue med \'side1.html\'.
Hvis ikke der eksisterer en cookie, skal vinduet åbnes og en cookie sættes med strengen \'side1.html\' - hvis cookie\'en eksisterer og strengen er \'side1.html\', skal der ikke ske noget - hvis cookie\'en eksisterer og strengen er noget andet end \'side1.html\' skal der reloades med \'side1.html\'.
Ved lukning af vinduet skal cookie\'en slettes.
/mvh
Avatar billede clone Nybegynder
17. juli 2001 - 17:58 #15
Det lyder som en løsning der kan bruges. Det vil jeg arbejde lidt med.
Hvordan er det nu lige at jeg sletter en cookie når siden lukkes ned? Kan jeg evt. fange en event når browser vinduet lukker?
Avatar billede olebole Juniormester
17. juli 2001 - 18:08 #16
Ja, men så fyres event\'en af, hver gang du reloader siden. Du kan dog lave et frameset med  rows=\"100,*\" og så lægge en onunload i frameset-tag\'et...ellers ikke.
/mvh
Avatar billede clone Nybegynder
17. juli 2001 - 18:32 #17
Kan man kun fange unload events i et frameset?
Avatar billede olebole Juniormester
17. juli 2001 - 18:40 #18
Nej, men hvad sker der, når du loader en ny side ind i et vindue? Den gamle side unloade\'er.....ikke sandt?    =)
Det gør frameset\'et ikke, når du loader en ny side ind i en af dets frames  ;o)
/mvh
Avatar billede clone Nybegynder
18. juli 2001 - 15:27 #19
Jeg lavede det hele om, så nu virker mit projekt på en anden måde. Men tak for hjælpen - du får de point.
Avatar billede olebole Juniormester
18. juli 2001 - 15:31 #20
...anytime  :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