Element.dataset в Internet Explorer

Мне нужен способ перечислить атрибуты data-* элемента. Я бы использовал Object.keys(element.dataset) но IE 9.0 не имеет поддержки dataset . Как я должен делать это таким образом, который работает для IE 9.0 (и Chrome, Firefox, Safari)?

  • Как использовать javascript в Golang для получения определенных элементов сайта или отправки форм
  • Обратитесь к функции javascript изнутри самого себя
  • JQuery - используя inArray (), чтобы найти индекс объекта jQuery
  • Up () и down () по сравнению с Ext.getCmp ()
  • JQuery анимация scrolltop в Opera bug
  • Понимание переменных с плавающей запятой
  • Regex заменить несколько пробелов на одно пространство
  • Резервные решения хранилища HTML5 для локального хранилища
  • 3 Solutions collect form web for “Element.dataset в Internet Explorer”

    element.attributes даст вам NamedNodeList со всеми атрибутами элемента.
    Просто проверьте имена атрибутов, если они начинаются с data-

     var attributes = element.attributes, i = attributes.length; for (; i--; ){ if (/^data-.*/.test(attributes[i].name)) { console.log(attributes[i].name); } } 

    пример

    Если вы используете jQuery, вы можете получить доступ к атрибутам data- * через метод $ .data (): http://api.jquery.com/data/

    Я нуждался в этом, но также нуждался в доступе к ключам, поэтому я написал функцию, основанную на решении, данное Андреасом:

     Element.prototype.dataset_simulated = function(){ var attributes = this.attributes; var simulatedDataset = {}; for (var i = attributes.length; i--; ){ if (/^data-.*/.test(attributes[i].name)) { var key = attributes[i].name.replace('data-', ''); var value = this.getAttribute(attributes[i].name); simulatedDataset[key] = value; } } return simulatedDataset; }; 

    И чтобы использовать его, вместо выполнения element.dataset вы делаете element.dataset_simulated() .

    И вот скрипка

    Редактировать:

    Похоже, что IE <8 также не поддерживает Element.prototype , поэтому это может быть просто функцией с использованием типа dataset_simulated(elem) :

     function dataset_simulated(elem){ var attributes = elem.attributes; var simulatedDataset = {}; for (var i = attributes.length; i--; ){ if (/^data-.*/.test(attributes[i].name)) { var key = attributes[i].name.replace('data-', ''); var value = elem.getAttribute(attributes[i].name); simulatedDataset[key] = value; } } return simulatedDataset; }; 
    JavaScript делает сайт умным, красочным и простым использованием.