# PopUp - Blocker



## bauchinj (3. Februar 2010)

Hallo!

Kann man mittels JavaScript ermitteln, ob beim Browser eingestellt ist, dass PopUps geblockt werden?

Danke für eure Antworten


----------



## Sven Mintel (3. Februar 2010)

Servus,

eigentlich nicht wirklich, es gibt keine echte Information des Browsers an JS darüber, ob ein Popupblocker am Werk ist.

Was geht: da ein Popup ja ein in JS verfügbares window-Objekt mit seinen entsprechenden Methoden/Eigenschaften ist, kann man, nachdem der Versuch vorgenommen wurde, ein Popup zu Öffnen, prüfen, ob dieses auch existiert.
Das geht aber halt erst nach dem Öffnungs-Versuch.

Aber mal reel betrachtet:
Ich gehe mittlerweile einfach davon aus, dass jeder einen Popupblocker an hat und verfahre dementsprechend.


----------



## bauchinj (3. Februar 2010)

Hallo nochmal!


```
<script type="text/javascript">
var PopUp;
</script> 
<input type="button" value="PopUp öffnen!" onclick="PopUp= window.open('','webinterface','resizable=yes,fullscreen=yes,location=no');" />
<input type="button" value="Teste ob geöffnet!" onclick="alert(PopUp.document ? 'PopUp offen' : 'PopUp geschlossen')" />
```

So funktionierts, auch wenn der Pop-Up-Blocker aktiv ist!

<script language="javascript">
var win;
win = window.open("","win","resizable=yes,fullscreen=yes,location=no");	


```
function openWindow(){
	alert(typeof win);
	if(typeof win == 'undefined'){
		document.writeln("Bitte erlauben Sie Pop-ups für diese Seite!");
	}
	else{
		//win.location.href = "index.php";
		//this.location.href = 'http://www.tutorials.de';
	}
	alert(win.document ? 'PopUp offen' : 'PopUp geschlossen')
}
</script>
<?
echo "<script type=\"text/javascript\">openWindow();</script>";
?>
```

win ist leider nicht vom Typ 'undefined' sondern 'object'. Es wird KEIN Fenster geöffnet, sondern geblockt! Meine Frage, wie erkenne ich, ob das Fenster geöffnet wurde, so funktionierts wohl nicht :-(


----------



## Sven Mintel (3. Februar 2010)

bauchinj hat gesagt.:


> win ist leider nicht vom Typ 'undefined' sondern 'object'.



Dass es ein Objekt ist, heisst nicht, dass es *etwas* ist.
Im FF ist es bei mir zwar ein Objekt, aber trotzdem NULL

Man muss da halt herumbasteln, jeder Browser braut da sein eigenes Süppchen.


----------



## bauchinj (3. Februar 2010)

Hallo hab mich nun duchgerackert:
getestet sind folgende Browser (bei mir funktionieren diese Versionen):


```
win= window.open("http://www.google.at","win","resizable=yes,fullscreen=yes,location=no");
if(win == null){
	//IE 8
	alert('IE');
}
else if(win.document == undefined){
	//safari 3.2.1
	alert('Safari');
}
else if(win.document == undefined){
	//google chrome 4
	alert('Chrome');
}
else if(win == null){
	//firefox 3.5.7
	alert('Firefox');
}
else{
	alert('OK');
}
```

Ein Sorgenkind hab ich allerdings noch: *OPERA 10.10* - hat bei diesem Browser jemand ne Lösung?


----------



## Sven Mintel (4. Februar 2010)

Bei meinem Opera(9.50) gehts so:


```
try{
    if(window.opera && typeof win.opera=='undefined')
    {
      alert('Opa hats geblockt');
    }
  }catch(e){}
```

Beachte, dass du da generell etwas mehr mit try/catch arbeiten musst.
Sofern du da externe Seiten im Popup öffnen willst(nehme ich mal an, oder bist du Besitzer von google.at? ) , verursachst du Fehler, wenn das Popup nicht geblockt  wurde und du auf seine Eigenschaften wie bspw. document zugreifen willst.


----------

