click()が効かなくなったので、dispatchEvent()を使ってみた

duolingoで英語学習するさいに、Tabキーでリスニング音声を再生させるスクリプトをTampermonkeyで作っています。

キーが押されたら、エレメントのclick()をを実行していただけです。
それが機能しなくなりました。

マウスボタンで手動で再生ボタンを押すと再生されるのですが、 click()だと最初の1回は再生されるものの、2回目からはアニメーションが動くだけで音声は流れず。

理屈はわかりませんが、バブリングありのdispatchEvent()を使ってみたら動いたようです。

let clickEvent = new Event('click', {bubbles: true})
playButton.dispatchEvent(clickEvent) 

リンク

参考

ちなみにduolingoは、標準でもショートカットキーがあり
Ctrl + Space : Replay audio
Ctrl + Shift + Space : Replay audio slower
だそうです。