Saya bekerja dengan CMS, yang mencegah pengeditan sumber HTML untuk <head>
elemen.
Misalnya saya ingin menambahkan yang berikut di atas <title>
tag:
<meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
javascript
jquery
css
xhtml
Jitendra Vyas
sumber
sumber
<meta>
tag secara dinamis tidak akan berpengaruh, tergantung pada apa itu dan browser apa yang terlibat.Jawaban:
Anda dapat memilihnya dan menambahkannya seperti biasa:
sumber
insertBefore
,insertAfter
adalah yang Anda inginkan.JavaScript:
Jadikan elemen DOM seperti ini:
sumber
jQuery
JavaScript:
sumber
...
karena saya tidak merasa itu adalah bagian utama dari pertanyaan, dan juga, pada saat penulisan, tidak ada contoh langsung tentang apa yang ingin dia masukkan. tapi ya, itu harus berupa elemen DOM.Anda dapat menggunakan
innerHTML
untuk hanya menggabungkan string bidang ekstra;Namun, Anda tidak dapat menjamin bahwa hal-hal ekstra yang Anda tambahkan ke head akan dikenali oleh browser setelah pemuatan pertama, dan mungkin Anda akan mendapatkan FOUC (flash konten tanpa gaya) saat lembar gaya tambahan dimuat.
Saya belum melihat API selama bertahun-tahun, tetapi Anda juga dapat menggunakan
document.write
, yang dirancang untuk tindakan semacam ini. Namun, ini akan mengharuskan Anda untuk memblokir halaman dari rendering sampai permintaan AJAX awal Anda selesai.sumber
Di browser terbaru (IE9 +) Anda juga dapat menggunakan document.head :
Contoh:
sumber
Buat elemen sementara (mis.
DIV
), Tetapkan kode HTML Anda keinnerHTML
propertinya, lalu tambahkan node turunannya keHEAD
elemen satu per satu. Misalnya seperti ini:Dibandingkan dengan menulis ulang seluruh
HEAD
konten melalui itsinnerHTML
, ini tidak akan mempengaruhi elemen turunan yang ada dariHEAD
elemen tersebut dengan cara apa pun.Perhatikan bahwa skrip yang dimasukkan dengan cara ini tampaknya tidak dijalankan secara otomatis, sementara gaya berhasil diterapkan. Jadi jika Anda membutuhkan skrip untuk dieksekusi, Anda harus memuat file JS menggunakan Ajax dan kemudian mengeksekusi kontennya menggunakan
eval()
.sumber
body
, tetapi bisakah itu benar-benar dilakukan di dalamhead
-tag? Aku berada di bawah kesan bahwa tag hanya diperbolehkan manabase
,link
,meta
,title
,style
danscript
?DIV
Elemen ini hanyalah wadah sementara untuk tujuan parsing kode HTML . Anda tidak boleh memasukkanDIV
dirinya sendiri ke fileHEAD
. Anda harus memasukkan node anaknya . Silakan lihat contoh yang telah saya tambahkan ke jawabannya.temp
elemen tersebut.” Lihat dokumen Node.firstChild () .Coba javascript murni:
Perpustakaan JS:
Tipe:
appendHtml(document.head, '<link rel="stylesheet" type="text/css" href="http://example.com/example.css"/>');
atau jQuery:
sumber
Dengan jquery Anda memiliki opsi lain:
bagaimanapun itu berhasil. Opsi JavaScript yang lain berkata, itu juga benar.
sumber
.html()
tidak akan memulihkan semua properti DOM. (Contoh paling umum dari masalah ini, dan yang paling terlihat, adalah saat menggunakan kode serupa untuk menambahkan bidang baru ke formulir. Atribut nilai mewakili nilai default bidang, jadi mendapatkanhtml()
dan kemudian menyetelnya kembali akan menyetel ulang semua yang ada ke nilai defaultnya).