Popupfenster - ja, aber bitte richtig

Seit dem Rollout von XP-SP2 und dem darin enthaltenen Popup-Blocker häufen sich mir leider die Webseiten die weder mit Mozilla/Firefox noch mit IE vernüftig bedienbar sind. Einer der meisten Gründe sind falsch eingebunden Popupfenster, welche nicht durch einen eigentlichen Benutzerevent ausgelöst werden (und desshalb gnadenlos geblockt werden), oder Funktionalitäten die zu 100% JavaScript voraussetzen und keine Alternativen bieten.

Ich verwende schon seit Jahren ein doppelt-gemoppeltes Verfahren, welches mit jedem Browser zum Erfolg führt. Die Ausgangslage ist zunächst ein herkömmlicher Link ohne jegliche Scripts, die das Zielfenster als neues Browserfenster öffnen. So öffnet sich so oder so schon mal ein Fenster, ob mit oder ohne JavaScript.

<a href="http://www.aspguru.ch/blog/" target="_blank">mein Blog</a>

Der a-Tag (niergendwo sonst gehören Scriptaufrufe in dem Kontext rein) wird nun durch folgenden Event ergänzt. Bevor die Funktion des a-Tags zur Umsetzung kommt, findet ein JavaScript Aufruf statt, der sich via "return" ein Veto der ganzen Aktion vorbehält. this.href übergibt der Funktion die href-Information des Links.

onclick="return popup(this.href)"

Die eigentliche popup Funktion kann dann z.B. so aussehen. Wichtig ist das "return false;", welches nach dem aufpoppen des Fensters die ursprüngliche Funktion des Links abbricht (also das oben erwähnte Veto einlegt).

function popup(URL)
   {
   mywindow = window.open(URL,"mywindow","width=800,height=600");
   return false;
   }

Da das neue Fenster über eine Benutzeraktion ausgeführt wird (onclick), lässt es der Popup-Blocker zu. Hat ein Benutzer nun JavaScript gänzlich deaktivert, kommt die reine HTML-Variante zum Zug und die Seite bleibt trotzdem bedienbar.

Print | posted @ Monday, February 14, 2005 3:54 PM