Ich hatte neulich eine Frage von einem anderen Programmierer. Ich erinnere mich, dass ich mich (vor langer Zeit) genau das selbe gefragt habe. Warum wurde ein browserseitiges Include-Tag nie berücksichtigt? Oder war es?
Insbesondere mit einem Tag, das den Browser anweist, zusätzliches HTML aus anderen Quellen einzuschließen. zB <include src="http://server/foo/bar.html">
. Viele Leute werden Javascript-Aufrufe tätigen und füllen innerHTML
, um das Gleiche zu erreichen, wenn das Gleiche außerhalb der Javascript-Engine vom Browser ausgeführt werden könnte.
Es wäre schmerzhaft gewesen, geschachtelte <HTML>
s <BODY>
s (dh) zu haben, aber wir müssen diesen Aspekt ohnehin überall berücksichtigen.
Antworten:
Bin ich die letzte Person auf der Welt, die sich an die ( Netscape 4-only )
layer
undilayer
Tags erinnert?Netscape 4 erlaubte es dem
div
Tag auch, einsrc
Attribut zu haben , das dasselbe erreichte.Netscape übermittelte sie dem W3C, der sie nicht einbezog. Verwenden Sie
iframe
stattdessen.quelle
document
Objekt hatten, das der Same Origin Policy unterliegt. Sie waren effektiv ein positionierbarer Iframe.Es wurde sicherlich von jedem neuen Webautor angefragt, der Server Side Includes noch nicht ausgearbeitet hatte, damals auf der www-html-Liste. Aber damals war W3 froh, den Druck der Webautoren völlig zu ignorieren.
Wenn eine standortübergreifende Einbeziehung zulässig wäre, wäre dies eine Sicherheitslücke. Sie können eine Seite aus der Bank des Benutzers einlesen und Inhalte daraus lesen. (Ursprünglich war die DOM-Skripterstellung begrenzt, Sie konnten jedoch weiterhin aus Skripterstellungsfunktionen lesen
document.links
,document.images
die von der Zielseite usw. entfernt wurden. Seitdem können Sie mit importierten Inhalten das tun, was Sie möchten.)Wenn Cross-Site-Inklusion nicht zulässig wäre, hätte die Funktion keinen Vorteil gegenüber serverseitigen Includes. Es wäre mehr und langsamer für den Client, als es der Server hätte tun können. Im Gegensatz
<iframe>
dazu müsste ein Include das Laden von Seiten blockieren. SSIs wären in jeder Hinsicht überlegen.quelle
Sie taten. Es wurde zum
<frameset>
Tag. Nicht lange danach fügten sie den<iframe>
Tag hinzu .Die meisten der frühen Webserver unterstützten serverseitige Includes, sodass ein clientseitiges textuelles Include wahrscheinlich als unnötig angesehen wurde, da die gleiche Funktionalität auch für Frames verfügbar war.
quelle
<iframe>
. Das ist , was es ist für . Es ist wirklich nicht viel anders als ein<div>
mitoverflow:auto;
Das Objekt wird weiterhin in einem Frame gerendert und Sie haben keinen DOM-Zugriff auf "Daten". Was Entwicklern vor Jahren hätte gegeben werden sollen, ist eine Möglichkeit, Snippets mit einem einfachen Tag zu versehen. Selbst wenn dieses Tag Domain-Sandbox-Einschränkungen hätte, wäre es ziemlich nützlich, Features zu unterteilen, die Wartung zu verbessern und das Browser-Caching zu nutzen.
Ich weiß, dass es viele gute JQuery-Plugins gibt, die dies tun, und viele serverseitige Skripte, aber es gibt keinen guten Grund, ein solches Tag nicht zu unterstützen. IMO ist eine gute Frage "Warum kein clientseitiges Include-Tag?"
Wenn Sie jQuery mögen, ist hier ein gutes clientseitiges Include-Skript: inc: Ein winziges clientseitiges Include-JavaScript-Plugin für jQuery
quelle
Hast du es versucht
Ich denke, das ist in den meisten Browsern implementiert.
quelle
Varianten eines
<include>
Tags wurden zwar in der frühen Geschichte von HTML berücksichtigt , kamen aber nie weit.quelle