Ich arbeite mit einem CMS, das das Bearbeiten der HTML-Quelle für <head>
Elemente verhindert.
Zum Beispiel möchte ich über dem <title>
Tag Folgendes hinzufügen :
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
javascript
jquery
css
xhtml
Jitendra Vyas
quelle
quelle
<meta>
dynamische Hinzufügen von Tags möglicherweise keine Auswirkungen hat, je nachdem , um welche Tags es sich handelt und um welchen Browser es sich handelt.Antworten:
Sie können es wie gewohnt auswählen und hinzufügen:
quelle
insertBefore
,insertAfter
ist das , was Sie wollen.JavaScript:
Machen Sie das DOM-Element so:
quelle
jQuery
JavaScript:
quelle
...
weil ich nicht der Meinung war, dass dies ein zentraler Teil der Frage ist, und zum Zeitpunkt des Schreibens gab es auch kein praktisches Beispiel dafür, was er in den Kopf setzen wollte. aber ja, es muss ein DOM-Element sein.Sie können
innerHTML
nur die zusätzliche Feldzeichenfolge verwenden.Sie können jedoch nicht garantieren, dass die zusätzlichen Dinge, die Sie dem Kopf hinzufügen, nach dem ersten Laden vom Browser erkannt werden, und es ist möglich, dass Sie beim Laden der zusätzlichen Stylesheets eine FOUC (Flash von nicht gestylten Inhalten) erhalten.
Ich habe mir die API seit Jahren nicht mehr angesehen, aber Sie können sie auch verwenden
document.write
, was für diese Art von Aktion entwickelt wurde. Dies würde jedoch erfordern, dass Sie das Rendern der Seite blockieren, bis Ihre erste AJAX-Anforderung abgeschlossen ist.quelle
In den neuesten Browsern (IE9 +) können Sie auch document.head verwenden :
Beispiel:
quelle
Erstellen Sie ein temporäres Element (z. B.
DIV
), weisen Sie derinnerHTML
Eigenschaft Ihren HTML-Code zu und hängen Sie die untergeordneten KnotenHEAD
nacheinander an das Element an. Zum Beispiel so:Verglichen mit dem Umschreiben des gesamten
HEAD
Inhalts über seininnerHTML
würde dies keine Auswirkungen auf vorhandene untergeordnete Elemente desHEAD
Elements haben.Beachten Sie, dass auf diese Weise eingefügte Skripte anscheinend nicht automatisch ausgeführt werden, während Stile erfolgreich angewendet werden. Wenn Sie also Skripte ausführen müssen , sollten Sie JS-Dateien mit Ajax laden und deren Inhalt dann mit ausführen
eval()
.quelle
body
, aber kann das wirklich imhead
-tag gemacht werden? Ich habe den Eindruck , dass die einzigen erlaubten Tags , wobase
,link
,meta
,title
,style
undscript
?DIV
Element ist nur ein temporärer Container zum Parsen von HTML-Code . Sie sollten dasDIV
selbst nicht in das einfügenHEAD
. Sie sollten die untergeordneten Knoten einfügen . Bitte beachten Sie das Beispiel, das ich der Antwort hinzugefügt habe.temp
Element befinden." Siehe Node.firstChild () -Dokumente .Versuchen Sie es mit einem reinen Javascript:
Bibliothek JS:
Art:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
oder jQuery:
quelle
Mit jquery haben Sie andere Möglichkeiten:
sowieso funktioniert es. JavaScript-Option, sagten andere, das ist auch richtig.
quelle
.html()
wird nicht alle DOM-Eigenschaften wiederhergestellt . (Die häufigste und sichtbarste Instanz dieses Problems ist die Verwendung von ähnlichem Code zum Hinzufügen neuer Felder zu einem Formular. Das value-Attribut stellt den Standardwert eines Felds dar. Wenn Sie es also abrufenhtml()
und dann zurücksetzen, werden alle vorhandenen zurückgesetzt Felder auf ihre Standardwerte).