Atributos de datos personalizados: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
Cuando digo "trabajo", quiero decir, si tengo HTML como este:
<div id="geoff" data-geoff="geoff de geoff">
será el siguiente JavaScript:
var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
producir, en IE 6, una alerta con "geoff de geoff" en el?
data-geoff
no es un identificador JS válido debido al carácter "-". Tendrías que usarlodataGeoff
en scripts.geoff.dataGeoff
no funcionó. Resultó ( whatwg.org/specs/web-apps/current-work/multipage/… ) que debería sergeoff.dataset.geoff
, pero comoelement.dataset
todavía estáundefined
en los navegadores modernos, eso no es compatible.Respuestas:
Puede recuperar valores de atributos personalizados (o los suyos propios) utilizando
getAttribute
. Siguiendo tu ejemplo conPuedo obtener el valor de
data-geoff
usarVer MSDN . Y aunque se menciona allí que necesita IE7 para que esto funcione, lo probé hace un tiempo con IE6 y funcionó correctamente (incluso en modo peculiar).
Pero esto no tiene nada que ver con los atributos específicos de HTML5, por supuesto.
fuente
Si, ellos trabajan.
IE es compatible
getAttribute()
con IE4, que es para lo que jQuery utiliza internamentedata()
.Entonces puede usar el
.data()
método de jQuery o JavaScript simple:HTML de muestra
Javascript
jQuery
fuente
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>
tal si esto estaría bien en IE6? ¿Cómo leerías el valor?IE6 no solo no es compatible con la función de atributo de datos HTML5, sino que prácticamente no navegador actual los admite! La única excepción en este momento es Chrome.
Puede utilizarlo
data-geoff="geoff de geoff"
como un atributo, pero solo Chrome de las versiones actuales del navegador le dará el.dataGeoff
propiedad.Afortunadamente, todos los navegadores actuales, incluido IE6, pueden hacer referencia a atributos desconocidos utilizando el
.getAttribute()
método DOM estándar , por lo que.getAttribute("data-geoff")
lo que funcionarán en todas partes.En un futuro muy cercano, las nuevas versiones de Firefox y Safari comenzarán a admitir los atributos de datos, pero dado que hay una forma perfectamente buena de acceder a ella que funciona en todos los navegadores, entonces no hay realmente ninguna razón para usar el método HTML5 que solo funciona para algunos de tus visitantes.
Puede ver más sobre el estado actual de soporte para esta función en CanIUse.com .
Espero que ayude.
fuente
dataset
propiedad, pero todos los navegadores le permiten almacenar datos en atributos con un prefijo dedata-
, y (como usted dice) recuperarlos a través degetAttribute
. Entonces, en cierto sentido, admiten la función, porque puedes usar los atributos de manera efectiva.dataset
propiedad para acceder a ellos: no sé qué beneficios se supone que debe ofrecergetAttribute
..dataXYZ
propiedades; Como usted dice, la funcionalidad básica es ampliamente compatible, pero no porque sea HTML5.Creo que IE siempre ha admitido esto (al menos a partir de IE4) y puede acceder a ellos desde JS. Se llamaron 'propiedades de expansión'. Ver artículo antiguo de MSDN
Este comportamiento se puede deshabilitar estableciendo la propiedad expando en falso en un elemento DOM (es cierto de forma predeterminada, por lo que las propiedades expando funcionan de manera predeterminada).
Editar: reparó la URL
fuente
Si desea recuperar todos los atributos de datos personalizados a la vez, como la propiedad del conjunto de datos en los navegadores más nuevos, puede hacer lo siguiente. Esto es lo que hice y funciona muy bien para mí en ie7 +.
fuente
En IE6 , puede que no funcione. Para referencia: MSDN
Sugiero usar jQuery para manejar la mayoría de los casos:
Prueba esto en tu codificación.
fuente