我有一个定制的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,我在这里做些蠢事吗?
答案 0 :(得分:1)
好吧我明白了,但答案很奇怪。如果我改变这一行:
var myEl = document.getElementById('my-button')
到
var myEl = document.querySelector('my-button')
它将在Safari中突然发挥作用。我没有解释为什么,不应该存在命名冲突,因为getElementById()
仍然应该能够选择元素。