Chrome bindet Datei nicht ein, FF wohl
Pit
- html
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>
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.
Grüße,
RIDER
Grundlage für Zitat #2298.
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
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
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
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.
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
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.
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
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
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
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…
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
@@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 🖖
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
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
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
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
Hallo,
Sprachkonniferen
Ich bin doch kein Nadelholz! 😉
Er schrubte ja auch vom Konni…
(Wer immer das auch sei)
Gruß
Kalk
@@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 🖖
Hallo,
Möglicherweise ein Tippfehler.
Ja, die Tüpfelhäher sind immer wieder komische Vögel!
Gruß
Kalk
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
@@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 🖖
hallo
Frage, willst du dich selber DDOSen?
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
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!
Hast du mal das Verhältnis von xhr-Anfragen zu include Attributen getestet? Da ist ein quadratisches Verhalten!
Hi beatovich,
hierum gings mir…
Pit
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?
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
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.
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