Hi,
Ein Popup-Blocker greift üblicherweise, wenn window.open in einem Handler eines Events aufgerufen wird, welcher nicht vom User initiiert wurde.
eigentlich sollte er bei *jedem* Aufruf von window.open() eingreifen und ihn unterbinden - wenn die aktuell geladene Seite nicht in der Whitelist steht.
Wenn du window.open z.B. in einem normalen click-Handler aufrufst, sollte der Blocker nicht greifen.
Doch, sollte er. Sonst ist er nutzlos. Denn der Löwenanteil aller Popups kommt als Reaktion auf einen Klick. Auch den in Firefox integrierten Blocker finde ich nutzlos, solange er mit der Defaulteinstellung betrieben wird, wo Popups innerhalb von 2s nach einem Mausklick oder einem Tastendruck zugelassen werden. Dann kann ich auch gleich drauf verzichten. Erst nachdem ich diese Ausnahmen aus der Config gelöscht habe, hat der Blocker wirklich einen Sinn.
Ein guter (d.h. wirksamer) Popup-Blocker sollte vielmehr die Methode window.open() durch eine interne Funktion ersetzen, die prüft, ob URL in der Whitelist aufgeführt ist, und falls ja, den Aufruf an die ursprüngliche Methode durchreicht, andernfalls einfach null zurückgibt.
Außerdem sollte er den HTML-Quellcode oder das DOM nach target-Attributen durchkämmen und sie entfernen, es sei denn, sie verweisen auf bereits geöffnete Fenster (z.B. in Framesets).
Keinesfalls sollte das Verhalten aber von irgendwelchen Events abhängig sein.
So long,
Martin
Wenn man keine Ahnung hat - einfach mal Fresse halten.
(Dieter Nuhr, deutscher Kabarettist)
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(