Pregunta

atributos de datos personalizado: http: // dev.w3.org/html5/spec/Overview.html#embedding-custom-non-visible-data

Cuando digo “trabajo”, es decir, si tengo HTML siguiente:

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

será el siguiente JavaScript:

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

productos, en IE 6, una alerta con “Geoff de Geoff” en ella?

¿Fue útil?

Solución

Puede recuperar los valores de medida (o en su propio) atributos usando getAttribute. Siguiendo su ejemplo, con

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

puedo obtener el valor de data-geoff utilizando

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

MSDN . Y aunque se menciona allí que necesita Internet Explorer 7 para conseguir que esto funcione, he probado esto hace un tiempo con IE6 y funcionó correctamente (incluso en modo de rarezas).

Pero esto no tiene nada que ver con los atributos HTML 5-específicas, por supuesto.

Otros consejos

Sí, funcionan.

IE ha apoyado getAttribute() del IE4, que es lo que jQuery utiliza internamente para data().

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

Así que usted puede utilizar el método de jQuery .data() o con sabor de vainilla JavaScript:

Ejemplo de 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");

No sólo IE6 no soporta la función de atributos de datos HTML5, de hecho prácticamente no navegador actual les apoya! La única excepción en este momento es Chrome.

Se encuentra perfectamente en libertad de usar data-geoff="geoff de geoff" como un atributo, pero solo cromo de las versiones actuales del navegador va a dar a la propiedad .dataGeoff.

Afortunadamente, todos navegadores actuales - incluyendo IE6 -. Puede hacer referencia a los atributos desconocidos utilizando el método DOM .getAttribute() estándar, por lo .getAttribute("data-geoff") trabajará en todas partes

En un futuro muy cercano, nuevas versiones de Firefox y Safari comenzarán a apoyar a los atributos de los datos, pero teniendo en cuenta que hay un perfectamente buena manera de accessessing lo que funciona en todos los navegadores, entonces no hay realmente ninguna razón para usar el HTML5 método que sólo funcionará para algunos de sus visitantes.

Se puede ver más información sobre el estado actual de apoyo a esta característica en CanIUse.com .

Espero que ayude.

Creo IE siempre ha apoyado este (por lo menos a partir del IE4) y se puede acceder a ellos desde JS. Ellos fueron llamados "propiedades expando. Ver de edad MSDN artículo

Este comportamiento se puede desactivar mediante el establecimiento de la expando propiedad en false en un elemento DOM (que es cierto por defecto, por lo que el expando propiedades de trabajo por defecto).

Edit: fija la URL

Si quisiera recuperar todos los datos de atributos personalizados a la vez como la propiedad conjunto de datos en los nuevos navegadores, se puede hacer lo siguiente. Esto es lo que hice y funciona muy bien para mí en 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;
}

IE6 , puede que no funcione. Para referencia: MSDN

sugiero utilizar jQuery para manejar la mayoría de los casos:

var geoff = $("#geoff").data("data-geoff");
alert(geoff);

Probar en su codificación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top