Avatar billede thulstrup Nybegynder
24. maj 2003 - 16:49 Der er 21 kommentarer og
1 løsning

popup problemer

<script language="javascript" type="text/javascript">
var myWindow = false;
function popup(file,w,h) {
    var sysW = screen.availWidth||screen.width
    var sysH = screen.availHeight||screen.height
    var centerX = Math.round((sysW/2)-(w/2));
    var centerY = Math.round((sysH/2)-(h/2));
    if ((myWindow) && !myWindow.closed){
        myWindow.close();
    }
    myWindow = window.open(file, 'popup', 'width='+w+',height='+h+',left='+centerX+',top='+centerY+',screenX='+centerX+',screenY='+centerY+',scrollbars=0');
    if (myWindow.focus = null){
        myWindow.focus();
    }
    myWindow.document.title = 'Titel';

}
</script>


Jeg får en unspecified error i denne linie:
if (myWindow.focus = null){

desuden virker mit forsøg på at bestemme titlen på popup vinduet heller ikke.
Avatar billede -master-d- Nybegynder
24. maj 2003 - 16:57 #1
Du behøver vel ikke if (myWindow.focus = null), da du jo bare sikrer dig at vinduet står i focus når du bruger myWindow.focus();

Mit forslag ville være

<script language="javascript" type="text/javascript">
var myWindow = false;
function popup(file,w,h) {
    var sysW = screen.availWidth||screen.width
    var sysH = screen.availHeight||screen.height
    var centerX = Math.round((sysW/2)-(w/2));
    var centerY = Math.round((sysH/2)-(h/2));
    if ((myWindow) && !myWindow.closed){
        myWindow.close();
    }
    myWindow = window.open(file, 'popup', 'width='+w+',height='+h+',left='+centerX+',top='+centerY+',screenX='+centerX+',screenY='+centerY+',scrollbars=0');
    myWindow.focus();
    myWindow.document.title = 'Titel';

}
</script>
Avatar billede -master-d- Nybegynder
24. maj 2003 - 17:00 #2
Jeg kan ikke forstå at du får nogen fejlmeddelse (Det gør jeg ikke). Hvilken Browser bruger du ?
Avatar billede thulstrup Nybegynder
24. maj 2003 - 17:05 #3
Bruger IE6, så det er nok ikke det.

Nu påstår den at det er linien her den er gal med:
myWindow = window.open(file, 'popup', 'width='+w+',height='+h+',left='+centerX+',top='+centerY+',screenX='+centerX+',screenY='+centerY+',scrollbars=0');
Avatar billede -master-d- Nybegynder
24. maj 2003 - 17:32 #4
Hvordan kalder du funktionen ?
Avatar billede thulstrup Nybegynder
24. maj 2003 - 17:38 #5
Henter variablerne fra en database:
<a href="java script:popup('spil/<?=$data['link']?>',<?=$data['bredde']?>,<?=$data['hojde']?>)" class="fade" name="spil<?=$i?>" onFocus="this.blur()"><?=$data['navn']?></a>

hvilket f.eks. bliver til:
<a href="java script:popup('spil/test.html',400,500)" class="fade" name="spil1" onFocus="this.Blur()">test</a>
Avatar billede -master-d- Nybegynder
24. maj 2003 - 18:05 #6
Måske skulle du lige overveje at lukke parentesen igen, samt lave den sådan her :

<a href="java script:popup('spil/<?=$data['link']?>','<?=$data['bredde']?>','<?=$data['hojde']?>');" class="fade" name="spil<?=$i?>" onFocus="this.blur()"><?=$data['navn']?></a>

Så prøv igen.
Avatar billede thulstrup Nybegynder
24. maj 2003 - 18:33 #7
Parentensen var lukket, jeg havde bare ikke lige fået den med her. Jeg har tilføjet ''erne, men med samme resultat.
Avatar billede thulstrup Nybegynder
24. maj 2003 - 19:19 #8
Det er tilsyneladende linien:
myWindow.document.title = 'Titel';

der skaber fejlen. Er der noget galt med den?
Avatar billede olebole Juniormester
24. maj 2003 - 20:28 #9
<ole>

I dit oprindelige script er der sat vand over til røvfuld to gange. I denne linie prøver du at sætte popUp'ens fokus til null (eller noget lignende):

if (myWindow.focus = null){

Det, du nok ville skrive var:

if (myWindow.focus == null){

I denne linie får du problemer, hvis det er en side fra et andet domæne (da du så prøver at scripte på tværs af domæner ... det kan man ikke med JavaScript):

myWindow.document.title = 'Titel';

Er det en lokal fil, får du under alle omstændigheder en fejl, hvis vinduet ikke er færdigåbnet, når kommandoen fyres af. Det kan evt. løses med:

setTimeout("myWindow.document.title='BlaBlaBla'",3000);

Meeeeen ... det er noget slam  :)

/mvh
</bole>
Avatar billede thulstrup Nybegynder
25. maj 2003 - 18:09 #10
Nu har jeg prøvet at vente med kommandoerne til vinduet er færdigåbnet, men får stadig den samme fejl:

function popup(file,w,h){
    var sysW = screen.availWidth||screen.width
    var sysH = screen.availHeight||screen.height
    var centerX = Math.round((sysW/2)-(w/2));
    var centerY = Math.round((sysH/2)-(h/2));
    if (myWindow && !myWindow.closed){
        myWindow.close();
    }
    myWindow = window.open(file, 'popup', 'width='+w+',height='+h+',left='+centerX+',top='+centerY+',screenX='+centerX+',screenY='+centerY+',scrollbars=0');
    wait();
}

function wait(){
    var timer = null;
    if (!myWindow){
        timer = window.setTimeout('wait();',10);
    } else {
        myWindow.focus();
        myWindow.document.title = 'Referencer for Rasmus Thulstrup';
        clearTimeout(timer);
    }
}
Avatar billede olebole Juniormester
25. maj 2003 - 18:34 #11
Mon ikke du har glemt at erklære variablen globalt? Har du denne linie:
  var myWindow = false;
/mvh
Avatar billede olebole Juniormester
25. maj 2003 - 18:34 #12
... udenfor funktionerne, vel at mærke  ;o)
Avatar billede thulstrup Nybegynder
25. maj 2003 - 18:58 #13
Sorry, my bad! Det har jeg gjort i mit script, har bare ikke fået den med her.
Avatar billede olebole Juniormester
25. maj 2003 - 19:06 #14
Så er der ingen fejl i dit script. Det funker helt fint hos mig - med den lille rettelse omkring erklæringen  :)

Det eneste, der kan give fejl er, hvis dokumentet, du åbner i popUp'en, ligger under et andet domæne, end det, der åbner popUp'en.
/mvh
Avatar billede thulstrup Nybegynder
25. maj 2003 - 19:35 #15
Det gør det ikke. Alt ligger på samme domæne.
Det er linien her, der er skyld i fejlen. Hvis jeg fjerner den får jeg ingen fejlmeddelse.
myWindow.document.title = 'Referencer for Rasmus Thulstrup';
Avatar billede olebole Juniormester
25. maj 2003 - 21:42 #16
Nej, der er ingen fejl ... jeg ved ikke, hvad du laver for at generere den fejl - men scriptet kan ikke gøre det uden din hjælp.
Hvis du vil have hjælp til at finde fejlen, må du uploade et eksempel, der fejler. Så skal jeg nok finde ud af, hvad du laver af andre fejl - og hvor  :)
/mvh
Avatar billede thulstrup Nybegynder
26. maj 2003 - 13:10 #17
Ok, så prøv at se her:
http://www.overdose.dk/test/
Avatar billede olebole Juniormester
07. juni 2003 - 15:11 #18
Undskyld ventetiden ... jeg har ikke været på E den seneste tid  :)
Jeg var vist lidt for hurtig til at skrive, der ikke var fejl i dit script. Fejlen er, at du i scriptet stiller dig tilfreds med at vinduet er blevet åbnet:
  if (!myWindow){
    // Timer kode
  } else {
    // Anden kode
  }

Det betyder jo ikke, dokumentet er nået at blive loaded i vinduet. Hvis det ikke er det - og du prøver at sætte titlen alligevel - genererer du en fejl  :)
/mvh
Avatar billede thulstrup Nybegynder
12. juni 2003 - 12:54 #19
Det kan jeg godt se. Hvordan kan jeg så checke om dokumentet er loaded færdigt?
Avatar billede olebole Juniormester
12. juni 2003 - 15:34 #20
Det kan du ikke. Det bedste, du kan gøre, er at lægge et onload-kald i det dokument, du popper op.
Avatar billede thulstrup Nybegynder
13. juni 2003 - 19:19 #21
Det vil jeg prøve. Mange tak for hjælpen!
Avatar billede olebole Juniormester
13. juni 2003 - 23:45 #22
...  anytime  :)

PS: Hvis du vil kalde en funktion i det dokument, der åbner popU'en, kan du kalde den med:
  opener.FUNKTIONSNAVN();
... fra popUp'en.
/mvh
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