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

Hallo und guten Abend allerseits.
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.
Nun bin ich aber kein JavaScript programmierer (das lesen fällt einfacher) und weiß nicht wie ich die Fragmente richtig zusammen bauen kann. Bisher ein kleiner Ansatz:

<script language="javascript" type="text/javascript">

var fensterhoehe = 0;
if(navigator.appName == "Firefox"){
fensterhoehe = 315;
}
else{
fensterhoehe=285;
}
function FensterQuer(Ziel,Dateiname)
{
NewWindow=window.open("about:blank","Dateiname","dependent=yes,left=100,top=100,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no,width=1,height=1");
        NewWindow.document.write ("<html><head><title>"+Dateiname);
        NewWindow.document.write ("</title></head>");
        NewWindow.document.write ("<body style='margin:0px;' marginwidth='0' marginheight='0' onload='focus()'>");
        NewWindow.document.write ("<img src="+Ziel+" border='0'>");
        NewWindow.document.write ("</body></html>");
        NewWindow.resizeTo(350,fensterhoehe);
}

</script>

Dazu der Link
<a href="javascript:FensterQuer('img/Deko01.jpg','Deko01')">
---
Das Fenster (mit Inhalt) und richtiger größe öffnet sich soweit im IE. Doch ist die größe im Firefox nicht anders. Somit habe ich wieder eine Statuszeile und zwei Scrollbalken.

Weiß jemand Rat?

Gruß
Paul

  1. Hallo,

    Das Fenster (mit Inhalt) und richtiger größe öffnet sich soweit im IE. Doch ist die größe im Firefox nicht anders. Somit habe ich wieder eine Statuszeile und zwei Scrollbalken.

    bei diesem Test deiner Abfrage verhalten sich beui mir IE und FireFox gleich:

    <script language="javascript" type="text/javascript">
     if(navigator.appName == "Firefox")alert("f")
     else alert(0);
    </script>

    Wenn du wirklich bestimmte Browser erkennen musst (u.U. gehts ja doch anders) ist vielleicht
    Browsererkennung durch JavaScript interessant für dich.

    Grüsse

    Cyx23

    1. Hey danke vielmals..
      Es funktioniert alles und ich darf wieder glücklich sein :)

      ---Ende---

      <script language="javascript" type="text/javascript">
      <!--- Hide script from old browsers
      var fensterhoehe = 0;
      if(document.all&&!window.opera){
      fensterhoehe = 285;
      }
      else{
      fensterhoehe=355;
      }
      function FensterQuer(Ziel,Dateiname)
      {
      NewWindow=window.open("about:blank","Dateiname","dependent=yes,left=100,top=100,location=no,menubar=no,resizable=yes,scrollbars=no,status=no,toolbar=no,width=1,height=1");
              NewWindow.document.write ("<html><head><title>"+Dateiname);
              NewWindow.document.write ("</title></head>");
              NewWindow.document.write ("<body style='margin:0px;' marginwidth='0' marginheight='0' onload='focus()'>");
              NewWindow.document.write ("<img src="+Ziel+" border='0'>");
              NewWindow.document.write ("</body></html>");
              NewWindow.resizeTo(350,fensterhoehe);
      }
      // end hiding from old browsers -->
      </script>

      1. Hallo Paul,

        Hey danke vielmals..
        Es funktioniert alles und ich darf wieder glücklich sein :)

        Du weißt sicherlich, dass auch der IE unter Windows XP SP2 die Statusleiste immer anzeigt?

        Freundliche Grüße

        Vinzenz

  2. Hallo Paul,

    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.

    Richtig - aber: Grosser Irrtum ;-)

    Realitaet 1: Javascript wird nicht interpretiert -> es passiert nichts.
    Realitaet 2: Useragent ist z.B. Firefox (AFAIK sogar als default) -> kein Fenster, sondern ein neuer Tab wird geoeffnet - mit allem "Brimborium", also Leisten, Sidebars etc..

    Weiß jemand Rat?

    Vergiss es ;-)

    gruesse
    rainer groth

    --
    (--> einer der letzten bauhaeusler <--)
    wer die Charta nicht beachtet, bekommt von mir keine antwort - basta!
    Self-Code: ie:{ fl:( br:> va:) ls:& fo:| rl:( n4:( ss:| de:] js:( ch:? mo:? zu:)
    Was ist der Self-Code?
  3. Hi,

    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.

    und auch nicht, ob die Adreßzeile oder weitere Elemente (bei mir die Webdeveloper Toolbar) angezeigt werden.

    indem man ein JavaScript programmiert, das bei erkennung von Firefox das Fenster um die Statusleistenhöhe größer macht.

    Auch hier übersiehst u eine Kleinigkeit: Das _nachträgliche_ Verändern der Fenstergröße wird oft missbraucht und kann ebenfalls im Firefox deaktiviert werden - bereits in den Grundeinstellungen und nicht komplizierter über die Konfigurationsdatei.

    freundliche Grüße
    Ingo

  4. 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