Henry: window.open document.write Warum nicht immer about:blank

problematische Seite

Hallo,

ich kann mich irren, dachte aber das wäre früher anders gewesen.

Wenn ich das Beispiel hier aus dem Wiki nehme und die URL wegnehme ensteht ein neues Fenster und im Browser gibts auch keine URL, da steht dann nur about:blank.

function fensterOeffnen() {
var w= window.open('');
}

Ok, genau so möchte ich das auch. Aber wenn ich dann anfange in dieses Fenster zu schreiben, steht im Browsercontent zwar der Inhalt wie gewünscht, leider aber auch die Domain von selfhtml in der Adresszeile, was den Nachteil hat, dass der Quelltext da drin dann Sachen von selfhtml hat, die ich gar nicht möchte.

function fensterOeffnen() {
var w= window.open('');
w.document.write('halloooooooo');
}

Ist das irgendein Sicherheitsding und lässt sich das ändern und war das früher nicht anders?

Gruss
Henry

--
Meine Meinung zu DSGVO & Co:
„Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“

akzeptierte Antworten

  1. problematische Seite

    Lieber Henry,

    steht im Browsercontent zwar der Inhalt wie gewünscht, leider aber auch die Domain von selfhtml in der Adresszeile,

    Hast Du denn auch etwas sinnvolles in das title-Element geschrieben?

    was den Nachteil hat, dass der Quelltext da drin dann Sachen von selfhtml hat, die ich gar nicht möchte.

    So? Welche denn? Und welche sollen da nicht sein?

    Ist das irgendein Sicherheitsding und lässt sich das ändern und war das früher nicht anders?

    Das ist eine rhetorische Frage, denn früher war grundsätzlich alles anders, und zwar besser. Der Mensch glorifiziert die Dinge in seiner Erinnerung. Das ist doch längst allseits bekannt.

    function fensterOeffnen() {
      const
        MeinFenster = window.open("about:blank", "Zweitfenster", "width=300,height=400,left=100,top=200"),
        html = [
          "<!doctype html>",
          '<html lang="de">',
          '<head>',
          '<meta charset="utf-8">',
          "<title>Neu</title>",
          "</head>",
          "<body>",
          "<h1>Neu</h1>",
          "<p>ein neues Fenster!<br>(Besser wäre aber auf solche Popup-Boxen zu verzichten!)</p>",
          "</body>",
          "</html>"
        ].join("\n");
    
    	MeinFenster.document.write(html);
    	MeinFenster.focus();
    }
    

    Liebe Grüße

    Felix Riesterer

    1. problematische Seite

      Hallo Felix,

      Hast Du denn auch etwas sinnvolles in das title-Element geschrieben?

      Warum?

      was den Nachteil hat, dass der Quelltext da drin dann Sachen von selfhtml hat, die ich gar nicht möchte.

      So? Welche denn? Und welche sollen da nicht sein?

      Das hängt davon ab, wo man das öffnet. Wenn ich das bei selfhtml öffne(frickl), dann bleibt auch die Domain und der ensprechende (versteckte) Quelltext im Pop-up.

      Das ist eine rhetorische Frage, denn früher war grundsätzlich alles anders, und zwar besser. Der Mensch glorifiziert die Dinge in seiner Erinnerung. Das ist doch längst allseits bekannt.

      Nö, nicht rhetorisch. Von besser habe ich ja nichts geschrieben, wollte nur wissen ob ich mich da irre.

      function fensterOeffnen() {
      ...
      }
      

      Das bringt die gleiche Problematik, siehe hier. (Beim Pop-up den Quelltext anzeigen lassen)

      Gruss
      Henry

      --
      Meine Meinung zu DSGVO & Co:
      „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
      1. problematische Seite

        Hallo Henry,

        ich glaube, du musst klarer beschreiben, was du möchtest.

        Bis demnächst
        Matthias

        --
        Du kannst das Projekt SELFHTML unterstützen,
        indem du bei Amazon-Einkäufen Amazon smile (Was ist das?) nutzt.
        1. problematische Seite

          Hallo Matthias,

          ich glaube, du musst klarer beschreiben, was du möchtest.

          hmmm… danke für den Hinweis. Ist für mich schwer einzuschätzen, dachte aber wäre klar.

          Ich möchte in einem Pop-up nicht den Quelltext der jeweiligen Seite, von der das Fenster aus geöffnet wurde, mit drin haben. Es soll autark sein. Beispiele habe ich ja schon gegeben.

          Gruss
          Henry

          --
          Meine Meinung zu DSGVO & Co:
          „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
      2. problematische Seite

        Hallo Henry,

        ich habe das mit Firefox und Chrome gemacht (also das Popup-Experiment mit der TryIt Seite).

        Das bringt die gleiche Problematik

        Ja, welche denn?

        • Das Tab enthält "Neu"
        • Das Fenster enthält exakt den Text, den das HTML angibt
        • Seitenquelltext ist leer (weil die URL keinen Quelltext liefert)
        • FF: Inspektor zeigt nichts an (hä?)
        • Chrome: Inspektor zeigt das DOM des per document.write gesetzten HTML

        Kann es sein, dass da nur bei Dir irgendwas seltsam läuft, auf Grund von Extensions?

        Rolf

        --
        sumpsi - posui - obstruxi
        1. problematische Seite

          Hallo Rolf,

          ups… stimmt, das liegt wohl an einem internen Mechanismus von Tryit. Bei der Liveversion habe ich das Problem, aber um hier zu posten musste ich das speichern und bei der gespeicherten Version findet irgendein Umleitungsmechanismus stzatt, der tatsächlich keinen internen Quelltext von Tryit enthält.

          Leider lassen sich Frickl-Experimente ja nicht abspeichern. Aber wenn du diese Funktion

          function fensterOeffnen() {
          var w= window.open('');
          w.document.write('halloooooooo');
          }
          

          dort

          https://wiki.selfhtml.org/extensions/Selfhtml/frickl.php/Beispiel:JS-window-open-1.html#view_result

          verwendest, ist vielleicht klarer was ich meine.

          Gruss
          Henry

          --
          Meine Meinung zu DSGVO & Co:
          „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
          1. problematische Seite

            Nachtrag:

            Wird immer mysteriöser. Das Pop-up enthält nicht nur den Quelltext der Domain, sondern den eigenen geschriebenen Context gar nicht, obwohl er ja angezeigt wird, nur eben nicht im Quelltext. Übrigens, mit Quelltext meine ich rechte Maustaste Quelltext, nicht Entwicklertools.

            Gruss
            Henry

            --
            Meine Meinung zu DSGVO & Co:
            „Principiis obsta. Sero medicina parata, cum mala per longas convaluere moras.“
            1. problematische Seite

              Hallo Henry,

              da kommen mehrere Effekte herein.

              1. "Seitenquelltext" lädt den Quelltext vom Server und zeigt nicht das aktuelle DOM an.
              2. Firefox lässt die URL des Dokuments bestehen, auch wenn Du das DOM überschreibst. Chrome tut das nicht.

              Heißt: du rufst window.open("https://forum.selfhtml.org") auf und überschreibst das DOM. Der Fuchs meint aber, das wäre noch die alte URL, und lädt bei "Seitenquelltext anzeigen" den Sourcecode neu vom Server (oder aus dem Cache; das müsste man im Netzwerktrace nachvollziehen).

              Deswegen habe ich ja auch den Inspektor verwendet. "Seitenquelltext" zeigt das, was der Server geliefert hat und keine reHTMLisierung des aktuellen DOM.

              Chrome ersetzt beim document.write die URL durch about:blank - was auch sinnvoll ist weil das alte DOM ja überschrieben wurde. Deswegen ist das Problem in Chrome nicht nachstellbar.

              Rolf

              --
              sumpsi - posui - obstruxi
          2. problematische Seite

            Lieber Henry,

            Aber wenn du diese Funktion

            function fensterOeffnen() {
            var w= window.open('');
            w.document.write('halloooooooo');
            }
            

            dort

            https://wiki.selfhtml.org/extensions/Selfhtml/frickl.php/Beispiel:JS-window-open-1.html#view_result

            verwendest, ist vielleicht klarer was ich meine.

            es passiert exakt das, was passieren soll. In der Konsole erreiche ich analog das gleiche:

            document.documentElement.innerHTML
            "<head></head><body>halloooooooo</body>"
            

            Was Dir Dein Browser als "Quelltext" anzeigt, ist jedenfalls nicht der Inhalt des DOM. Das ist grundsätzlich so, dass der Inhalt des DOM nicht identisch mit dem Quelltext ist. Insbesondere in den Fällen, wo es keinen Quelltext gibt! Und ja, mit document.write schreibst Du zwar Quelltext in das Fenster, aber dahinter steht deshalb kein Dokument, dessen Quelltext man anzeigen könnte. Dein HTML kommt ja on the fly und nicht aus einem HTML-Dokument.

            Liebe Grüße

            Felix Riesterer

      3. problematische Seite

        Lieber Henry,

        Hast Du denn auch etwas sinnvolles in das title-Element geschrieben?

        Warum?

        das ist die falsche Frage. Die richtige Frage lautet: Was bewirkt denn der Inhalt des title-Elements im head?

        Das hängt davon ab, wo man das öffnet. Wenn ich das bei selfhtml öffne(frickl), dann bleibt auch die Domain und der ensprechende (versteckte) Quelltext im Pop-up.

        Im Popup nicht. Bestimmt nicht.

        Das bringt die gleiche Problematik, siehe hier. (Beim Pop-up den Quelltext anzeigen lassen)

        Dort verweigert mir der Inspektor zwar den Zugriff, aber die Konsole spuckte das hier aus:

        document.documentElement.innerHTML
        "<head>
        <meta charset=\"utf-8\">
        <title>Neu</title>
        </head>
        <body>
        <h1>Neu</h1>
        <p>ein neues Fenster!<br>(Besser wäre aber auf solche Popup-Boxen zu verzichten!)</p>
        
        </body>"
        

        Das ist der tatsächliche Inhalt des Popups, oder genauer seines html-Wurzelelements. Beachte die Verwendung des title-Elements dort!

        Liebe Grüße

        Felix Riesterer