Avatar billede eikhorsholm Nybegynder
27. februar 2005 - 22:39 Der er 12 kommentarer og
1 løsning

Ret popup-kode igennem for fejl, samt tilføj forbedringer.

Jeg prøver, at lave den "perfekte" popup-kode til mig selv, som jeg benytter til at vise billeder med.
Den skal gerne virke i IE, Firefox, Netscape og Safari (Opera er sådan lidt bob-bob) :-)

Jeg er indtil videre kommet frem til nedenstående:

<!--
function popup(url, title) {
  popup = window.open('',null,'location=no');
  with (popup.document) {
    writeln("<html>\n");
    writeln("<head>");
    writeln("<title>"+ title +"</title>");
    writeln("</head>\n");
    writeln('<body style="margin: 0px; padding: 0px; overflow: hidden;">'+"\n");
    writeln('<img onclick="window.close()" src="'+ url +'" style="cursor: pointer;" />'+"\n");
    writeln("</body>\n");
    writeln("</html>");
    close();
  }
  height = popup.document.images['0'].height;
  width = popup.document.images['0'].width;
  popup.moveTo((screen.width - width) / 2, (screen.height - height) / 2);
  popup.resizeTo(width, height);
}
// -->

Men det virker ikke helt ordentligt. Nogle gange melder den fejl, andre gange ikke.
Som det garanteret kan ses ud fra koden, så prøver jeg, at lave et popup som automatisk resizer sig til det indeholdene billede, samt centrerer sig på skærmen. Desuden er vinduet uden toolbar mv.

Nogen forslag til rettelser/forbedringer mv.

P.S. Jeg vil kun kunne have ét vindue åbent af gangen, samt at det får focus hver gang det oprettes (altså lægger sig over sit parent-vindue).
Avatar billede roenving Novice
28. februar 2005 - 12:48 #1
-- du skal sætte funktionen med resize ind på onload på billedet, for det er med garanti et ulovligt kald til det ikke færdig-initialiserede billede, som giver fejlen !-)
Avatar billede avarjo Nybegynder
28. februar 2005 - 22:15 #2
Prøv denne her som 'grund-script'. Du skal tilpasse den til din egen side:

<script language="JavaScript">
<!--
var newwindow = '';

function popitup(url) {
    if (newwindow.location && !newwindow.closed)
    { newwindow.location.href = url; newwindow.focus(); }
else
    { newwindow=window.open(url,'htmlname','scrollbars=yes,width=320,height=240,left=240,top=180,resizable=1') ; }
}

function tidy()
{
if (newwindow.location && !newwindow.closed) { newwindow.close(); }
}

//-->
</script>
Avatar billede avarjo Nybegynder
28. februar 2005 - 22:20 #3
I html'n:
<body onunload="tidy()">

<a href="java script:popitup('billed.jpg')"><img src="billed_paa_mainside.jpg" width="90" height="68" border="0" class="pic"></a>
Avatar billede eikhorsholm Nybegynder
28. februar 2005 - 23:14 #4
roenvig -->

Har prøvet med:

function popup(url, title) {
  popup = window.open('','popup','location=no');
  with (popup.document) {
    writeln("<html>\n");
    writeln("<head>");
    writeln("<title>"+ title +"</title>");
    writeln("</head>\n");
    writeln('<body style="margin: 0px; padding: 0px; overflow: hidden;">'+"\n");
    writeln('<img onclick="window.close()" onload="moveTo(((screen.width - this.width) / 2, (screen.height - this.height) / 2)); resizeTo(this.width, this.height)" src="'+ url +'" style="cursor: pointer;" />'+"\n");
    writeln("</body>\n");
    writeln("</html>");
    close();
  }
}

Den resizer fint, men der er nogle fejl stadig.
Avatar billede eikhorsholm Nybegynder
01. marts 2005 - 00:11 #5
avarjo --> Dit kode-eksempel resizer eller flytter da ikke vinduet?
Avatar billede roenving Novice
01. marts 2005 - 07:49 #6
Hvornår og hvordan får du fejl ?-)
Avatar billede eikhorsholm Nybegynder
01. marts 2005 - 18:45 #7
Det er lidt forskelligt. Det første er, at billedet ikke centreres på skærmen.
Og hvis jeg har åbnet ét vindue, men prøver at åbne et til, så får jeg fejlen:
"Medlemmet blev ikke fundet"
Avatar billede eikhorsholm Nybegynder
02. marts 2005 - 14:57 #8
Denne kode resizer og flytter vinduet helt fint:

function popup(url, title) {
  popup = window.open('','','location=no');
  with (popup.document) {
    writeln("<html>\n");
    writeln("<head>");
    writeln("<title>"+ title +"</title>");
    writeln("</head>\n");
    writeln('<body style="margin: 0px; padding: 0px; overflow: hidden;">'+"\n");
    writeln('<img onclick="window.close()" src="'+ url +'" style="cursor: pointer;" />'+"\n");
    writeln("</body>\n");
    writeln("</html>");
    close();
  }
  popup.moveTo((screen.width - popup.document.images['0'].width) / 2, (screen.height - popup.document.images['0'].height) / 2);
  popup.resizeTo(popup.document.images['0'].width, popup.document.images['0'].height);
}

Men der er stadig problemer med, at åbne flere vinduer end ét. Så snart jeg har åbnet vinduet én gang, så er det slut. Så melder den fejl hver gang?
Avatar billede roenving Novice
02. marts 2005 - 15:04 #9
Giv vinduet et windowname, som er unikt !-)

f.eks.

function popup(url, title) {
  var t = new Date.getTime();
  popup = window.open('','t'+t,'location=no');
Avatar billede eikhorsholm Nybegynder
02. marts 2005 - 15:24 #10
Den melder stadig samme fejl.
Men jeg vil også gerne have, at man kun kan have ét vindue åbent af gangen. Så hvis man klikker på et andet thumbnail, så skifter det aktuelle vindue bare til det nye.
Avatar billede eikhorsholm Nybegynder
03. marts 2005 - 21:03 #11
Jeg kan virkeligt ikke finde fejlen. Har prøvet alt efterhånden, synes jeg.
Er der nogen som har andre idéer til hvad der kan være galt?
Avatar billede eikhorsholm Nybegynder
03. marts 2005 - 21:12 #12
Det virker som om fejlen som fremkommer ændrer linjenummer (fra linje 45 til linje 0), hvis jeg i stedet for onclick="popup('URL', 'TITLE)", benytter et alm. link <a href="java script:popup('URL', 'TITLE');">link</a>. Meget mærkeligt.
Avatar billede eikhorsholm Nybegynder
03. marts 2005 - 21:34 #13
Jeg har fået det til, at virke!
Det er åbenbart ulovligt, at have en variabel inde i popup-funktionen som hedder det samme som funktionen.

Lukker spørgsmålet. Ellers mange tak for alt fjeres hjælp!
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