Пользовательские атрибуты данных: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
Когда я говорю «работа», я имею в виду, если у меня есть HTML, как это:
<div id="geoff" data-geoff="geoff de geoff">
будет следующий JavaScript:
var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
создать в IE 6 оповещение с надписью «geoff de geoff»?
data-geoff
это недопустимый идентификатор JS из-за символа "-". Вам нужно использоватьdataGeoff
в сценариях.geoff.dataGeoff
не помог . Оказалось ( whatwg.org/specs/web-apps/current-work/multipage/… ), что так и должно бытьgeoff.dataset.geoff
, но, какelement.dataset
иundefined
в современных браузерах, это не поддерживается.Ответы:
Вы можете получить значения пользовательских (или ваших собственных) атрибутов, используя
getAttribute
. Следуя вашему примеру сЯ могу получить ценность
data-geoff
использованияСмотрите MSDN . И хотя там упоминается, что вам нужен IE7, чтобы заставить это работать, я протестировал это некоторое время назад с IE6, и он работал правильно (даже в режиме причуд).
Но это, конечно, не имеет ничего общего с атрибутами HTML5.
источник
Да, они работают.
IE поддерживает
getAttribute()
IE4, для чего внутренне используется jQuerydata()
.Таким образом, вы можете использовать
.data()
метод jQuery или простой ванильный JavaScript:Образец HTML
Javascript
JQuery
источник
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>
, это будет хорошо в IE6? Как бы вы прочитали значение?IE6 не только не поддерживает функцию атрибутов данных HTML5, но фактически ни один браузер не поддерживает их! Единственным исключением на данный момент является Chrome.
Вы можете свободно использовать его
data-geoff="geoff de geoff"
в качестве атрибута, но только Chrome текущих версий браузера предоставит вам это.dataGeoff
свойство.К счастью, все современные браузеры, включая IE6, могут ссылаться на неизвестные атрибуты, используя стандартный
.getAttribute()
метод DOM , поэтому.getAttribute("data-geoff")
будут работать везде.В самом ближайшем будущем новые версии Firefox и Safari начнут поддерживать атрибуты данных, но, учитывая, что существует совершенно хороший способ доступа к ним, который работает во всех браузерах, тогда нет никакой причины использовать метод HTML5, который будет работать только для некоторых ваших посетителей.
Вы можете узнать больше о текущем состоянии поддержки этой функции на CanIUse.com .
Надеюсь, это поможет.
источник
dataset
свойство, но все браузеры позволяют хранить данные в атрибутах с префиксомdata-
и (как вы говорите) получать их черезgetAttribute
. Так что в некотором смысле они поддерживают эту функцию, потому что вы можете эффективно использовать сами атрибуты.dataset
собственность для доступа к ним, хотя - я не знаю, какие преимущества она должна предложитьgetAttribute
..dataXYZ
свойства; как вы говорите, базовая функциональность широко поддерживается, но не потому, что это HTML5.Я думаю, что IE всегда поддерживал это (по крайней мере, начиная с IE4), и вы можете получить к ним доступ из JS. Они были названы «свойства экспандо». Смотрите старую статью MSDN
Это поведение можно отключить, установив для свойства expando значение false для элемента DOM (по умолчанию оно имеет значение true, поэтому свойства expando работают по умолчанию).
Изменить: исправил URL
источник
Если вы хотите получить все пользовательские атрибуты данных одновременно, например, свойство набора данных в новых браузерах, вы можете сделать следующее. Это то, что я сделал, и отлично работает для меня в ie7 +.
источник
В IE6 это может не работать. Для справки: MSDN
Я предлагаю использовать jQuery для обработки большинства случаев:
Попробуйте это в вашем коде.
источник