Javascript 自定义元素不会触发内联自定义事件
我试图用以下代码从自定义元素捕获内联自定义事件。我在日志上只获得了“外部成功”,从未获得过“内联成功” 有什么想法吗?多谢各位 注意:我还尝试用htmldevelment/is:替换HTMLELement,结果相同Javascript 自定义元素不会触发内联自定义事件,javascript,inline,custom-element,custom-events,Javascript,Inline,Custom Element,Custom Events,我试图用以下代码从自定义元素捕获内联自定义事件。我在日志上只获得了“外部成功”,从未获得过“内联成功” 有什么想法吗?多谢各位 注意:我还尝试用htmldevelment/is:替换HTMLELement,结果相同 customElements.define( “测试它”,类扩展HtmleElement{ connectedCallback(){ this.children[0].addEventListener('click',e=>this.dispatchEvent(新的CustomEv
customElements.define(
“测试它”,类扩展HtmleElement{
connectedCallback(){
this.children[0].addEventListener('click',e=>this.dispatchEvent(新的CustomEvent('testevent',{detail:'test'})))
};
}
);
document.getElementsByTagName('test-it')[0].addEventListener('testevent',()=>{console.log('external success')代码>
最小检验
谢谢,可用于以下添加,但自定义事件详细信息丢失(代码已更新)
if(this.ontestevent)this.ontestevent();else eval(this.getAttribute('ontestevent');
customElements.define(
“测试它”,类扩展HtmleElement{
connectedCallback(){
此.children[0]。addEventListener(
“点击”,
e=>{
dispatchEvent(新的CustomEvent('testevent',{detail:'test'}));
if(this.ontestevent)this.ontestevent();else eval(this.getAttribute('ontestevent'));
})
};
}
);
document.getElementsByTagName('test-it')[0].addEventListener('testevent',(e)=>{console.log('external success:'+e.detail)})代码>
最小检验
testevent
不是有效的HTML5全局事件处理程序:
这意味着ontestevent=“…”
只是一个属性,而不是onEvent
处理程序
您可以而不是自己创建这样的处理程序
这就是创建addEventListener
的原因
PS.对于您未来的Web组件冒险:从shadowDOM内部发送事件(您现在不使用)需要composed:true
才能让CustomEvents逃离shadowDOM我想这与自定义元素无关。顺便说一句,从技术上讲,让它工作没有问题我很想看看如何;在Web组件中,我更喜欢内联处理程序。。。我指的是真正的内联处理程序,比如OP-his表示法,没有eval
tracky。您已经通过将内容放置到属性来执行eval了。我如何创建自己的全局事件处理程序<代码>
我认为以on开头的每个属性都会匹配。但有效的名单有限。非常感谢。