tschilp: Seltsames Problem mit dem IE und window.open

Hallo

Ich hänge an einem Problem fest ! Aus einem Frameset will ich nen Link in einem neuen, leeren Fenster mit def. Grösse und Scrollbar aufrufen ....

Also öffne ich mir das gewünschte Fenster mit

function winopen(){
newwin=window.open("","window","width=700,height=550,scrollbars")}

und rufe die Seite auf ( über diesen Link werden auch Variablen mit übergeben - er muß also sein ! )

<a href="seiten/ordner/neueseite.htm" onClick="winopen()" target="window">blahblah</a>

Das geht ja soweit auch - Bei NETSCAPE ! Der Browser lädt den Inhalt des Links auch 'brav' in das neue Fenster "window" !

Anders der EXPLODER *g* Der IE öffnet mir das neue Fenster "window", lässt es 'blank' und öffnet schnell noch ein drittes Fenster ( diesmal leider wieder nicht nach den "window" Spezifikationen ) mit Toolbar etc., was ich ja gerade NICHT haben will ... In diesem (dritten) Fenster stellt er dann auch den Link dar.

Aus für mich nicht nachvollziehbaren Gründen schafft es der IE - manchmal - auch das Ganze im Fenster "window" darzustellen ... und er öffnet auch kein drittes Fenster !!! ( jetzt gerade wieder - grrrrrr )

Jetzt such ich mir nen Wolf und versuche dafür zu sorgen, daß der IE das mit dem dritten Fenster mal besser gleich bleiben lässt und stattdessen den Link IMMER im leeren "window" anzeigt !

Für jede Idee wäre ich dankbar !

  1. Hi tschilp,

    Für jede Idee wäre ich dankbar !

    Na, eine Idee hätt ich: schon mal mit korrekter Syntax versucht? Als ersten Parameter der Funktion musst Du natürlich die Datei relativ odser absolut referenzieren (vgl. <../../tecb.htm#a35>) - woher soll der Browser denn sonst wissen, was er in dem Fenster öffnen soll?

    Deine "Konstruktion" (Fenster mit Namen aufmachen via JS aufmachen - dann per HTML-Target da Deinen Link reinschreiben) scheitert an Timingproblemen. Kannst Du noch mal erklären, _warum_ er so sein soll? Hab ich nicht verstanden...

    Grüße,

    Utz

    1. Hi tschilp,

      Für jede Idee wäre ich dankbar !

      Na, eine Idee hätt ich: schon mal mit korrekter Syntax versucht? Als ersten Parameter der Funktion musst Du natürlich die Datei relativ odser absolut referenzieren (vgl. <../../tecb.htm#a35>) - woher soll der Browser denn sonst wissen, was er in dem Fenster öffnen soll?

      Würde ich ja gerne, aber das Problem ist folgende: Die URL der Seite von der der Link aufgerufen wird hat angehängte Variablen eines CGI Programms ( ../programm.cgi?file=ABC&ID=1234567890 ). Der Versuch die Variablen auszulesen und mit zu übergeben um sie an die neue URL anzuhängen ist gescheitert. Der Grund dafür mag sein, das sich ja auch der 'file=ABC' Wert je nach abgeklicktem Link verändert. Den auszulesen und mit zu übergeben sowie dann die ID dranzuhängen habe ich nicht hinbekommen ... ;-(((

      Deine "Konstruktion" (Fenster mit Namen aufmachen via JS aufmachen - dann per HTML-Target da Deinen Link reinschreiben) scheitert an Timingproblemen. Kannst Du noch mal erklären, _warum_ er so sein soll? Hab ich nicht verstanden...

      Daher dann die Idee mit dem HTML Target. Die so erzeugten Links übergeben sowohl den neuen 'file=XYZ' Wert des Links als auch die angehängte ID korrekt weiter ... Soweit die Begründung für den Versuch.

      Vielleicht weißt Du dazu eine andere Lösung ( mit korrekter Syntax ) oder hast eine Idee wie man mit dem Timingproblem klar kommen kann ???
      Wie gesagt - der Navigator kann es - immer - der Explorer - manchmal - ....

      Liebe Grüsse

      1. Hi tschilp,

        hhmmmm...ich hätt' noch ne Idee, aber ob die funzt - keine Ahnung!
        Folgendes: Falls es stimmt, dass der Browser bei einem Link zuerst den JavaScript-Teil und dann den HTML-Teil ausführt, müsste sich da was machen lassen.
        Auch wenn Du es nicht explizit angibst, gibt Deine Funktion ein return true; an den aufrufenden Eventhandler zurück. Hier könnte man versuchen, das zu verzögern, bis das Fenster auch wirklich da ist. Versuch mal, nach Deinem window.open-Befehl einen (ziemlich langen) setTimeout einzubauen (und danach return true;). Wenn an meiner Idee was dran ist, wäre das ein Weg, die Sache in den Griff zu kriegen. Kann aber auch sein, dass das alles völlig debiles Gebrabbel war. Versuch's halt mal.

        Grüße,

        Utz

        1. Hallo Utz ( hab ich doch die Begrüssung beim letzten Posting glatt vergessen ) Entschädigung :

          Hallo Utz !

          Erstmal Danke für die Idee - werde ich gleich mal austesten ... ;-)))

          Ich hatte noch eine andere wg. Timingproblem :

          Man könnte ja auch das zweite Fenster bereits beim Aufrufen der Seite, von der die Links ausgehen im Hintergrund laden ( onload="winopen()" ) - dann sollte es ja schon 'offen' sein, wenn ich den Link anklicke ...

          Das wäre meine neueste Idee dazu ... aber dann ist da immer ein Fenster offen, auch wenn keiner die Links benutzt ... hmmm
          Vielleicht kann man das ja minimieren, bis da etwas reingeladen wird ... *denkt weiter ...

          Liebe Grüsse
          Tschilp

        2. Hi Utz!

          Folgendes: Falls es stimmt, dass der Browser bei einem Link zuerst den JavaScript-Teil und dann den HTML-Teil ausführt, müsste sich da was machen lassen.

          Das onClick wird eher ausgefuehrt, das stimmt schon, sonst koennte man ueber den Rueckgabewert true/false ja nicht steuern, ob der Link ausgefuehrt wird.

          Hier könnte man versuchen, das zu verzögern, bis das Fenster auch wirklich da ist.

          Koenntest Du nur in eine busy-wait-Schleife, also  while (!fenster geoeffnet) ;  --> keine gute Idee!

          Versuch mal, nach Deinem window.open-Befehl einen (ziemlich langen) setTimeout einzubauen (und danach return true;).

          Da hast Du setTimeout wohl falsch verstanden. Das ist *kein* sleep oder sowas. Es wird ein Timeout gesetzt, der im Hintergrund (vom OS) abgewartet wird, dann wird ein Signal an den Browser gesendet, der dann den spezifizierten Code ausfuehrt. Die Ausfuehrung des aktuellen Codes geht aber sofort weiter.

          Leider habe ich nicht verstanden, was tschilp's Problem ueberhaupt ist, sodass ich da auch nichts weiter sagen kann.

          So long

          1. »»Leider habe ich nicht verstanden, was tschilp's Problem ueberhaupt ist, sodass ich da auch
            »»nichts weiter sagen kann.

            So long

            Hi Calocybe

            Ich hatte gehofft das 'Problem' in meinem zweiten Beitrag treffend geschildert zu haben ...
            Hast Du den auch gleich mitgelesen ???

            Danke - tschilp

      2. Hallo tschilp,

        Würde ich ja gerne, aber das Problem ist folgende: Die URL der Seite von der der Link aufgerufen wird hat angehängte Variablen eines CGI Programms ( ../programm.cgi?file=ABC&ID=1234567890 ). Der Versuch die Variablen auszulesen und mit zu übergeben um sie an die neue URL anzuhängen ist gescheitert. Der Grund dafür mag sein, das sich ja auch der 'file=ABC' Wert je nach abgeklicktem Link verändert. Den auszulesen und mit zu übergeben sowie dann die ID dranzuhängen habe ich nicht hinbekommen ... ;-(((

        :-) na dann sorgt man schlicht und einfach dafür, daß die Funktion ihre Parameter erhält und zwar ohne großen Aufwand:

        function winopen(a){
        newwin=window.open(a,"window","width=700,height=550,scrollbars=1")}

        <a href="seiten/ordner/neueseite.htm" onClick="winopen(this.href);return false;" target="window">blahblah</a>

        this.href übergibt an die Funktion die komplette url, return false sorgt dafür, daß der Link nicht ausgeführt wird und unterbindet damit dein IE-Problem und javascript untaugliche Browser kommen auch zu ihrem Recht.

        Viele Grüße

        Antje

        <img src="http://pc-anfaenger.de/pca/sam/pcanfaenger.gif" alt="">