molily: Wenn Firefox -> mache PopUp größer! (status=no)

Beitrag lesen

Hallo,

Wie mir nun nach ein paar Recherchen klar geworden ist, liegt es nicht in der Hand des Programmierers zu bestimmen ob ein "window.open" Fenster in Firefox mit oder ohne Statusleiste angezeigt wird. Vielmehr hat der Benutzer selbst die Wahl ob er es zulassen will. Da nun aber die nicht zugelassene Einstellung der Standart ist, dachte ich mir das könne man doch irgendwie Umgehen, indem man ein JavaScript programmiert, das bei erkennung von Firefox das Fenster um die Statusleistenhöhe größer macht.

Auch wenn du es vielleicht nicht hören möchtest: Du bist auf eine unlösbare Aufgabe gestoßen, und der Rat, es zu vergessen, ist tatsächlich der vernünftigste.
Bitte lies einmal Popups mit JavaScript, insbesondere denjenigen Teil, der Popups an sich problematisiert.
Ich möchte noch einmal zusammenfassen:

1. Verschiedene Browser haben verschiedene Fenstermodelle. Zum einen das ursprüngliche Modell, bei dem in jedem Browserfenster auf dem Desktop eine Webseite dargestellt wird und JavaScript-Popups solche neuen Fenster erzeugen. Zum anderen "tabbed browsing", bei dem in einem Browserfenster mehrere Webseiten dargestellt werden. Der Trend geht zu tabbed browsing, aber die meisten Browser, die diese Tabs unterstützen, unterstützen je nach Benutzerwunsch auch mehrere Browserfenster.
Der springende Punkt ist nun, dass beim tabbed browsing Popups ihren Sinn verlieren, denn:
a) Die Größe und Position des Popup-Fensters sind nicht mehr steuerbar. Tabs füllen zumeist das Browserfenster vollständig aus. Verschiedene Browser ermöglichen zudem das Verbieten dynamischer Änderungen an der Fenstergröße und -position. Falls die Größe und Position trotz tabbed browsing noch steuerbar ist (z.B. standardmäßig bei Operas Multiple Document Interface), dann ist es trotzdem unangenehm für den Benutzer.
b) Die Leisten sowie die übrige Fensterkonfiguration sind nicht mehr steuerbar. Es ist ein Feature des tabbed browsing, dass Menüleiste, Symbolleiste, Adresszeile und Statusleiste unveränderbar an denselben Stellen stehen. Und selbst wenn die Fensterkonfiguration steuerbar ist, ist es unsinnig und unproduktiv, diese verbergen zu wollen (siehe weiter unten).
c) Des weiteren werden Browser immer mehr zur Kommunikationszentrale: Sidebars und andere eingebettete Zusätze schmiegen sich in der tabbed-browsing-Konzept ein und beschneiden ggf. den Raum, den der Webseite zur Verfügung steht. Ein Popup-Fenster bricht mit diesem Fenstermodell, es gibt keine Möglichkeit, mit window.open() auf solche Gegebenheiten zu reagieren.

Zwischenfazit: Das klassische Popup mit vom Seitenautor festgelegter Größe, Position und Leistenkonfiguration ist mit tabbed browsing und dem Konzept moderner Browser nicht vereinbar.

2. Aus Sicherheitsgründen bestehen immer mehr Browser darauf, dass eine Webseite gewisse Bedienelemente des Browser nicht ausschalten kann. Genannt wurde Firefox und MSIE 6 SP2. MSIE 7 wird dies noch verschärfen, indem die Adresszeile ebenfalls fest steht.
Letztlich auch aus Benutzbarkeitsgründen bieten fast alle Browser die Einstellung an, dass JavaScript-Änderungen an gewissen Leisten ignoriert werden. Aus Benutzersicht ist es wünschenswert, immer die gewohnten Bedienelemente greifbar zu haben, um mit der Webseite optimal interagieren zu können (in der History navigieren, Adresse herausfinden, Speichern, Ausdrucken, Zoomen, Text kopieren, zu einer anderen Seite wechseln etc.). Dies hängt natürlich auch mit dem jeweiligen Fensterkonzept (siehe oben) zusammen.

Zwischenfazit: Nicht nur aus Sicherheitsgründen, sondern auch aus Usability-Gründen ist es widersinnig und letztlich aussichtslos, an der Leistenkonfiguration des Popups etwas ändern zu wollen.

3. Durch die umfassenden Einstellungen moderner Browser gibt es unzählige Umgebungen, in denen JavaScript-Popups geöffnet werden. Der eine Browser hat das-und-das Fenstermodell, der andere ein unterschiedliches, wieder ein anderer nutzt ein Gemisch. Der eine individuelle Benutzer hat die-und-die Einstellungen getätigt, der andere arbeitet mit verschiedenen. Der eine hat den-und-den Browserzusatz installiert, der nächste die-und-die Funktionalität aktiviert.
Sprich, man kann nicht annehmen, dass für JavaScript-Popups bei allen Benutzer mit Browser X dieselben Bedingungen herrschen. Die Trennung in MSIE und Firefox, die du hier vornimmst, wird der tatsächlichen Vielfalt überhaupt nicht gerecht - zumal zwischen MSIE 6, MSIE 6 SP2 und kommenden MSIE-Versionen selbst große Unterschiede zu verzeichnen sind, von individuellen Einstellungen mal völlig abgesehen.
Browsererkennung hilft also überhaupt nicht weiter. Zumal Browsererkennung eine Problematik für sich ist: if (document.all && !window.opera) ist nämlich *definitiv keine* zuverlässige Erkennung, die MSIE von allen anderen Browsern trennt. Auf Konqueror trifft diese Abfrage ebenfalls zu. Außerdem denkst du in dem Fall nicht an "alle anderen Browser", sondern nur an Firefox. Bitte lies den Link von Cyx23 aufmerksam, wenn du wirklich diesen Weg gehen willst.

Zwischenfazit: Auf die Mannigfaltigkeit der Gegebenheiten und Einstellungen der Browserumgebung kann man nicht mit einer vereinfachenden Browsererkennung reagieren. Man kann dadurch nicht einmal die häufigsten Fälle angemessen berücksichtigen. Dadurch wird das JavaScript-Popup nicht so dargestellt, wie es sich der Autor gewünscht hat. Hinzu kommt, dass das Popup mangels Anpassungsfähigkeit aus dem Rahmen fällt: Es behindert unter Umständen die komfortable Benutzung der Webseite.

Fazit: Diese von meinen Vorrednern angesprochenen, hier nur näher ausgeführten Aspekte zeigen, wie aussichtslos und problematisch der Versuch ist, ein JavaScript-Popup anpassungsfähig zu bekommen. Was dein Problem angeht, die Popup-Größe an die Größe der darin anzuzeigenden Grafik anzupassen, so solltest du von diesem Anspruch Abstand nehmen. Wenn es nicht genau passt, finde dich damit ab. Es ist bekannt, dass von Fenstergröße nicht auf Viewport-Größe (dem Raum, der der Webseite letztlich zur Verfügung steht) geschlossen werden kann. Wenn du die Grafik unbedingt in einem neuen Fenster öffnen willst, mache dir um die Größe einfach keine Gedanken. Letztlich kannst du auch Methoden wählen, die die Grafik in der bereits bestehenden Seite anzeigen (habe gerade meine Bookmarks nicht zur Hand - hier im Forum wurde ein solches Script schon öfters vorgestellt).

Mathias