Szukam sposobu na wstawienie <style>
tagu na stronie HTML za pomocą JavaScript.
Najlepszy sposób, jaki do tej pory znalazłem:
var divNode = document.createElement("div");
divNode.innerHTML = "<br><style>h1 { background: red; }</style>";
document.body.appendChild(divNode);
Działa to w Firefox, Opera i Internet Explorer, ale nie w Google Chrome. Jest też trochę brzydki z <br>
przodu dla IE.
Czy ktoś wie, jak stworzyć taki <style>
tag
Jest milszy
Działa z Chrome?
Albo może
To jest niestandardowa rzecz, której powinienem unikać
Trzy działające przeglądarki są świetne i kto i tak używa Chrome?
javascript
html
css
Ameena Sana
źródło
źródło
document.head
jest obsługiwany we wszystkich głównych przeglądarkach.document.querySelector("head")
? To wydarzenie obsługiwane przez IE8 według źródłaquerySelector()
; dziś prawdopodobnie wybrałbym zdocument.head
, dostępny od IE9style.styleSheet.cssText
. Przed dołączeniemstyle.styleSheet
był zerowy.Oto skrypt, który dodaje style IE
createStyleSheet()
iaddRule()
metody do przeglądarek, które ich nie mają:Możesz dodać pliki zewnętrzne za pośrednictwem
i dynamicznie twórz reguły poprzez
źródło
Zakładam, że chcesz wstawić
style
tag w porównaniu dolink
tagu (odwołując się do zewnętrznego CSS), więc to właśnie robi następujący przykład:Zauważyłem też w twoim pytaniu, że używasz
innerHTML
. Jest to w rzeczywistości niestandardowy sposób wstawiania danych na stronę. Najlepszą praktyką jest utworzenie węzła tekstowego i dołączenie go do innego węzła elementu.Jeśli chodzi o twoje ostatnie pytanie, usłyszysz, jak niektórzy mówią, że twoja praca powinna działać we wszystkich przeglądarkach. Wszystko zależy od odbiorców. Jeśli nikt z Twoich odbiorców nie używa Chrome, nie przejmuj się; Jeśli jednak chcesz dotrzeć do jak największej liczby odbiorców, najlepiej jest obsługiwać wszystkie główne przeglądarki klasy A.
źródło
styleNode.styleSheet.cssText = ...
<style>
tagi powinny być miejscami wewnątrz<head>
elementu, a każdy dodany tag powinien być dodany na dole<head>
tagu.Używanie insertAdjacentHTML do wstrzykiwania znacznika stylu do znacznika nagłówka dokumentu :
Natywny DOM:
jQuery :
źródło
Przykład, który działa i jest zgodny ze wszystkimi przeglądarkami:
źródło
style
nie marel
lub mahref
atrybut - miałeś na myślilink
?link
ma wspólnego element z pytaniem? OP poprosił ostyle
element. Ta odpowiedź nie ma nic wspólnego z pytaniemstyle
służy do dodawania stylów wbudowanych,link
jest poprawny dla źródeł arkuszy stylów i ma tę zaletę, że pozwala uniknąć problemów w różnych przeglądarkach.Często trzeba zastąpić istniejące reguły, więc dołączanie nowych stylów do HEAD nie zawsze działa.
Wymyśliłem tę prostą funkcję, która podsumowuje wszystkie niepoprawne podejścia „dołącz do BODY” i jest po prostu wygodniejsza w użyciu i debugowaniu (IE8 +).
Demo: codepen , jsfiddle
źródło
<style>
tagu poza<head>
tag. Tag stylu nie powinien pojawiać się nigdzie indziej niż w<head>
tagu. To powszechnie przyjęty standard HTML. Istnieje atrybut stylu dla wbudowanego stylu, a atrybut stylu może być zastosowany do dowolnego znacznika w<body>
znaczniku, w tym<body>
znacznika.Ta zmienna obiektowa doda tag stylu do tagu head z atrybutem type i jedną prostą regułą przejścia wewnątrz, która pasuje do każdego identyfikatora / klasy / elementu. Możesz modyfikować właściwości treści i wprowadzać tyle reguł, ile potrzebujesz. Po prostu upewnij się, że reguły css wewnątrz zawartości pozostają w jednym wierszu (lub „uciekaj” z każdego nowego wiersza, jeśli wolisz).
źródło
Oto wariant dynamicznego dodawania klasy
źródło
Wszystko dobrze, ale aby styleNode.cssText działał w IE6 z węzłem utworzonym przez javascipt, musisz dołączyć węzeł do dokumentu przed ustawieniem cssText;
dalsze informacje @ http://msdn.microsoft.com/en-us/library/ms533698%28VS.85%29.aspx
źródło
Ta funkcja wstrzykuje css za każdym razem, gdy wywołasz funkcję w
appendStyle
następujący sposób:appendStyle('css you want to inject')
Działa to poprzez wstrzyknięcie
style
węzła do nagłówka dokumentu. Jest to technika podobna do powszechnie używanej do leniwego ładowania JavaScript. Działa konsekwentnie w większości nowoczesnych przeglądarek.Możesz także leniwie ładować zewnętrzne pliki CSS, używając następującego fragmentu:
źródło
Napisałeś:
Dlaczego nie to
Odtąd możesz łatwo dołączać reguły CSS do kodu HTML:
... lub bezpośrednio do DOM:
Spodziewam się, że zadziała to wszędzie oprócz archaicznych przeglądarek.
Zdecydowanie działa w Chrome w roku 2019.
źródło
Zdecydowanie najprostsze rozwiązanie. Wszystko, co musisz zrobić, to wpisać to samo, co normalnie deklarujesz
style
tagi, pomiędzy backtickamiźródło
Jeśli napotykasz problem polegający na wstrzykiwaniu ciągu CSS na stronę, łatwiej jest to zrobić z
<link>
elementem niż z<style>
elementem.Poniżej dodano
p { color: green; }
regułę do strony.Możesz utworzyć to w JavaScript po prostu przez kodowanie URL-a łańcucha CSS i dodanie go do
HREF
atrybutu. Znacznie prostsze niż wszystkie dziwactwa<style>
elementów lub bezpośredni dostęp do arkuszy stylów.Będzie to działać w IE 5.5 w górę
źródło
http://jonraasch.com/blog/javascript-style-node
źródło