Polymer Firefox中的聚合自定义元素数据集为空

Polymer Firefox中的聚合自定义元素数据集为空,polymer,web-component,custom-element,Polymer,Web Component,Custom Element,我觉得Firefox正在“清除”自定义元素上的data-*属性 请参阅下面的脚本,它在Chrome中使用本机Web组件支持,但在Firefox中,似乎一旦运行了我的click事件处理程序,数据集就为空 document.addEventListener('DOMContentLoaded', function() { var popups = document.querySelectorAll('iron-image[data-popup]'); for (var i=0; i

我觉得Firefox正在“清除”自定义元素上的
data-*
属性

请参阅下面的脚本,它在Chrome中使用本机Web组件支持,但在Firefox中,似乎一旦运行了我的click事件处理程序,数据集就为空

document.addEventListener('DOMContentLoaded', function() {
    var popups = document.querySelectorAll('iron-image[data-popup]');
    for (var i=0; i < popups.length; i++) {
        var img = popups[i];
        console.log(img.dataset.popup);   // <--- this works

        img.addEventListener('click', function(ev) {
            var app = document.querySelector('sh-app');
            app.showPopup(ev.target.dataset.popup);  // <-- This fails, dataset is empty
        });
    }
});
document.addEventListener('DOMContentLoaded',function(){
var popups=document.querySelectorAll('iron-image[data popup]”);
对于(变量i=0;i
基本上,您必须使用
Polymer.dom
来包装事件以对其进行规范化

document.addEventListener('DOMContentLoaded', function() {
    var popups = document.querySelectorAll('iron-image[data-popup]');
    for (var i=0; i < popups.length; i++) {
        var img = popups[i];
        console.log(img.dataset.popup);   // <--- this works

        img.addEventListener('click', function(ev) {
            var app = document.querySelector('sh-app');
            var event = Polymer.dom(ev); // you wrap the event using Polymer.dom
            app.showPopup(event.localTarget.dataset.popup);  // instead of target you should use localTarget
       });
   }
});
document.addEventListener('DOMContentLoaded',function(){
var popups=document.querySelectorAll('iron-image[data popup]”);
对于(变量i=0;iconsole.log(img.dataset.popup);//谢谢!非常好用。我错过了文档中的这一部分,可能只读过一次,然后就忘了想:“我可能永远不会需要它”,直到我读了;)@andre Side note顺便说一句,你应该在这里使用forEach而不是常规的for循环。