Attributs de données personnalisés: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
Quand je dis "travail", je veux dire, si j’ai du HTML comme ça:
<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 contenant “geoff de geoff”?
Vous pouvez récupérer des valeurs d'attributs personnalisés (ou vos propres) à l'aide de getAttribute
. En suivant votre exemple avec
<div id="geoff" data-geoff="geoff de geoff">
Je peux obtenir la valeur de data-geoff
en utilisant
var geoff = document.getElementById("geoff");
alert(geoff.getAttribute("data-geoff"));
Voir MSDN . Et bien qu'il soit mentionné ici que vous avez besoin de IE7 pour que cela fonctionne, je l’ai déjà testé avec IE6 et il a fonctionné correctement (même en mode quirks).
Mais cela n'a bien sûr rien à voir avec les attributs spécifiques à HTML5.
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()
de jQuery ou le code JavaScript à la vanille:
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");
Non seulement IE6 ne prend pas en charge la fonctionnalité d'attribut de données HTML5, mais en fait aucun navigateur actuel ne les prend en charge! Chrome est la seule exception à l'heure actuelle.
Vous êtes parfaitement libre d'utiliser data-geoff="geoff de geoff"
Comme attribut, mais seul Chrome des versions actuelles du navigateur vous donnera la propriété .dataGeoff
.
Heureusement, tous les navigateurs actuels, y compris IE6, peuvent faire référence à des attributs inconnus à l'aide de la méthode standard DOM .getAttribute()
, donc .getAttribute("data-geoff")
fonctionnera partout.
Dans un avenir très proche, les nouvelles versions de Firefox et de Safari commenceront à prendre en charge les attributs de données, mais étant donné qu’il existe un excellent moyen d’accéder à ce dernier et qu’il fonctionne dans tous les navigateurs, il n’ya vraiment aucune raison d’utiliser la méthode HTML5. ne fonctionne que pour certains de vos visiteurs.
Vous pouvez en savoir plus sur l’état actuel de la prise en charge de cette fonction à l’adresse CanIUse.com .
J'espère que ça t'as aidé.
Je pense que IE a toujours supporté cela (au moins à partir de IE4) et vous pouvez y accéder depuis JS. Ils s'appelaient 'expando properties'. Voir ancien article de MSDN
Ce comportement peut être désactivé en définissant la propriété expando sur false sur un élément DOM (il est vrai par défaut), de sorte que expando les propriétés fonctionnent par défaut).
Edit: corrigé l'URL
Si vous souhaitez récupérer tous les attributs de données personnalisés à la fois, comme la propriété dataset dans les nouveaux navigateurs, vous pouvez procéder comme suit. C'est ce que j'ai fait et fonctionne très bien pour moi dans ie7 +.
function getDataSet(node) {
var dataset = {};
var attrs = node.attributes;
for (var i = 0; i < attrs.length; i++) {
var attr = attrs.item(i);
// make sure it is a data attribute
if(attr.nodeName.match(new RegExp(/^data-/))) {
// remove the 'data-' from the string
dataset[attr.nodeName.replace(new RegExp('^data-'), '')] = attr.nodeValue;
}
}
return dataset;
}
Dans IE6 , cela peut ne pas fonctionner. Pour référence: MSDN
Je suggère d'utiliser jQuery pour traiter la plupart des cas:
var geoff = $("#geoff").data("data-geoff");
alert(geoff);
Essayez ceci dans votre codage.