Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/480.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自定义元素不会触发内联自定义事件_Javascript_Inline_Custom Element_Custom Events - Fatal编程技术网

Javascript 自定义元素不会触发内联自定义事件

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

我试图用以下代码从自定义元素捕获内联自定义事件。我在日志上只获得了“外部成功”,从未获得过“内联成功”

有什么想法吗?多谢各位

注意:我还尝试用htmldevelment/is:替换HTMLELement,结果相同

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开头的每个属性都会匹配。但有效的名单有限。非常感谢。