Atributos de dados personalizados: http://dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data
Quando digo "trabalho", quero dizer, se eu tenho HTML assim:
<div id="geoff" data-geoff="geoff de geoff">
será o seguinte JavaScript:
var geoff = document.getElementById('geoff');
alert(geoff.dataGeoff);
produzir, no IE 6, um alerta com "geoff de geoff"?
javascript
internet-explorer
html
internet-explorer-6
custom-data-attribute
Paul D. Waite
fonte
fonte
data-geoff
não é um identificador JS válido devido ao caractere "-". Você precisaria usardataGeoff
em scripts.geoff.dataGeoff
não funcionou. Aconteceu ( whatwg.org/specs/web-apps/current-work/multipage/… ) que deveria sergeoff.dataset.geoff
, mas comoelement.dataset
ainda éundefined
nos navegadores modernos, isso não é suportado.Respostas:
Você pode recuperar valores de atributos personalizados (ou seus) usando
getAttribute
. Seguindo seu exemplo comEu posso obter o valor de
data-geoff
usarVeja MSDN . E, embora seja mencionado lá que você precisa do IE7 para fazer isso funcionar, testei isso há algum tempo com o IE6 e ele funcionou corretamente (mesmo no modo quirks).
Mas isso não tem nada a ver com atributos específicos do HTML5, é claro.
fonte
Sim, eles trabalham.
O IE suporta o
getAttribute()
IE4, que é o que o jQuery usa internamentedata()
.Portanto, você pode usar o
.data()
método jQuery ou JavaScript simples:Exemplo de HTML
Javascript
jQuery
fonte
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>
, isso seria ok no IE6? Como você leria o valor?O IE6 não apenas não suporta o recurso de atributo de dados HTML5, como praticamente nenhum navegador atual os suporta! A única exceção no momento é o Chrome.
Você tem toda a liberdade de usá-lo
data-geoff="geoff de geoff"
como atributo, mas apenas o Chrome das versões atuais do navegador fornecerá a.dataGeoff
propriedade.Felizmente, todos os navegadores atuais - incluindo o IE6 - podem fazer referência a atributos desconhecidos usando o
.getAttribute()
método DOM padrão , portanto.getAttribute("data-geoff")
, funcionarão em qualquer lugar.Em um futuro próximo, novas versões do Firefox e Safari começarão a oferecer suporte aos atributos de dados, mas, como há uma maneira perfeitamente boa de acessá-lo que funciona em todos os navegadores, não há realmente nenhuma razão para usar o método HTML5 que só funciona para alguns de seus visitantes.
Você pode ver mais sobre o estado atual de suporte para esse recurso em CanIUse.com .
Espero que ajude.
fonte
dataset
propriedade, mas todos os navegadores permitem armazenar dados em atributos com um prefixo dedata-
(e como você diz) recuperá-los viagetAttribute
. Então, em certo sentido, eles suportam o recurso, porque você pode usar os próprios atributos efetivamente.dataset
entanto, entendo que não há razão para usar a propriedade para acessá-las - não sei quais benefícios ela deve oferecergetAttribute
..dataXYZ
propriedades; como você diz, a funcionalidade básica é amplamente suportada, mas não porque é HTML5.Eu acho que o IE sempre apoiou isso (pelo menos a partir do IE4) e você pode acessá-los a partir do JS. Eles foram chamados de 'propriedades expando'. Consulte o artigo antigo do MSDN
Esse comportamento pode ser desabilitado definindo a propriedade expando como false em um elemento DOM (é verdade por padrão, portanto, as propriedades expando funcionam por padrão).
Editar: corrigiu o URL
fonte
Se você deseja recuperar todos os atributos de dados personalizados de uma só vez, como a propriedade do conjunto de dados em navegadores mais recentes, faça o seguinte. Isto é o que eu fiz e funciona muito bem para mim no ie7 +.
fonte
No IE6 , pode não funcionar. Para referência: MSDN
Sugiro usar o jQuery para lidar com a maioria dos casos:
Tente isso em sua codificação.
fonte