Felix Riesterer: verrechnet sich der IE gerne mal in JS?

Liebe Selfer,

für meinen Admin-Bereich habe ich mir ein JS-Popup geschrieben, das sich beim Aufruf selbst resized. Dazu ermittle ich mit screen.availWidth und screen.availHeight die mögliche Maximalgröße meines Fensters, um es dann bei 75% davon einzurichten und zu zentrieren. Lokal (WinXP, Apache2, PHP) klappt das auch so, wie ich mir das vorstelle.

Wenn ich den identischen Code von meinem Webspace aufrufe, dann resized der IE nicht korrekt, so dass im Popup-Fenster nicht alles zu sehen ist. Durch erneutes Laden des Dokumentes im Popup resized der IE dann endlich so, wie es beabsichtigt ist. Warum tut er das nicht schon beim ersten Aufruf? Und warum tut er das lokal beim ersten Aufruf sofort richtig? Mein FF verhält sich in beiden Fällen wie beabsichtigt.

Wer hatte schonmal ähnliche Beobachtungen gemacht? Es scheint so, als ob der IE beim ersten Laden des Popups im onload-Event die Werte von screen.availWidth und screen.availHeight nicht korrekt ermittelt (was ja keinen Sinn ergibt)...

Liebe Grüße aus Ellwangen,

Felix Riesterer.

  1. Liebe Selfer,

    Es scheint so, als ob der IE beim ersten Laden des Popups im onload-Event die Werte von screen.availWidth und screen.availHeight nicht korrekt ermittelt (was ja keinen Sinn ergibt)...

    Genauer beobachtet stimmen die ermittelten Werte, denn von der Platzierung her ist das Fenster an der richtigen Position, aber seine Maße sind zu kurz, sowohl in x-, als auch in y-Richtung. Anscheinend will self.resize() erst beim zweiten Anlauf korrekt arbeiten.

    Fehlermeldungen bekomme ich keine. Auch nicht im FF.

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Moin!

      Fehlermeldungen bekomme ich keine. Auch nicht im FF.

      Lass Dir mal mit einem alert() ausgeben, was  der Buam (und ob er überhaupt was) ausrechnet.

      Beim IE 6 auf WinXP mit Servicepack 2 habe ich beim Thema Javascript zunehmend das Gefühl man kann nur noch orakeln, ob er es tut, wann er es tut und wie er es tut. Microsoft sollte den "Browser" einstellen und den für die Weiterentwicklung geplanten Betrag anonym an die Mozilla Foundation spenden... (Aber bitte nicht Opera kaufen)

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
      1. Lieber fastix,

        was  der Buam (und ob

        "Buam"? Bist wohl a Bayer? Mei, des gfreit mi jetzt wirklich!

        Moin!

        Des basst jetzt net g'rad zu am Bayern... :-(

        ob er überhaupt was) ausrechnet.

        Er rechnet korrekt, aber er resized nicht korrekt. Auch mit festen Werten (z.B. self.resizeTo(960, 768)) hat das Fenster die falschen Ausmaße.

        Beim IE 6 auf WinXP mit Servicepack 2 habe ich beim Thema Javascript zunehmend das Gefühl man kann nur noch orakeln, ob er es tut, wann er es tut und wie er es tut.

        Hmm. Das klingt ja sehr traurig. Ich werde mich wohl wirklich mit dem Gedanken anfreunden müssen, den IE "unter ferner liefen" zu unterstützen und damit zufrieden sein, wenn es "irgendwie" tut.

        Microsoft sollte den "Browser" einstellen und den für die Weiterentwicklung geplanten Betrag anonym an die Mozilla Foundation spenden...

        Also wenn der IE7 mit den Standards wirklich zusammenpasst, alles CSS wirklich konform umsetzt, dann soll M$ schön weiter daran arbeiten! Da bin ich _sehr_ dafür! Wenn der IE7 dann "fertig" ist, dann soll M$ _sofort_ alle Hintertürchen schließen, jegliches proprietäre Gedöns rausreißen und einen "cleanen" Browser veröffentlichen. Jawohl. Ob der tabbed browsing unterstützt wäre mir (der ich das im FF sehr schätze!) echt schnurz-piep-egal!

        (Aber bitte nicht Opera kaufen)

        Da stimme ich Dir voll und ganz zu!

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Moin!

          Moin!
          Des basst jetzt net g'rad zu am Bayern... :-(

          Bin ich auch nicht. Ich bin ein polyglotter Sachse. (Obwohl das schon wieder einen Tautologie ist. Alle Sachsen sind, genetisch bedingt, polyglott.)

          Das "Moin" gebe ich öfter von mir um im norhessischen Nebel nicht mit Kamelen zusammenstoßen.

          MHFG (Mit hinterfotzigem Grinsen)

          fastix®

          --
          Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Hi,

    Wer hatte schonmal ähnliche Beobachtungen gemacht? Es scheint so, als ob der IE beim ersten Laden des Popups im onload-Event die Werte von screen.availWidth und screen.availHeight nicht korrekt ermittelt (was ja keinen Sinn ergibt)...

    Hast du das durch an der richtigen Stelle versuchtes Debuggen bestätigen können?

    Grüße aus Barsinghausen,
    Fabian

    --
    "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
    1. Lieber Fabian,

      inzwischen habe ich im Popup mal feste Werte eingegeben:

      self.resizeTo(960, 768);

      Interessanterweise wird das Popup auch damit nicht korrekt resized! Die mit screen.availWidth bzw. screen.availHeight ermittelten Werte wurden korrekt bestimmt. Dieser Verdacht hat sich nicht erhärten können.

      Was soll man da machen, wenn erst beim Reload des Popups (mit F5 bzw. "aktualisieren", nicht durch erneutes Anklicken des auslösenden Buttons!) die Methode resizeTo() korrekt arbeitet?

      Wie gesagt, von meinem lokalen Apachen geladen öffnet sich das Popup im IE mit den korrekten Dimensionen. Nur aus dem Netz aufgerufen will der IE nicht auf Anhieb. Sehr seltsam!

      Liebe Grüße aus Ellwangen,

      Felix Riesterer.

      1. Hi,

        inzwischen habe ich im Popup mal feste Werte eingegeben:

        self.resizeTo(960, 768);

        Interessanterweise wird das Popup auch damit nicht korrekt resized! Die mit screen.availWidth bzw. screen.availHeight ermittelten Werte wurden korrekt bestimmt. Dieser Verdacht hat sich nicht erhärten können.

        Was soll man da machen, wenn erst beim Reload des Popups (mit F5 bzw. "aktualisieren", nicht durch erneutes Anklicken des auslösenden Buttons!) die Methode resizeTo() korrekt arbeitet?

        Naja  du könntest durch Cookies kontrollierte Refreshs machen. Will sagen: Wenn das Fenster zuerst geöffnet wird erstellst du ein Cookie "1". Dann machst du einen JS-Refresh. Danach setzt du den Cookie auf 2, sodass kein Refresh mehr passiert. Wenn das PopUp geschlossen wird räumst du den Cookie halt wieder weg.

        Grüße aus Barsinghausen,
        Fabian

        --
        "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
        1. Lieber Fabian,

          Naja  du könntest durch Cookies kontrollierte Refreshs machen. Will sagen: Wenn das Fenster zuerst geöffnet wird erstellst du ein Cookie "1". Dann machst du einen JS-Refresh. Danach setzt du den Cookie auf 2, sodass kein Refresh mehr passiert. Wenn das PopUp geschlossen wird räumst du den Cookie halt wieder weg.

          Steht das im Verhältnis zum Nutzen? Da habe ich meine Zweifel... Lieber surfe ich per Firefox in meinen Admin-Bereich, als dass ich für Ausnahmen mit dem IE solche Kekskrümeleien machen muss. Da ist doch ein F5 mit anschließender Bestätigung der POST-Daten immer noch simpler.

          Aber Danke für Deine kreativen Vorschläge! Sie helfen mir sicher ein andermal in einer passenderen Situation!

          Liebe Grüße aus Ellwangen,

          Felix Riesterer.