appやdocumentなどのオブジェクトが,何のイベントに対応していて捕捉できるか調べたいです。効率よく調べる方法はありますか?
イベント一覧を見てもいまいちどんなときに発動するのかわかりません。現状,対象オブジェクトにすべてのイベントリスナーを追加し,手動で変化を起こして反応を観察しています。
// 例:app.alignDistributePreferencesの変化を何のイベントで捕捉できるか調べる
// 結果:反応するイベントなし
// preact
import { h } from 'preact' ;
import { useEffect } from 'preact/hooks' ;
// adobe
import * as InDesign from 'indesign' ;
const { app } = InDesign ;
const EventList = [
'beforePlace',
'afterPlace',
'afterLinksChanged',
'afterNew',
'beforeDelete',
'afterDelete',
'beforeUpdate',
'afterUpdate',
'beforeEmbed',
'afterEmbed',
'beforeUnembed',
'afterUnembed',
'beforeMove',
'afterMove',
'onInvoke',
'beforeInvoke',
'afterInvoke',
'beforeDisplay',
'beforeQuit',
'afterQuit',
'afterContextChanged',
'afterSelectionChanged',
'afterSelectionAttributeChanged',
// 'beforeDeactivate',
// 'afterActivate',
'afterOpen',
'beforeClose',
'afterClose',
] ;
export const App = () => {
const targetObject = app.alignDistributePreferences ;
const handleEvent = (event) => {
console.log(event.eventType) ;
} ;
const addListeners = () => {
for(let eventLabel of EventList) {
try {
targetObject.addEventListener(eventLabel, handleEvent) ;
} catch(e) {
// skip
}
}
} ;
const removeListeners = () => {
console.log('remove') ;
for(let eventLabel of EventList) {
try {
targetObject.removeEventListener(eventLabel, handleEvent) ;
} catch(e) {
// skip
}
}
} ;
// componentDidMount
useEffect(() => {
console.log('init') ;
addListeners() ;
// componentDidUnmount
return removeListeners ;
}, []) ;
return (
<div>
<sp-button
onClick={removeListeners}
>
Remove Events
</sp-button>
</div>
) ;
} ;
... View more