173 votes

Les attributs de données personnalisés HTML5 "fonctionnent" dans IE 6?

Attributs de données personnalisés: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data

Quand je dis "travailler", je veux dire, si j'ai du HTML comme ceci:

 <div id="geoff" data-geoff="geoff de geoff">
 

sera le JavaScript suivant:

 var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
 

produire, dans IE 6, une alerte avec "geoff de geoff" dedans?

153voto

Marcel Korpel Points 14633

Vous pouvez récupérer des valeurs de mesure (ou de votre propre) attributs à l'aide de getAttribute. Suivant votre exemple avec

<div id="geoff" data-geoff="geoff de geoff">

Je peux obtenir la valeur de data-geoff aide

var geoff = document.getElementById("geoff");
alert(geoff.getAttribute("data-geoff"));

Voir MSDN. Et bien c'est là que vous avez besoin d'IE7 pour obtenir que cela fonctionne, j'ai testé ça il y a longtemps avec IE6 et il fonctionnait correctement (même en mode quirks).

Mais cela n'a rien à voir avec HTML5 attributs spécifiques, bien sûr.

141voto

Marko Points 26030

Oui, ils travaillent.

IE a pris en charge getAttribute() partir de IE4, ce que jQuery utilise en interne pour data() .

 data = elem.getAttribute( "data-" + key ); // Line 1606, jQuery.1.5.2.js
 

Vous pouvez donc utiliser la méthode .data() jQuery ou le JavaScript de plain vanilla:

Exemple HTML

 <div id="some-data" data-name="Tom"></div>
 

Javascript

 var el = document.getElementById("some-data");
var name = el.getAttribute("data-name");
alert(name);
 

jQuery

 var name = $("#some-data").data("name");
 

9voto

Spudley Points 85371

Non seulement IE6 ne supporte pas le HTML5, l'Attribut de Données fonctionnalité, en fait pratiquement pas de navigateur actuel prend en charge de! La seule exception à ce moment est en Chrome.

Vous êtes parfaitement libre d'utiliser d' data-geoff="geoff de geoff" comme un attribut, mais seulement en Chrome de l'actuelle version de votre navigateur internet vous donnera l' .dataGeoff de la propriété.

Heureusement, tous les navigateurs actuels - y compris IE6 - pouvez référencer attributs inconnus à l'aide de la norme DOM .getAttribute() méthode, .getAttribute("data-geoff") fonctionnera partout.

Dans un avenir très proche, les nouvelles versions de Firefox et de Safari va commencer à soutenir les attributs de données, mais étant donné qu'il ya une bonne façon de accessessing ce qui fonctionne dans tous les navigateurs, alors il n'y a vraiment aucune raison d'être en utilisant le HTML5 méthode qui ne fonctionne que pour certains de vos visiteurs.

Vous pouvez en savoir plus sur l'état actuel de soutien pour cette fonctionnalité à CanIUse.com.

Espérons que cela aide.

7voto

Timores Points 9916

Je pense que IE a toujours soutenu cela (au moins à partir de IE4) et vous pouvez y accéder à partir de JS. Ils ont été appelés «propriétés expando». Voir l' ancien article MSDN

Ce comportement peut être désactivé en définissant la propriété expando sur false sur un élément DOM (c'est vrai par défaut, donc les propriétés expando fonctionnent par défaut).

Modifier: correction de l'URL

4voto

user1767210 Points 41

Si vous voulez récupérer tous les attributs de données personnalisé à la fois comme la propriété dataset dans les navigateurs récents, vous pourriez faire ce qui suit. C’est ce que j’ai fait et fonctionne très bien pour moi dans ie7 +.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X