Saya punya 2 file HTML, misalkan a.html
dan b.html
. Dalam a.html
saya ingin memasukkan b.html
.
Di JSF saya bisa melakukannya seperti itu:
<ui:include src="b.xhtml" />
Ini berarti bahwa di dalam a.xhtml
file, saya dapat memasukkan b.xhtml
.
Bagaimana kita melakukannya dalam *.html
file?
javascript
html
include
lolo
sumber
sumber
localhost
: stackoverflow.com/questions/7542872/…Jawaban:
Menurut pendapat saya solusi terbaik menggunakan jQuery:
a.html
:b.html
:Metode ini adalah solusi sederhana dan bersih untuk masalah saya.
.load()
Dokumentasi jQuery ada di sini .sumber
$(function(){})
hanya akan dijalankan setelah dokumen selesai dimuat.XMLHttpRequest cannot load file:///.../b.html. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Memperluas jawaban lolo dari atas, berikut ini sedikit otomatisasi jika Anda harus memasukkan banyak file:
Dan kemudian memasukkan sesuatu ke dalam html:
Yang akan mencakup tampilan file / header.html dan tampilan / footer.html
sumber
data-argument
dan mengambilnya dalam file yang disertakan?$("#postdiv").load('posts.php?name=Test&age=25');
class="include"
- buat saja pemilih jQueryvar includes = $('[data-include]');
Solusi saya mirip dengan salah satu lolo di atas. Namun, saya memasukkan kode HTML melalui dokumen JavaScript. Menulis alih-alih menggunakan jQuery:
a.html:
b.js:
Alasan saya tidak menggunakan jQuery adalah karena jQuery.js berukuran ~ 90kb, dan saya ingin menjaga jumlah data yang dimuat sekecil mungkin.
Untuk mendapatkan file JavaScript yang lolos dengan benar tanpa banyak pekerjaan, Anda dapat menggunakan perintah sed berikut:
Atau cukup gunakan skrip bash praktis berikut yang diterbitkan sebagai Inti pada Github, yang mengotomatiskan semua pekerjaan yang diperlukan, mengonversi
b.html
keb.js
: https://gist.github.com/Tafkadasoh/334881e18cbb7fc2a5c033bfa03f6ee6Penghargaan untuk Greg Minshall untuk perintah sed yang ditingkatkan yang juga lolos dari garis miring dan kutipan tunggal, yang tidak dipertimbangkan oleh perintah sed asli saya.
Atau untuk browser yang mendukung literal templat , yang berikut ini juga berfungsi:
b.js:
sumber
'
tanda di dalamnya. Jika Anda hanya melakukan find / replace untuk mengganti` with
\ `THEN find / replace untuk mengganti'
dengan\'
dan baris baru dengan` `baris baru, itu akan berfungsi dengan baik.`
- maka Anda dapat memasukkan ekspresi seperti${var}
- Anda hanya perlu melarikan diri\`
dan\$
Checkout impor HTML5 melalui tutorial Html5rocks dan di proyek-polimer
Sebagai contoh:
sumber
stuff.html
tersedia sebagai templat di dalam halaman induk, tetapi Anda harus menggunakan skrip untuk membuat klon DOM-nya di halaman induk sehingga dapat dilihat oleh pengguna.TypeError: ... .import is undefined
. MDN mengatakan "Fitur ini tidak diterapkan di browser mana pun secara asli saat ini." Adakah yang tahu kalau bisa membuat FF dengan fitur ini?Plug tak tahu malu dari perpustakaan yang saya tulis menyelesaikan ini.
https://github.com/LexmarkWeb/csi.js
Di atas akan mengambil konten
/path/to/include.html
dan menggantinyadiv
.sumber
<div data-include="/path/to/include.html"></div>
. Alat ini membuatnya lebih mudah untuk membuat mockup multi-plugin sederhana tanpa plugin dengan cara yang bersih.Sisi server sederhana termasuk arahan untuk memasukkan file lain yang ditemukan di folder yang sama terlihat seperti ini:
sumber
<!--#include file="a.html" -->
jugaTidak perlu skrip. Tidak perlu melakukan hal-hal sisi server mewah (tho yang mungkin akan menjadi pilihan yang lebih baik)
Karena browser lama tidak mendukung mulus, Anda harus menambahkan beberapa css untuk memperbaikinya:
Perlu diingat bahwa untuk peramban yang tidak mendukung mulus, jika Anda mengklik tautan di iframe itu akan membuat bingkai masuk ke url itu, bukan keseluruhan jendela. Cara untuk menyiasatinya adalah dengan memiliki semua tautan
target="_parent"
, sehingga dukungan peramban "cukup baik".sumber
seamless
atribut telah dihapus dari draft HTML asalnya. Jangan gunakan itu.Sebuah solusi yang sangat lama saya memang memenuhi kebutuhan saya saat itu, tapi inilah cara melakukannya dengan kode yang sesuai standar:
sumber
<object>
,<embed>
dan<iframe>
semua berfungsi untuk ini, tetapi dalam ketiga kasus mereka membuat dokumen terpisah dengan gaya penataan dan penulisan skrip mereka sendiri (iframe khususnya mencakup batas dan bilah gulir yang jelek), dan misalnya semua tautan secara default terbuka di dalamnya daripada di halaman induk (meskipun ini dapat diganti dengan target = "_ parent"). Dari semua ini, iframe adalah satu-satunya yang memiliki beberapa harapan menjadi lebih terintegrasi melalui HTML5seamless
atribut (disebutkan oleh bjb568), tapi itu belum didukung: caniuse.com/#feat=iframe-seamlessseamless
atribut) adalah satu-satunya bagian yang ketinggalan jaman - sisanya masih berlaku.Sebagai alternatif, jika Anda memiliki akses ke file .htaccess di server Anda, Anda dapat menambahkan arahan sederhana yang akan memungkinkan php ditafsirkan pada file yang diakhiri dengan ekstensi .html.
Sekarang Anda dapat menggunakan skrip php sederhana untuk memasukkan file lain seperti:
sumber
.htaccess
dapat menyebabkanhtml
halaman mencoba mengunduh sebagai file daripada melihat di browser. Tes dulu. Penafian: Itu baru saja terjadi pada saya ketika saya mencoba solusi di atas. Saya.htaccess
kosong kecuali untuk dua baris di atas. Perhatian disarankan. Cobalolo
solusi jQuery (di bawah) sebagai gantinya.Berikut berfungsi jika konten html dari beberapa file perlu disertakan: Misalnya, baris berikut akan menyertakan konten piece_to_include.html di lokasi di mana definisi OBJECT terjadi.
Referensi: http://www.w3.org/TR/WD-html40-970708/struct/includes.html#h-7.7.4
sumber
Inilah solusi di tempat saya:
sumber
Di w3.js termasuk karya-karya seperti ini:
Untuk deskripsi yang tepat lihat ini: https://www.w3schools.com/howto/howto_html_include.asp
sumber
Inilah yang membantu saya. Untuk menambahkan blok kode html dari
b.html
kea.html
, ini harus masuk kehead
taga.html
:Kemudian dalam tag tubuh, sebuah wadah dibuat dengan id unik dan blok javascript untuk memuatnya
b.html
ke dalam wadah, sebagai berikut:sumber
Saya tahu ini adalah posting yang sangat lama, jadi beberapa metode tidak tersedia saat itu. Tapi ini pendapat saya yang sangat sederhana (berdasarkan jawaban Lolo).
Itu bergantung pada atribut data- * HTML5 dan oleh karena itu sangat generik karena menggunakan fungsi jQuery untuk setiap fungsi untuk mendapatkan setiap .class yang cocok dengan "load-html" dan menggunakan atribut 'sumber data' masing-masing untuk memuat konten:
sumber
Anda dapat menggunakan polyfill Impor HTML ( https://www.html5rocks.com/en/tutorials/webcomponents/imports/ ), atau solusi yang disederhanakan https://github.com/dsheiko/html-import
Misalnya, pada halaman Anda mengimpor blok HTML seperti itu:
Blok mungkin memiliki impor sendiri:
Importir menggantikan arahan dengan HTML yang dimuat cukup banyak seperti SSI
Arahan ini akan disajikan secara otomatis segera setelah Anda memuat JavaScript kecil ini:
Ini akan memproses impor ketika DOM siap secara otomatis. Selain itu, memperlihatkan API yang dapat Anda gunakan untuk berjalan secara manual, untuk mendapatkan log dan sebagainya. Nikmati :)
sumber
script async src
tampaknya. Cobalah!Sebagian besar solusi berfungsi tetapi mereka memiliki masalah dengan jquery :
Masalahnya adalah mengikuti kode yang
$(document).ready(function () { alert($("#includedContent").text()); }
tidak memberi peringatan apa pun selain memperingatkan konten yang disertakan.Saya menulis kode di bawah ini, dalam solusi saya, Anda dapat mengakses konten yang disertakan dalam
$(document).ready
fungsi:(Kuncinya adalah memuat konten yang disertakan secara sinkron).
index.htm :
termasuk .inc :
jquery menyertakan plugin di github
sumber
Untuk memasukkan konten dari file bernama:
sumber
Jawaban Athari (yang pertama!) Terlalu konklusif! Baik sekali!
Tetapi jika Anda ingin memberikan nama halaman untuk dimasukkan sebagai parameter URL , posting ini memiliki solusi yang sangat bagus untuk digunakan dikombinasikan dengan:
http://www.jquerybyexample.net/2012/06/get-url-parameters-using-jquery.html
Jadi itu menjadi seperti ini:
URL Anda:
The a.html Kode sekarang menjadi:
Ini bekerja sangat baik untuk saya! Semoga membantu :)
sumber
html5rocks.com memiliki tutorial yang sangat baik tentang hal ini, dan ini mungkin agak terlambat, tapi saya sendiri tidak tahu ini ada. w3schools juga memiliki cara untuk melakukan ini menggunakan perpustakaan baru mereka yang disebut w3.js. Masalahnya, ini membutuhkan penggunaan server web dan objek HTTPRequest. Anda sebenarnya tidak dapat memuat ini secara lokal dan mengujinya di mesin Anda. Yang bisa Anda lakukan adalah menggunakan polyfill yang disediakan di tautan html5rocks di bagian atas, atau ikuti tutorialnya. Dengan sedikit sihir JS, Anda dapat melakukan sesuatu seperti ini:
Ini akan membuat tautan (Dapat mengubah menjadi elemen tautan yang diinginkan jika sudah disetel), mengatur impor (kecuali Anda sudah memilikinya), dan kemudian menambahkannya. Kemudian dari sana akan mengambil dan mengurai file dalam HTML, dan kemudian menambahkannya ke elemen yang diinginkan di bawah div. Ini semua dapat diubah agar sesuai dengan kebutuhan Anda dari elemen tambahan ke tautan yang Anda gunakan. Saya harap ini membantu, mungkin tidak relevan sekarang jika cara yang lebih baru dan lebih cepat telah keluar tanpa menggunakan perpustakaan dan kerangka kerja seperti jQuery atau W3.js.
UPDATE: Ini akan menimbulkan kesalahan yang mengatakan bahwa impor lokal telah diblokir oleh kebijakan CORS. Mungkin perlu akses ke web yang dalam untuk dapat menggunakan ini karena properti web yang dalam. (Artinya tidak ada penggunaan praktis)
sumber
Inilah pendekatan saya menggunakan Fetch API dan fungsi async
sumber
Tidak ada solusi HTML langsung untuk tugas untuk saat ini. Bahkan Impor HTML (yang secara permanen dalam konsep ) tidak akan melakukan hal itu, karena Impor! = Termasuk dan beberapa sihir JS akan tetap diperlukan.
Saya baru-baru menulis sebuah VanillaJS naskah itu hanya untuk dimasukkan HTML ke dalam HTML, tanpa komplikasi.
Tempatkan saja di
a.html
Itu
open-source
dan mungkin memberikan ide (saya harap)sumber
Anda dapat melakukannya dengan jQuery library JavaScript seperti ini:
HTML:
JS:
Harap perhatikan bahwa
banner.html
harus ditempatkan di bawah domain yang sama dengan halaman Anda yang lain jika tidak, halaman web Anda akan menolakbanner.html
file tersebutkebijakan Berbagi Sumber Daya Lintas-Asal .Perlu diketahui juga bahwa jika Anda memuat konten Anda dengan JavaScript, Google tidak akan dapat mengindeksnya sehingga itu bukan metode yang baik untuk alasan SEO.
sumber
Apakah Anda mencoba injeksi iFrame?
Ini menyuntikkan iFrame dalam dokumen dan menghapus dirinya sendiri (seharusnya dalam HTML DOM)
<iframe src="header.html" onload="this.before((this.contentDocument.body||this.contentDocument).children[0]);this.remove()"></iframe>
Salam
sumber
Saya datang ke topik ini mencari sesuatu yang serupa, tetapi sedikit berbeda dari masalah yang ditimbulkan oleh lolo. Saya ingin membuat halaman HTML yang berisi menu alfabet tautan ke halaman lain, dan masing-masing halaman lainnya mungkin ada atau tidak ada, dan urutan pembuatannya mungkin tidak sesuai abjad (atau bahkan numerik). Juga, seperti Tafkadasoh, saya tidak ingin membengkak halaman web dengan jQuery. Setelah meneliti masalah dan bereksperimen selama beberapa jam, inilah yang berhasil bagi saya, dengan menambahkan komentar yang relevan:
sumber
Ini adalah artikel yang bagus , Anda dapat mengimplementasikan perpustakaan umum dan cukup menggunakan kode di bawah ini untuk mengimpor file HTML apa pun dalam satu baris.
Anda juga dapat mencoba Google Polymer
sumber
Menggunakan ES6 backticks ``: templat literals !
Dengan cara ini kita dapat memasukkan html tanpa menyandikan kutipan, memasukkan variabel dari DOM, dan sebagainya.
Ini adalah mesin templating yang kuat, kita dapat menggunakan file js terpisah dan menggunakan acara untuk memuat konten di tempat, atau bahkan memisahkan semuanya dalam potongan dan memanggil permintaan:
https://caniuse.com/#feat=template-literals
sumber
javascript
lencana itu sebagai programmer hobi sampai saat itu.Untuk membuat Solusi berfungsi, Anda harus menyertakan file csi.min.js, yang dapat Anda temukan di sini .
Seperti contoh yang ditunjukkan pada GitHub, untuk menggunakan perpustakaan ini Anda harus menyertakan file csi.js di header halaman Anda, maka Anda perlu menambahkan atribut data-include dengan nilainya yang diatur ke file yang ingin Anda sertakan, pada wadah elemen.
Sembunyikan Kode Salin
... semoga membantu.
sumber
PHP adalah bahasa scripting tingkat server. Itu dapat melakukan banyak hal, tetapi satu penggunaan populer adalah untuk memasukkan dokumen HTML di dalam halaman Anda, sama seperti SSI. Seperti SSI, ini adalah teknologi tingkat server. Jika Anda tidak yakin apakah Anda memiliki fungsi PHP di situs web Anda, hubungi penyedia hosting Anda.
Berikut ini adalah skrip PHP sederhana yang dapat Anda gunakan untuk memasukkan potongan HTML pada halaman web yang mendukung PHP:
Simpan HTML untuk elemen umum situs Anda untuk memisahkan file. Misalnya, bagian navigasi Anda mungkin disimpan sebagai navigation.html atau navigation.php. Gunakan kode PHP berikut untuk memasukkan HTML itu di setiap halaman.
Gunakan kode yang sama pada setiap halaman yang ingin Anda sertakan file. Pastikan untuk mengubah nama file yang disorot menjadi nama dan jalur ke file sertakan Anda.
sumber
Jika Anda menggunakan beberapa kerangka kerja seperti Django / Bootle, mereka sering mengirimkan beberapa mesin template. Katakanlah Anda menggunakan botol, dan mesin templat default adalah SimpleTemplate Engine . Dan di bawah ini adalah file html murni
Anda dapat memasukkan footer.tpl di file utama Anda, seperti:
Selain itu, Anda juga dapat meneruskan parameter ke dashborard.tpl Anda.
sumber
Berdasarkan jawaban https://stackoverflow.com/a/31837264/4360308 Saya telah mengimplementasikan fungsi ini dengan Nodejs (+ express + cheerio) sebagai berikut:
HTML (index.html)
JS
tambahkan -> termasuk konten ke dalam div
ganti -> menggantikan div
Anda dapat dengan mudah menambahkan lebih banyak perilaku mengikuti desain yang sama
sumber