Pracuję z CMS, który uniemożliwia edycję źródła HTML dla <head>
elementu.
Na przykład chcę dodać następujący <title>
tag nad tagiem:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
javascript
jquery
css
xhtml
Jitendra Vyas
źródło
źródło
<meta>
dynamiczne dodawanie tagów nie przyniesie żadnego efektu, w zależności od tego, czym one są i jakiej przeglądarki dotyczy.Odpowiedzi:
Możesz go wybrać i dodać do niego jak zwykle:
źródło
insertBefore
,insertAfter
to jest to, czego chcesz.JavaScript:
Utwórz element DOM w ten sposób:
źródło
jQuery
JavaScript:
źródło
...
ponieważ nie uważałem, że jest to centralna część pytania, a także, w momencie pisania, nie było praktycznego przykładu, co chciałby umieścić w głowie. ale tak, musi to być element DOM.Możesz użyć,
innerHTML
aby po prostu połączyć dodatkowy ciąg pola;Nie możesz jednak zagwarantować, że dodatkowe rzeczy, które dodasz do głowy, zostaną rozpoznane przez przeglądarkę po pierwszym załadowaniu i możliwe jest, że otrzymasz FOUC (flash niezmienionej treści) podczas ładowania dodatkowych arkuszy stylów.
Nie patrzyłem na API od lat, ale możesz też użyć
document.write
, co zostało zaprojektowane do tego rodzaju działań. Wymagałoby to jednak zablokowania renderowania strony do czasu zakończenia pierwszego żądania AJAX.źródło
W najnowszych przeglądarkach (IE9 +) możesz również użyć document.head :
Przykład:
źródło
Utwórz element tymczasowy (np.
DIV
), Przypisz kod HTML do jegoinnerHTML
właściwości, a następnie dołącz po kolei jego węzły potomne doHEAD
elementu. Na przykład tak:W porównaniu z przepisywaniem całej
HEAD
zawartości za pośrednictwem jejinnerHTML
, nie wpłynęłoby toHEAD
w żaden sposób na istniejące elementy potomne elementu.Zauważ, że skrypty wstawione w ten sposób najwyraźniej nie są wykonywane automatycznie, podczas gdy style są pomyślnie stosowane. Więc jeśli potrzebujesz skryptów do wykonania, powinieneś załadować pliki JS za pomocą Ajax, a następnie wykonać ich zawartość za pomocą
eval()
.źródło
body
, ale czy naprawdę można to zrobić wewnątrzhead
-tagu? Byłem pod wrażeniem, że tylko dozwolone tagi gdziebase
,link
,meta
,title
,style
iscript
?DIV
Element jest tylko tymczasowym kontenerem na potrzeby parsowania kodu HTML . Nie powinieneś wstawiaćDIV
samego siebie doHEAD
. Powinieneś wstawić jego węzły podrzędne . Zobacz przykład, który dodałem do odpowiedzi.temp
elementu są elementy podrzędne ”. Zobacz dokumentację Node.firstChild () .Wypróbuj czysty javascript:
Biblioteka JS:
Rodzaj:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
lub jQuery:
źródło
W jquery masz inną opcję:
tak czy owak to działa. Opcja JavaScript, o której inni mówili, też jest poprawna.
źródło
.html()
nie przywróci wszystkich właściwości DOM. (Najczęstszym i najbardziej widocznym przykładem tego problemu jest używanie podobnego kodu do dodawania nowych pól do formularza. Atrybut value reprezentuje domyślną wartość pola, więc pobraniehtml()
i ustawienie z powrotem spowoduje zresetowanie wszystkich istniejących pola do ich wartości domyślnych).