Ich suche nach einer Möglichkeit, ein <style>
Tag mit JavaScript in eine HTML-Seite einzufügen .
Der beste Weg, den ich bisher gefunden habe:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
Dies funktioniert in Firefox, Opera und Internet Explorer, jedoch nicht in Google Chrome. Auch ist es ein bisschen hässlich mit dem <br>
vorne für IE.
Kennt jemand eine Möglichkeit, ein <style>
Tag zu erstellen , das
Ist schöner
Funktioniert mit Chrome?
Oder vielleicht
Dies ist eine nicht standardmäßige Sache, die ich vermeiden sollte
Drei funktionierende Browser sind großartig und wer nutzt Chrome überhaupt?
javascript
html
css
Ameena Sana
quelle
quelle
document.head
wird in allen gängigen Browsern unterstützt.document.querySelector("head")
? Es ist Ereignis von IE8 von Quelle unterstütztquerySelector()
; Heute würde ich wahrscheinlich mitgehendocument.head
, verfügbar seit IE9style.styleSheet.cssText
. Vor dem Anhängenstyle.styleSheet
war null.Hier ist ein Skript, das Browsern, die diese nicht haben, IE-Stil
createStyleSheet()
undaddRule()
Methoden hinzufügt :Sie können externe Dateien über hinzufügen
und dynamisch Regeln erstellen über
quelle
Ich gehe davon aus, dass Sie ein
style
Tag im Vergleich zu einemlink
Tag einfügen möchten (unter Bezugnahme auf ein externes CSS). Das ist also das folgende Beispiel:Außerdem habe ich in Ihrer Frage festgestellt, dass Sie verwenden
innerHTML
. Dies ist eigentlich eine nicht standardmäßige Methode zum Einfügen von Daten in eine Seite. Am besten erstellen Sie einen Textknoten und hängen ihn an einen anderen Elementknoten an.In Bezug auf Ihre letzte Frage werden Sie einige Leute sagen hören, dass Ihre Arbeit in allen Browsern funktionieren sollte. Es hängt alles von Ihrem Publikum ab. Wenn niemand in Ihrer Zielgruppe Chrome verwendet, schwitzen Sie nicht. Wenn Sie jedoch das größtmögliche Publikum erreichen möchten, ist es am besten, alle gängigen Browser der Klasse A zu unterstützen
quelle
styleNode.styleSheet.cssText = ...
<style>
Tags sollten Stellen innerhalb des<head>
Elements sein, und jedes hinzugefügte Tag sollte am unteren Rand des<head>
Tags hinzugefügt werden .Verwenden von insertAdjacentHTML zum Einfügen eines Stil-Tags in das Dokumentkopf- Tag :
Native DOM:
jQuery :
quelle
Ein Beispiel, das funktioniert und mit allen Browsern kompatibel ist:
quelle
style
hat keinrel
oderhref
Attribut - meintest dulink
?link
Element mit der Frage zu tun? Das OP fragte nach einemstyle
Element. Diese Antwort hat nichts mit der Frage zu tunstyle
dient zum Hinzufügen von Inline-Stilen,link
ist für Stylesheet-Quellen korrekt und hat den Vorteil, dass browserübergreifende Probleme vermieden werden.Oft müssen vorhandene Regeln überschrieben werden, sodass das Anhängen neuer Stile an den HEAD nicht in jedem Fall funktioniert.
Ich habe mir diese einfache Funktion ausgedacht , die alle ungültigen Ansätze zum Anhängen an den KÖRPER zusammenfasst und einfach bequemer zu verwenden und zu debuggen ist (IE8 +).
Demo: Codepen , Jsfiddle
quelle
<style>
Tag außerhalb des<head>
Tags zu injizieren . Das Style-Tag sollte nur innerhalb des<head>
Tags angezeigt werden. Das ist ein weit verbreiteter HTML-Standard. Es gibt ein Stilattribut für das Inline-Styling und das Stilattribut kann auf jedes Tag innerhalb des<body>
Tags angewendet werden , einschließlich des<body>
Tags selbst.Diese Objektvariable hängt ein Style-Tag mit einem Typattribut und einer einfachen Übergangsregel an das Head-Tag an, die mit jeder einzelnen ID / Klasse / Element übereinstimmt. Sie können die Inhaltseigenschaft jederzeit ändern und so viele Regeln einfügen, wie Sie benötigen. Stellen Sie einfach sicher, dass die CSS-Regeln im Inhalt in einer Zeile bleiben (oder "Escape" jeder neuen Zeile, wenn Sie dies bevorzugen).
quelle
Hier ist eine Variante zum dynamischen Hinzufügen einer Klasse
quelle
Alles in Ordnung, aber damit styleNode.cssText in IE6 mit einem von javascipt erstellten Knoten funktioniert, müssen Sie den Knoten an das Dokument anhängen, bevor Sie den cssText festlegen.
Weitere Informationen unter http://msdn.microsoft.com/en-us/library/ms533698%28VS.85%29.aspx
quelle
Diese Funktion injiziert CSS, wenn Sie die Funktion
appendStyle
wie folgt aufrufen :appendStyle('css you want to inject')
Dies funktioniert durch Einfügen eines
style
Knotens in den Kopf des Dokuments. Dies ist eine ähnliche Technik wie beim langsamen Laden von JavaScript. Es funktioniert konsistent in den meisten modernen Browsern.Sie können auch externe CSS-Dateien mithilfe des folgenden Snippets verzögert laden:
quelle
Sie schrieben:
Warum nicht das?
Von nun an können Sie CSS-Regeln einfach an den HTML-Code anhängen:
... oder direkt zum DOM:
Ich erwarte, dass dies überall funktioniert, außer in archaischen Browsern.
Funktioniert definitiv in Chrome im Jahr 2019.
quelle
Mit Abstand die einfachste Lösung. Alles, was Sie tun müssen, ist
style
, zwischen den Backticks dasselbe einzugeben, wie Sie normalerweise Tags deklarieren würdenquelle
Wenn das Problem darin besteht, eine CSS-Zeichenfolge in eine Seite einzufügen, ist dies mit dem
<link>
Element einfacher als mit dem<style>
Element.Im Folgenden wird
p { color: green; }
der Seite eine Regel hinzugefügt.Sie können dies in JavaScript einfach durch URL-Codierung Ihrer CSS-Zeichenfolge und Hinzufügen des
HREF
Attributs erstellen . Viel einfacher als alle Macken von<style>
Elementen oder der direkte Zugriff auf Stylesheets.Dies funktioniert in IE 5.5 abwärts
quelle
http://jonraasch.com/blog/javascript-style-node
quelle