Atribut data khusus: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
Ketika saya mengatakan "bekerja", maksud saya, jika saya punya HTML seperti ini:
<div id="geoff" data-geoff="geoff de geoff">
akankah JavaScript berikut ini:
var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
menghasilkan, di IE 6, peringatan dengan "geoff de geoff" di dalamnya?
data-geoff
ini bukan pengidentifikasi JS yang valid karena karakter "-". Anda harus menggunakandataGeoff
skrip.geoff.dataGeoff
tidak berhasil. Ternyata ( whatwg.org/specs/web-apps/current-work/multipage/... ) yang harus menjadigeoff.dataset.geoff
, tetapi sebagaielement.dataset
masihundefined
dalam browser modern, yang tidak didukung.Jawaban:
Anda dapat mengambil nilai atribut kustom (atau milik Anda) menggunakan
getAttribute
. Mengikuti contoh Anda denganSaya bisa mendapatkan nilai
data-geoff
menggunakanLihat MSDN . Dan meskipun disebutkan di sana bahwa Anda perlu IE7 untuk mendapatkan ini berfungsi, saya mengujinya beberapa saat yang lalu dengan IE6 dan berfungsi dengan benar (bahkan dalam mode kebiasaan).
Tapi ini tidak ada hubungannya dengan atribut khusus HTML5, tentu saja.
sumber
Ya, mereka bekerja.
IE telah mendukung
getAttribute()
dari IE4 yang digunakan jQuery secara internaldata()
.Jadi Anda bisa menggunakan
.data()
metode jQuery atau JavaScript vanilla biasa:Contoh HTML
Javascript
jQuery
sumber
Note: All browsers can already use data-* attributes and access them using getAttribute. "Supported" refers to accessing the values using the dataset property. Current spec only refers to support on HTML elements, only some browsers also have support for SVG/MathML elements.
<div lala="Tom"></div>
, apakah ini ok di IE6? Bagaimana Anda membaca nilainya?IE6 tidak hanya tidak mendukung fitur Atribut Data HTML5, bahkan sebenarnya tidak ada browser saat ini yang mendukungnya! Satu-satunya pengecualian saat ini adalah Chrome.
Anda bebas menggunakan
data-geoff="geoff de geoff"
sebagai atribut, tetapi hanya Chrome versi browser saat ini yang akan memberi Anda.dataGeoff
properti.Untungnya, semua browser saat ini - termasuk IE6 - dapat mereferensikan atribut yang tidak diketahui menggunakan
.getAttribute()
metode DOM standar , sehingga.getAttribute("data-geoff")
akan bekerja di mana saja.Dalam waktu dekat, versi baru Firefox dan Safari akan mulai mendukung atribut data, tetapi mengingat bahwa ada cara yang sangat baik untuk mengaksesnya yang bekerja di semua browser, maka benar-benar tidak ada alasan untuk menggunakan metode HTML5 yang akan hanya berfungsi untuk beberapa pengunjung Anda.
Anda dapat melihat lebih lanjut tentang kondisi dukungan saat ini untuk fitur ini di CanIUse.com .
Semoga itu bisa membantu.
sumber
dataset
properti, tetapi semua browser memungkinkan Anda untuk menyimpan data dalam atribut dengan awalandata-
, dan (seperti yang Anda katakan) mengambilnya melaluigetAttribute
. Jadi di satu sisi mereka mendukung fitur, karena Anda dapat menggunakan atribut itu sendiri secara efektif.dataset
properti untuk mengaksesnya - saya tidak tahu manfaat apa yang ditawarkannyagetAttribute
..dataXYZ
properti; seperti yang Anda katakan, fungsionalitas dasar didukung secara luas, tetapi bukan karena itu HTML5.Saya pikir IE selalu mendukung ini (setidaknya mulai dari IE4) dan Anda dapat mengaksesnya dari JS. Mereka disebut 'properti diperluas'. Lihat artikel MSDN lama
Perilaku ini dapat dinonaktifkan dengan menyetel properti ekspansi ke false pada elemen DOM (itu benar secara default, sehingga properti Expando bekerja secara default).
Edit: memperbaiki URL
sumber
Jika Anda ingin mengambil semua atribut data khusus sekaligus seperti properti dataset di browser yang lebih baru, Anda bisa melakukan hal berikut. Inilah yang saya lakukan dan bekerja bagus untuk saya di ie7 +.
sumber
Di IE6 , itu mungkin tidak berfungsi. Untuk referensi: MSDN
Saya sarankan menggunakan jQuery untuk menangani sebagian besar kasus:
Coba ini di coding Anda.
sumber