Рассмотрим следующий код:
(function () {
'use strict';
delete document.body.dataset.state;
})();
где тело dataset
пусто. Safari обрабатывает все значения DOMStringMap - ну, я думаю, так - как ReadOnly
, а их значения enumerable
, configurable
и writable
для дескрипторов установлены на false
. Это приводит к появлению TypeError: Unable to delete property
в приведенном выше примере.
Но в значениях дескриптора свойств набора данных Chrome значение true
(может быть проверено с помощью Object.getOwnPropertyDescriptor()
), а удаление не существующего атрибута не выдает ошибки.
Итак, какое поведение верно? Спектр говорит о readonly dataset, но записываемый DOMStringMap, поэтому я предполагаю, что свойства набора данных должны быть удалены. Я что-то пропустил?