Karl Jansen: window.open mit/ohne lokalen Apache

Hallo zusammen

Ich habe da eine Sache die mich schon verweundert und wo ich keine greifbare Lösung derzeit habe.

Also: Über einer Startseite wird ein neues Fenster über window.open geöffnet. Das neue Fenster enthält weder ein Menu, noch Shortcuts oder anderes. Also ein fenster mit 'viel Platz'.

Nur: Öffne ich die Startseite über den lokal installierten Apache Server tut sich nichts. Es wird kein Fenster geöffnet und die Alert-Abfrage nach dem Fensternamen gibt 'undefined' zurück. Lofisch, ist ja auch nichts da...
Öffne ich das Fenster direkt über den Windows-Explorer wird brav ein neues Fenster aufgemacht. Und alle so wie erwünscht.

Hat von euch jemand eine Idee, was dieses Verhalten verursacht?

Danke und Gruß, Karl

  1. hallo,

    Öffne ich die Startseite über den lokal installierten Apache Server tut sich nichts. Es wird kein Fenster geöffnet und die Alert-Abfrage nach dem Fensternamen gibt 'undefined' zurück. Lofisch, ist ja auch nichts da...
    Öffne ich das Fenster direkt über den Windows-Explorer wird brav ein neues Fenster aufgemacht. Und alle so wie erwünscht.
    Hat von euch jemand eine Idee, was dieses Verhalten verursacht?

    Mit Sicherheit nicht dein Apache, der interessiert sich absolut nicht für dein Javascript. Ohne genauere Kenntnis deines Codes wird man dir aber nicht weiterhelfen können.

    Gegebenenfalls solltest du deine Browsereinstellungen überprüfen und die Ausführung von Scripts zulassen (da irritiert allerdings deine Angabe, daß ein "alert" funktioniert). Welche Browser hast du denn probiert?

    Grüße aus Berlin

    Christoph S.

    --
    Visitenkarte
    ss:| zu:) ls:& fo:) va:) sh:| rl:|
    1. Hallo Christoph

      Interessant: Mit Firefox ist das Verhalten identisch. Auch hier wird das neue Fenster nur geöffnet, wenn die Seite nicht über den Apacxhe geladen wird.

      Das vorherige wurde im IE 6 getestet.

      function LoadWin() {
         nWidth = screen.width;
         nHeight = screen.height;
         alert (screen.width +" / " +screen.availwidth +"  - " +nWidth);
         Newwin = window.open
          ("http://localhost/buseco/main/main.php", "buseco", "left=0,
           top=0, width=" +nWidth +", heigth=" +nHeight +", menubar=no,
           location=no, toolbar=no, resizable=no, status=yes,
           dependent=no, scrollbars=no");
         alert (Newwin.name);
         Newwin.focus;
      }

      Das ist die Funktion, die das neue fenster öffnet. Die komplette URL (statt der relativen Pfaangabe) habe ich eingesetzt damit die Seite über Apache geöffnet und auch interpretiert wird).

      Gruß, Karl

      1. hallo,

        es zeigt sich mal wieder, daß man gelegentlich nachfragen sollte.

        Newwin = window.open
        ("http://localhost/buseco/main/main.php", [...]

        Dir ist bekannt, was "localhost" in deinem lokalen Apache aufruft und daß das dann ein Aufruf über HTTP ist - während ein "direkter" Aufruf aus dem lokalen Verzeichnis den Apache wie auch HTTP außen vor läßt?

        Die komplette URL (statt der relativen Pfaangabe) habe ich eingesetzt damit die Seite über Apache geöffnet und auch interpretiert wird).

        Vermutlich muß man sich wirklich deine komplette "main.php" anschauen. Dein Apache wird wohl PHP ausführen lassen dürfen, während der "Direktaufruf" die php-tags umgeht. Wenn du nun dein Javascript außerhalb von <?php ... ?> notiert hast, kriegts der Apache nicht zur Auslieferung, aber der lokale Aufruf bekommt es.

        Hm.

        Grüße aus Berlin

        Christoph S.

        --
        Visitenkarte
        ss:| zu:) ls:& fo:) va:) sh:| rl:|
        1. Dir ist bekannt, was "localhost" in deinem lokalen Apache aufruft und daß das dann ein Aufruf über HTTP ist - während ein "direkter" Aufruf aus dem lokalen Verzeichnis den Apache wie auch HTTP außen vor läßt?

          Natürlich. Daher steht es ja auch (jetzt) so in dem Aufruf. Bis vor zwei Stunden stand dort lediglich "./main/main.php". Aber das bringt wenig, wenn der IE (oder auch Firefox) es direkt abruft ohne den Server 'zu bemühen'.

          Vermutlich muß man sich wirklich deine komplette "main.php" anschauen. Dein Apache wird wohl PHP ausführen lassen dürfen, während der "Direktaufruf" die php-tags umgeht. Wenn du nun dein Javascript außerhalb von <?php ... ?> notiert hast, kriegts der Apache nicht zur Auslieferung, aber der lokale Aufruf bekommt es.

          Abgesehen vom <head>-Bereich besteht die aufrufende html-Datei aus einem sehr kleinen <body>-Tag:
          <body>
           <script type="text/javascript">
            LoadWin();
           </script>
          </body>

          Diese html-Datei (noch kein php) dient nur dazu die main.php in einem separatem Fenster ohne Menu etc. anzuzeigen.

          Gruß, Karl

          1. hallo,

            Abgesehen vom <head>-Bereich besteht die aufrufende html-Datei aus einem sehr kleinen <body>-Tag:
            <body>
            <script type="text/javascript">
              LoadWin();
            </script>
            </body>

            Ich verstehe deine etwas komplizierte Scriptstrukur nicht. In deinem posting weiter oben hattest du noch eine einigermaßen vollständige Javascript-Funktion gepostet, freilich ohne anzugeben, wann die wie aufgerufen wird. Jetzt gibts du ein vollständiges Script an, das _innerhalb_ des <body> aufgerufen wird (ist ja durchaus möglich), aber nur eine jetzt möglicherweise nicht mehr definierte Funktion "LoadWin()" aufrufen soll. Irgendwo ist deine Programmlogik nicht wirlich nachvollziehbar.

            Es hilft dir nix: um Mißdeutungen zu vermeiden und den Fehler aufspüren zu können, wird dein _gesamter_ aktiver Code benötigt. Wird das zu umfangreich, lade alles als Textdatei auf irgendeine temporäre Adresse hoch.

            Diese html-Datei (noch kein php) dient nur dazu die main.php in einem separatem Fenster ohne Menu etc. anzuzeigen.

            Schon recht, aber in der "main.php" tritt ja das Problem auf. Wobei es komplett unverständlich ist, daß ein direkter Aufruf (der kein PHP parsen lassen dürfte) das gewünschte Ergebnis liefert, ein Aufruf über den Apache (der ja wohl PHP parsen lassen darf) aber nicht. Es sollte eher genau andersherum sein.

            Aber vielleicht versteht jemand anderes deine Frage besser als ich.

            Grüße aus Berlin

            Christoph S.

            --
            Visitenkarte
            ss:| zu:) ls:& fo:) va:) sh:| rl:|