Avatar billede axkris Nybegynder
16. oktober 2005 - 22:47 Der er 6 kommentarer og
1 løsning

Check om vindue nu også blev åbnet pga. evt. anti-popup

Hej alle

Jeg har følgende kode:

strPopupWin = window.open('http://www.minhjemmeside.dk', 'vindue1','height=100,width=100,top=119,screenY=119,left=112,screenX=112,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');

if (strPopupWin.closed || !strPopupWin.opened || strPopupWin == "" || strPopupWin == null) {
  alert('Du har ikke tilladt popup-vinduet på hjemmesiden.');
}

I forsøget på at finde ud af, om folk har tilladt popup-vinduer, har jeg lavet en helgardering, tror jeg nok. Men hvilke betingelser skal jeg reelt bruge, og mangler jeg nogle til særlige situationer / anti-popup-software?
Avatar billede olebole Juniormester
17. oktober 2005 - 02:04 #1
<ole>

Der er jo mange niveauer af blokering. Du tester jo kun for, om en popup kan åbnes med script. Selvom du ikke kan få lov til det, kan det sagtens være, du kan åbne en popup på et brugerklik  :)

/mvh
</bole>
Avatar billede roenving Novice
17. oktober 2005 - 04:32 #2
En try/catch burde kunne finde alle forgæves forsøg på åbning:

try{
  strPopupWin = window.open('http://www.minhjemmeside.dk', 'vindue1','height=100,width=100,top=119,screenY=119,left=112,screenX=112,status=no');
}catch(e){
  alert('Du har ikke tilladt popup-vinduet på hjemmesiden.');
}
Avatar billede axkris Nybegynder
17. oktober 2005 - 11:33 #3
Hej Roenving

Tak for løsningen, hvordan fanger jeg, at vinduet er blevet åbnet som det skal?

Sådan her?

if (e == null) {
  alert("Vinduet blev åbnet...hurra...");
}

Ville en try-catch-løsning også fange, hvis vinduet blot lukkes igen (hvis det er det, som nogle anti-popup-løsninger gør)? I så fald ikke, vil man ikke få en bedre løsning, hvis man kombinerer både try-catch-løsningen med et check på strPopupWin.closed (som er den eneste rigtige af de betingelser, som jeg listede i start-indlægget... har jeg så senere fundet ud af)?
Avatar billede axkris Nybegynder
17. oktober 2005 - 11:47 #4
Nu har jeg lavet denne løsning - kan det gøres bedre / optimeres lidt?

if (confirm('Kære besøgende.............')) {
                               
  try {
    strPopupWin = window.open('http://www.minhjemmeside.dk', 'vindueEt','height=100,width=100,top=119,screenY=119,left=112,screenX=112,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no');   
  }
                                       
  catch(e){
    strPopupError = true;
  }
                   
  if (strPopupError || strPopupWin.closed) {
      alert("Fejl - vinduet blev ikke åbnet");
  }
}

Tryk svar alle :-)
Avatar billede roenving Novice
17. oktober 2005 - 17:32 #5
Ja, men ikke meget, det er mest kodebogstaver !-)

if (confirm('Kære besøgende.............')) {
  try {
    strPopupWin = window.open('http://www.minhjemmeside.dk', 'vindueEt','height=100,width=100,top=119,left=112,status=no');
  }catch(e){
    strPopupError = true;
  }

  if (strPopupError || strPopupWin.closed) {
      alert("Fejl - vinduet blev ikke åbnet");
  }
}
Avatar billede roenving Novice
17. oktober 2005 - 17:32 #6
Velbekomme '-)
Avatar billede roenving Novice
17. oktober 2005 - 21:22 #7
-- og tak for point ;~}
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