Avatar billede gadebarnet Nybegynder
23. februar 2006 - 13:01 Der er 14 kommentarer

check popup blocker.

Er der nogle der har en fornuftig ide til et check på om der er installeret popup blocker på clienten...

Jeg har prøvet dette:
---
<script>
function OpenMyWindow()
{
  BookingWindow = window.open('test.html','Di','Da');
}
function CheckWindow()
{
  if(BookingWindow)
  {
    alert("great, no popup killer");
  }
  else
  {
    alert("Ohh no! Please remove you popup killer");
  }
}
OpenMyWindow();
</script>

<a href="java script:;" onClick="OpenMyWindow(); setTimeOut(CheckWindow(), 500);">Åben Booking vinduet</a>
---

Men det fungere ikke...

Andre bud?
Avatar billede softspot Forsker
23. februar 2006 - 13:08 #1
Prøv evt.


var w = {closed:true};
w = window.open('test.html','di');
if(w.closed)
  alert('blocker installeret');
else
  alert('ingen blocker installeret');
Avatar billede gadebarnet Nybegynder
23. februar 2006 - 14:03 #2
Ligemeget hvor højt jeg sætter blockeren i ie, så blokere den IKKE
Avatar billede softspot Forsker
23. februar 2006 - 14:11 #3
Hvordan aktiverer du den kode til at åbne vinduet?
Avatar billede gadebarnet Nybegynder
23. februar 2006 - 14:13 #4
har prøvet som onclick i en <a href> og som en form button, og i body onload, onunload og beforeunload
Avatar billede softspot Forsker
23. februar 2006 - 14:19 #5
Hvis det skal blokeres af browseren så skal det være aktiveret af kode som ikke starter med en brugerhandling. Prøv f.eks. at kalde det via en timer:

window.onload = function() {
  setTimeout("showPopup()", 1500);
}

function showPopup() {
  var w = {closed:true};
  w = window.open('test.html','di');
  if(w.closed)
    alert('blocker installeret');
  else
    alert('ingen blocker installeret');
}
Avatar billede gadebarnet Nybegynder
23. februar 2006 - 14:34 #6
se her.
var w = {closed:true};
w = window;
if(w.closed){unloadcheck();}

der hvor der står window; det skal være det vindue som den køre i... Hvordan inendificere man det vindue man er i?
Avatar billede softspot Forsker
23. februar 2006 - 14:45 #7
window identificerer det aktuelle vindue, men hvis det er popupvinduet, så kommer du jo aldrig til denne kode, for vinduet åbner ikke. Du er nød til at lave checket der hvor du åbner popupvinduet, altså udenfor vinduet selv - eller misforstår jeg hvor du vil hen ad...?
Avatar billede gadebarnet Nybegynder
23. februar 2006 - 14:47 #8
du har ret...

Men kan man så  ikke lave en der hver 3 sekunde checker om winduet stadig leveR???
Avatar billede softspot Forsker
23. februar 2006 - 14:59 #9
Hvis du holder fast i referencen til det popupvindue som du åbner, vil jeg jo mene at du kan checke på w.closed (for nu at tage udgangspunkt i de variabelnavne som jeg selv introducerede). Det kan du så evt. gør med setInterval, nogenlunde således:

var popupWin = {closed:true};

window.onload = function() {
  setInterval("checkPopup()",3000);
}

function checkPopup() {
  if(popupWin.closed) {
    // så er vinduet stadig lukket
  }
  else {
    // så er vinduet åben
  }
}

Hvis du så et andet sted åbner vinduet med den kode som vi allerede har snakket om (lettere modificeret):

function showPopup() {
  popupWin = window.open('test.html','di');
}
Avatar billede gadebarnet Nybegynder
23. februar 2006 - 15:15 #10
hvordan kan jeg checke på vinduets navn... hvis nu jeg tidligere har kaldt det kurt ?
Avatar billede softspot Forsker
23. februar 2006 - 17:03 #11
Det kan du desværre ikke (iflg min viden), med mindre du vil risikere at der åbnes et nyt vindue, hvis det ikke findes. I det tilfælde kan du bare prøve at åbne et popupvindue med en tom url med navnet kurt (altså window.open('','kurt');) og så checke om vinduet er åben og om window.location.href er den tomme url.

Det vil dog som sagt producere et tomt vindue hvis det ikke er åben i forvejen og er sjældent en ønskværdig sideeffekt.
Avatar billede gadebarnet Nybegynder
24. februar 2006 - 09:00 #12
Kan du ikke lave et script der:

side1
Et link der popper op med side 2

side2
når side 2 kaldes skal det starte en funktion på side 1 som checker om det vindue som side 2 køre i, eksistere...

Jeg har prøvet men jeg kan ikke få det til at fungere.
Avatar billede softspot Forsker
24. februar 2006 - 09:32 #13
Det er stort set det den kode jeg lavede i mit post fra 23/02-2006 14:59:59 gør, du skal bare flytte setInterval ned i den funktion der åbner popup-vinduet i stedet for at starte den sammen med siden. Det hele skal bare ligge i den side som åbner popupvinduet:

var popupWin = {closed:true};

function checkPopup() {
  if(popupWin.closed) {
    // så er vinduet lukket
  }
  else {
    // så er vinduet åben
  }
}

function showPopup() {
  popupWin = window.open('test.html','di');
  setInterval("checkPopup()",3000);
}
Avatar billede roenving Novice
25. februar 2006 - 21:09 #14
function checkPopup(){
  try{
    window.open("test.html","popWin");
    alert("window.open blev ikke fanget af en popupstopper !-)");
  }catch(e){
    alert("window.open _blev_ fanget af en popupstopper !-)");
  }
}
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