Pit: Chrome bindet Datei nicht ein, FF wohl

Hallo Forum,

ich möchte per JS eine Seite einbinden, was im FF gut funktioniert. Dieselbe Seite wird im Chrome nicht eingebunden und ich kann nicht erkennen, warum nicht?!

Sieht einer von Euch mehr als ich?

Pit

<!DOCTYPE html>
<html lang="en">
<head>

</head>
<body>
<script>
function includeHTML() {
  var z, i, elmnt, file, xhttp;
  /*loop through a collection of all HTML elements:*/
  z = document.getElementsByTagName("*");
  for (i = 0; i < z.length; i++) {
    elmnt = z[i];
    /*search for elements with a certain atrribute:*/
    file = elmnt.getAttribute("w3-include-html");
    if (file) {
      /*make an HTTP request using the attribute value as the file name:*/
      xhttp = new XMLHttpRequest();
      xhttp.onreadystatechange = function() {
        if (this.readyState == 4) {
          if (this.status == 200) {elmnt.innerHTML = this.responseText;}
          if (this.status == 404) {elmnt.innerHTML = "Page not found.";}
          /*remove the attribute, and call this function once more:*/
          elmnt.removeAttribute("w3-include-html");
          includeHTML();
        }
      }      
      xhttp.open("GET", file, true);
      xhttp.send();
      /*exit the function:*/
      return;
    }
  }
};
</script>
<div w3-include-html="header.html"></div> 

<script>
includeHTML();
</script>

</body>
</html>
  1. Aloha ;)

    ich möchte per JS eine Seite einbinden, was im FF gut funktioniert. Dieselbe Seite wird im Chrome nicht eingebunden und ich kann nicht erkennen, warum nicht?!

    Sieht einer von Euch mehr als ich?

    Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

    Ausgabe Konsole: Cross Origin Requests only supported for protocol schemes: http, data, ...

    Grüße,

    RIDER

    --
    Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
    # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
    1. Hi Rider,

      Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

      Ok, danke.

      Weißt Du, warum das im Chrome übers Filesystem nicht läuft?

      Ich habs jetzt, nachdem Du mir den hinweis gegeben hast, über den lokalen Server laufen lassen, da funktionierts dann wieder.

      Pit

      1. Hallo Pit,

        Weißt Du, warum das im Chrome übers Filesystem nicht läuft?

        der xmlHttpRequest funktioniert vom lokalen Filesystem nur noch im Firefox und im Safari. Warum das so ist, weiß ich auch nicht. Aber einige andere Dienste, wie z.B. localStorage funktionieren bei file:// auch nicht in allen Browsern. Webseiten ohne Server sind wohl nicht mehr erwünscht.

        Gruß
        Jürgen

        1. Webseiten ohne Server sind wohl nicht mehr erwünscht.

          Scheint so. Was schade ist, weil z.b. Dokumentationen jedweder Art auch als HTML-Konstrukt verfasst werden könnten (siehe z.b SelfHTML früher...obs heute auch noch so ist, weiß ich nicht). Können zwar heite auch noch, aber wenn ich z.b. eine Headerdatei einbinden will ohne Server, wie mach ich das dann?

          Pit

          1. Tach!

            Webseiten ohne Server sind wohl nicht mehr erwünscht.

            Scheint so. Was schade ist, weil z.b. Dokumentationen jedweder Art auch als HTML-Konstrukt verfasst werden könnten

            Es ist eine Abwägungssache zwischen Sicherheit und Nutzerwünschen. Webseiten ohne Webserver zu betreiben, ist wohl eher die eine Ausnahme. Man hat sich dabei vermutlich gedacht, dass man da lieber das Einbinden von lokalen Dingen in Webseiten reglementiert, als dass man da ein Sicherheitsproblem lässt.

            Können zwar heite auch noch, aber wenn ich z.b. eine Headerdatei einbinden will ohne Server, wie mach ich das dann?

            Nimm dir einen kleinen Stand-alone-Webserver.

            dedlfix.

            1. Hallo Dedlfix,

              Nimm dir einen kleinen Stand-alone-Webserver.

              Genau sowas habe ich mir auch gedacht. XAMPPlite dürfte klein genug sein, oder kennst du Kleineres/Sinnvolleres?

              Pit

              1. Tach!

                Nimm dir einen kleinen Stand-alone-Webserver.

                Genau sowas habe ich mir auch gedacht. XAMPPlite dürfte klein genug sein, oder kennst du Kleineres/Sinnvolleres?

                XAMPPlite ist noch zu viel für den Zweck, es sei denn, du brauchst PHP und MySQL. Das geht noch deutlich kleiner. "stand-alone webserver" oder "mini websever" oder "micro webserver" könnten als Suchbegriffe hilfreich sein.

                dedlfix.

                1. Hi,

                  XAMPPlite ist noch zu viel für den Zweck, es sei denn, du brauchst PHP und MySQL. Das geht noch deutlich kleiner. "stand-alone webserver" oder "mini websever" oder "micro webserver" könnten als Suchbegriffe hilfreich sein.

                  Ok. Aber XAMPPlite ist eh auf dem Rechner und auch nur für diese Aufgabe kann auf php jund SQL verzichtet werden.

                  Pit

          2. Hallo Pit,

            Können zwar heite auch noch, aber wenn ich z.b. eine Headerdatei einbinden will ohne Server, wie mach ich das dann?

            man sollte sich aber auch die Frage stellen, ob man statische Seiten bei jedem Aufruf montiert, oder ob es nicht besser ist, dieses nur bei Änderungen zu machen. Einige Editoren haben eine Include-Funktion, so etwas selbst zu programmieren, dürfte auch kein Hexenwerk sein, und bei kleinen Sites geht das auch von Hand.

            Gruß
            Jürgen

            1. Hallo Pit,

              Können zwar heite auch noch, aber wenn ich z.b. eine Headerdatei einbinden will ohne Server, wie mach ich das dann?

              man sollte sich aber auch die Frage stellen, ob man statische Seiten bei jedem Aufruf montiert, oder ob es nicht besser ist, dieses nur bei Änderungen zu machen. Einige Editoren haben eine Include-Funktion, so etwas selbst zu programmieren, dürfte auch kein Hexenwerk sein, und bei kleinen Sites geht das auch von Hand.

              Es ging mir mehr um den sportlichen Ehrgeiz, Seiten zu includen, ohne eine Serversprache nutzen zu dürfen. Und da JS erlaubt ist, dachte ich an eine xhr-Anfrage…

              Pit

              1. Hallo Pit,

                sind server-side includes (SSI) erlaubt? Das wäre vermutlich einfacher und sinnvoller als JS. Und statisch ist das im Wesentlichen auch.

                Und wenn schon JS, dann…

                • solltest Du das Container-element mit HTML-Inhalt füllen und nicht ersetzen.
                • sollte ein custom attribute mit data- beginnen

                Dann kannst Du mit querySelectorAll alle div mit data-include-html suchen. Die arbeitest Du in einer Schleife ab. Für jeden Treffer guckst Du, ob das div Kinder hat. Wenn nicht, lädst Du das Include und überschreibst den Inhalt.

                Problem ist jetzt das asynchrone Verhalten von XMLHttpRequest. Wenn deine Schleife über die Include-Container fertig ist, sind es die Ajax-Requeste noch lange nicht. Vor allem deshalb nicht, weil der Browser nicht allzuviele davon gleichzeitig ausführt, die übrigen müssen warten. Du solltest pro gesendetem Request einen Zähler erhöhen, und pro empfangenem Request nach der Verarbeitung erniedrigen (nein, nicht demütigen!). Wird er null, startest Du mit setTimeout(funktion, 0) die Suche nach Include-Containern neu, damit Includes in Includes funktionieren.

                Aber eigentlich wäre hier ein custom element <x-include src="..."/> eine prima Idee. Das ist viel expressiver und du hast mehr Spaß mit JavaScript 😂

                Und deine Holde kapiert dann vermutlich gar nichts mehr. Probier's erstmal mit SSI bevor Du den Ajax-Hammer ziehst.

                Rolf

                --
                sumpsi - posui - clusi
    2. @@Camping_RIDER

      Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

      Soll ich das in die Zitatesammlung einstellen, wenngleich es die Illiteraten nicht verstünden und sich gegen die Aufnahme aussprächen?

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
      1. Aloha ;)

        Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

        Soll ich das in die Zitatesammlung einstellen, wenngleich es die Illiteraten nicht verstünden und sich gegen die Aufnahme aussprächen?

        😂

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
      2. Aloha ;)

        Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

        Soll ich das in die Zitatesammlung einstellen, wenngleich es die Illiteraten nicht verstünden und sich gegen die Aufnahme aussprächen?

        Damit wäre dann wenigstens der Aufwand gewürdigt, den Code extra in eine Datei test.html zu verpacken und eine header.html zu erstellen nur um das festzustellen was dem OP mit einem einzelnen Tastendruck möglich gewesen wäre 😂

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
    3. Hallo Camping_RIDER,

      Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

      Wollnwer doch ma richtiges Deutsch draus machen 😉

      Ich sehe so viel, wie du wahrscheinlich auch sähest, benütztest du deine Entwicklerwerkzeuge.

      Dieses doppelt gemoppelte wenn + Konjunktiv ist unter den Sprachkonniferen weit verbreitet. 😉

      Bis demnächst
      Matthias

      --
      Rosen sind rot.
      1. Aloha ;)

        Ich sehe so viel wie du wahrscheinlich auch sähest, wenn du deine Entwicklerwerkzeuge benütztest.

        Wollnwer doch ma richtiges Deutsch draus machen 😉

        Ach was, das ist für Anfänger 😉

        Dieses doppelt gemoppelte wenn + Konjunktiv ist unter den Sprachkonniferen weit verbreitet. 😉

        Ich bin doch kein Nadelholz! 😉

        Grüße,

        RIDER

        --
        Camping_RIDER a.k.a. Riders Flame a.k.a. Janosch Zoller
        # Twitter # Steam # YouTube # Self-Wiki # Selfcode: sh:) fo:) ch:| rl:) br:^ n4:? ie:% mo:| va:) js:) de:> zu:} fl:( ss:) ls:[
        1. Hallo,

          Sprachkonniferen

          Ich bin doch kein Nadelholz! 😉

          Er schrubte ja auch vom Konni…
          (Wer immer das auch sei)

          Gruß
          Kalk

          1. @@Tabellenkalk

            Er schrubte ja auch vom Konni…
            (Wer immer das auch sei)

            Oder was immer das auch sei. Möglicherweise ein Tippfehler.

            Konni kenne ich nicht; Honni schon.

            LLAP 🖖

            --
            „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
            1. Hallo,

              Möglicherweise ein Tippfehler.

              Ja, die Tüpfelhäher sind immer wieder komische Vögel!

              Gruß
              Kalk

      2. Hallo Matthias Apsel,

        Ich sehe so viel, wie du wahrscheinlich auch sähest, benütztest du deine Entwicklerwerkzeuge.

        Bin mal gespannt, wann der @Gunnar Bittersmann kommt, und mich fragt, wo ich wohne.

        Bis demnächst
        Matthias

        --
        Rosen sind rot.
        1. @@Matthias Apsel

          Bin mal gespannt, wann der @Gunnar Bittersmann kommt, und mich fragt, wo ich wohne.

          Wenn

          Wollte ich das wissen, fände ich es heraus.

          LLAP 🖖

          --
          „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. hallo

    Frage, willst du dich selber DDOSen?

    --
    Neu im Forum! Signaturen kann man ausblenden!
    1. hallo

      Frage, willst du dich selber DDOSen?

      Nene… Ist ne Uni-Aufgabe meiner Holden 😉 Ich selber würde die die Header-Datei per Serversprache includen, aber die Seite soll "statisch" sein. Nun ist ja statisch != serverlos, insofern sollte ein lokaler Server i.O. sein.

      Pit

      1. hallo

        hallo

        Frage, willst du dich selber DDOSen?

        Nene… Ist ne Uni-Aufgabe meiner Holden 😉 Ich selber würde die die Header-Datei per Serversprache includen, aber die Seite soll "statisch" sein. Nun ist ja statisch != serverlos, insofern sollte ein lokaler Server i.O. sein.

        Hast du mal das Verhältnis von xhr-Anfragen zu include Attributen getestet? Da ist ein quadratisches Verhalten!

        --
        Neu im Forum! Signaturen kann man ausblenden!
        1. Hast du mal das Verhältnis von xhr-Anfragen zu include Attributen getestet? Da ist ein quadratisches Verhalten!

          Hi beatovich,

          hierum gings mir…

          Pit

          1. Hast du mal das Verhältnis von xhr-Anfragen zu include Attributen getestet? Da ist ein quadratisches Verhalten!

            Hi beatovich,

            hierum gings mir…

            Ich kritisiere aber deine JS-Funktion, nicht dass du JS einsetzt. Hast du deinen konzeptionellen Fehler verstanden?

            --
            Neu im Forum! Signaturen kann man ausblenden!
            1. Hi beatovich,

              Ich kritisiere aber deine JS-Funktion, nicht dass du JS einsetzt. Hast du deinen konzeptionellen Fehler verstanden?

              Nein, habe ich nicht. Erklärst Du mir ihn?

              Pit

              1. hallo

                Nein, habe ich nicht. Erklärst Du mir ihn?

                Ich abstrahiere deinen Code

                function includeHTML() {
                  for (EVERY ELEMENT) {
                    if (CONDITION) {
                      return;
                    }
                  }
                };
                

                Soweit so gut. Aber nun mache ich eine kleine Änderung:

                function includeHTML() {
                  for (EVERY ELEMENT) {
                    if (CONDITION) {
                      remove CONDITION
                      includeHTML();
                      return;
                    }
                  }
                };
                

                Es ist gar nicht kontrolliert, wie oft includeHTML ausgeführt wird. Das bitte ich dich selber zu testen, indem du mehrere positive Conditionen setzt im Hauptdokument als auch in den importierten Bausteinen.

                Es ist nur zufällig so, dass die Anzahl der XHR-Anfragen der Zahl der Conditionen entspricht. Aber um das zu erreichen, wird hier potentiell viel Leistung verbraten.

                --
                Neu im Forum! Signaturen kann man ausblenden!
                1. Es ist gar nicht kontrolliert, wie oft includeHTML ausgeführt wird. Das bitte ich dich selber zu testen, indem du mehrere positive Conditionen setzt im Hauptdokument als auch in den importierten Bausteinen.

                  Jetzt verstehe ich, was Du meinst. Ok, es wird 2 x ausgeführt, ich denke, das ist verkraftbar.

                  Pit