3
Webコンポーネントをフレームワークなしで使用すると、カスタムイベントを実装する適切な方法は何ですか?バニラWebコンポーネントのカスタムイベント属性とプロパティ
<x-pop-out onpop="someGlobal.doSomething()"/>
var el = document.getElementsByTagName('x-pop-out')[0];
el.onpop =()=> someGlobal.doSomething();
//or
el.addEventListener('pop',()=> someGlobal.doSomething());
私が行う方法を得るが、やる最後の1:たとえば、私は仕事に、以下のすべてたいと私はpop
のカスタムイベントを持つカスタム要素x-pop-out
を持っていると言います私は、属性とgetter/setterをそれぞれカスタム実装する必要がありますか?また、eval()
は属性から文字列を実行する適切な方法ですか?
感謝!これは正しいようですが、私は3つのパターンすべてで一度に特定のイベントを登録する方法があるかどうか疑問に思いましたが、あなたは正しいと信じていません。カスタムイベントを持つすべてのWebコンポーネントが 'eval(string)'になると思うのは驚くべきことですが、そうでなければ何の示唆もありません。 – hapticdata
実際には、eval()の使用はカスタム要素にリンクされず、属性のインラインJavaScriptにリンクされます。標準的な要素でも使用されます。そのため、制限されたコンテンツポリシーが適用されている場合、インラインのJavaScriptは許可されません。 – Supersharp