Avatar billede oasen Nybegynder
15. maj 2002 - 01:31 Der er 8 kommentarer og
1 løsning

PopPop og Op - Hvorfor kun et åbent vindue af gangen?

Jeg er ikke god til JavaScript, men må indrømme det mange gange er smart.
Kan nogen sige mig, hvorfor der kun kan være et popup-vindue åbent af gangen. Man er nødt til at lukke det første, før man kan åbne et nyt... Returneres der noget forkert??

<head>
<script language="JavaScript">
<!-- Gem koden for gamle browsere
function PopWin(url,h,w) {
var leftPos = null, topPos = null;

if (top.screen){
  if (screen.width){
    leftPos = Math.round((screen.availWidth-w-15)/2);
    topPos = Math.round((screen.availHeight-h)/2);
  } else {    leftPos = 50
    topPos = 50
  }
}

popupWin = window.open(url, 'popup', 'height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + '')
}
// -->
</script>

</head>
<body>

<a href="#" onclick="PopWin('blabla.asp',363,941);return false">BlaBla</a>
Avatar billede lequet Nybegynder
15. maj 2002 - 01:53 #1
Det er muligvis fordi selve vinduet får tildelt et "navn" (popupWin = ...)
men jeg ved det ikke... Prøv istedet med dette

<script language="JavaScript">
<!-- Gem koden for gamle browsere
function PopWin(url,h,w) {
var leftPos = null, topPos = null;

if (top.screen){
  if (screen.width){
    leftPos = Math.round((screen.availWidth-w-15)/2);
    topPos = Math.round((screen.availHeight-h)/2);
  } else {    leftPos = 50
    topPos = 50
  }
}

window.open(url, 'popup', 'height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + '')
}
// -->
</script>
Avatar billede knudgert Nybegynder
15. maj 2002 - 02:25 #2
Hvert vindue skal have, hver sit navn.
<head>
<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
function NewWindow(mypage, myname, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
win = window.open(mypage, myname, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}
//  End -->
</script>

<body>
<a href="link_1.htm" onclick="NewWindow(this.href,'link','400','400','no');return false;">***Link***</a>
<a href="link_2.htm" onclick="NewWindow(this.href,'link2','200','200','no');return false;">***Link 2***</a>
Avatar billede jakoba Nybegynder
15. maj 2002 - 02:50 #3
For at sikre forskellige navne kan du fx lave en variabel til at tælle op for hvert nyt popopvindue og så gøre variablen til en del af vinduets navn:

<SCRIPT LANGUAGE="JavaScript">
<!-- Begin
var teller = 0
function NewWindow(mypage, w, h, scroll) {
var winl = (screen.width - w) / 2;
var wint = (screen.height - h) / 2;
winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable'
win = window.open(mypage, "popup"+teller++, winprops)
if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); }
}
//  End -->
</script>

nu kommer det første vindue til at hedde 'popup0', det næste hedder 'popup1', osv.

mvh JakobA
Avatar billede oasen Nybegynder
15. maj 2002 - 14:27 #4
Det virker glimrende, tak!

Men sig mig lige to ting:

Men hvordan fjernes scroll-barene (det troede jeg, man gjorde ved at skrive 'no') ?
Hvordan får jeg vinduet til at placere sig præcis på midten af skærmen, ligesom det gamle script gjorde?
Avatar billede jakoba Nybegynder
15. maj 2002 - 15:46 #5
din gamle funktion er også en tand mere korrekt:

<script language="JavaScript">
<!-- Gem koden for gamle browsere
var teller = 0;
function PopWin(url,h,w) {
  var leftPos = null, topPos = null;

  if (top.screen){
    if (screen.width){
      leftPos = Math.round((screen.availWidth-w-15)/2);
      topPos = Math.round((screen.availHeight-h)/2);
    } else {    leftPos = 50
      topPos = 50
    }
  }
  popupWin = window.open(url, 'popup'+teller++, 'height=' + h + ',width=' + w + ',top=' + topPos + ',left=' + leftPos + '')
}
// -->
</script>

mvh JakobA
Avatar billede oasen Nybegynder
15. maj 2002 - 16:21 #6
Min gamle funktion er lavet af dig.

Det kunne jo også være, det var en bedre idé at loade filerne i samme vindue hele tiden. Således at filen i det åbne vindue udskiftes med en anden fil. Der er jo folk, der hader popup-vinduer, og på den måde kan man så begrænse dem lidt, hvis brugeren ikke får lukket det sidste.

Er det svært at tilføje?
Avatar billede jakoba Nybegynder
15. maj 2002 - 16:39 #7
Så er det nok derfor jeg syns den ser 'rigtig' ud :-)

dette kan måske bruges:

<script language="JavaScript">
<!-- Gem koden for gamle browsere

var popupWin;    // vi skal være sikre på at variablen ligger i window
function PopWin(url,h,w) {
  var leftPos = null, topPos = null;

  if (top.screen){
    if (screen.width){
      leftPos = Math.round((screen.availWidth-w-15)/2);
      topPos = Math.round((screen.availHeight-h)/2);
    } else {    leftPos = 50
      topPos = 50
    }
  }
  if ( popupWin && !popupWin.closed ) {
      popupWin.location.href = url;
      popupWin.moveTo( leftPos, topPos );
      popupWin.resizeTo( w, h );
      popupWin.focus();
  } else {
      popupWin = window.open(url, 'popup', 'height=' +h +',width=' +w +',top=' +topPos + ',left=' +leftPos );
  }
}
// -->
</script>

mvh JakobA
Avatar billede oasen Nybegynder
15. maj 2002 - 16:54 #8
Ahh... det var jo præcis, hvad jeg drømte om!!

Mange tak for det :)

Også tak til dig, knudgert - du svarede jo på det egentlige spørgsmål!
Avatar billede oasen Nybegynder
15. maj 2002 - 17:07 #9
Mærkeligt - når der åbnes en ny fil i et vindue, der allerede er åbent, huskes vinduets størrelse ikke...(?)

Måske tallene, der angiver højde og bredde i links'ne skal op og ligge i selve funktionen i stedet for "h" og "w", da alle mine vinduer skal være samme størrelse... Hmm..
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