Safari中的聚合物组件调度事件

时间:2017-11-02 21:50:15

标签: javascript polymer polymer-2.x

我有一个定制的Polymer 2+组件,如下所示:

<my-button id="my-button"></my-button>

组件中,我在几个地方(ready(),鼠标按下等)上有这个代码块进行测试:

this.dispatchEvent(new Event('test'));
this.dispatchEvent(new CustomEvent('testCustom', {detail: {hey:'hey'}, bubbles:true, composed: true}));

在Chrome中,这两个都可以被捕获并记录在实现按钮的下方侦听器中:

var myEl = document.getElementById('my-button')

myEl.addEventListener('test', function(){
   console.log('test reached');
})

myEl.addEventListener('testCustom', function(ev){
   console.log('test custom reached');
})

然而,在Safari 11中,在macOS Sierra上,它们不是。在Safari中应该支持CustomEvent,我在这里做些蠢事吗?

1 个答案:

答案 0 :(得分:1)

好吧我明白了,但答案很奇怪。如果我改变这一行:

var myEl = document.getElementById('my-button')

var myEl = document.querySelector('my-button')

它将在Safari中突然发挥作用。我没有解释为什么,不应该存在命名冲突,因为getElementById()仍然应该能够选择元素。