chrome 拡張で音声を再生したい

投稿者: Anonymous

manifest.json

{
  "name": "test",
  "version": "1.0",
  "manifest_version": 2,
  "description": "test",
  "content_scripts": [
    {
      "matches": [ "https://*/*" ],
      "js": ["test.js"],
      "run_at": "document_idle"
    }
  ],
  "web_accessible_resources": [
    "*.mp3"
  ]
}

test.js

 const audioElem = new Audio();
 audioElem.src = chrome.extension.getURL("sound.mp3");
 audioElem.play();

という 2 つのファイルと sound.mp3 をフォルダに入れて
ページを開くと音を鳴らす最小セットの拡張機能を chrome にインストールしたんですが

test.js:3 Uncaught (in promise) DOMException: play() failed because the user didn't interact with the document first. https://goo.gl/xX8pDD

というエラーが出ます

これまでも同様のコードで特定のサイトの特定のDOMをみはって
出現すると音を鳴らすという拡張を作っていて現在もその拡張は動いてます

再インストールして動かなくなると困るので試せないんですが
最後に作ったのは半年ほど前なので
ここ最近の仕様変更で何か変わったんでしょうか

それともこのコードに何か見落としがあったりするんでしょうか


https://qiita.com/A-Kouki/items/40020f7ef30a4e3b6d79
こういう対処法もあるみたいなんですが
既存のコードはこういうのをした覚えはなくうごいています

自分用で人に配布したりするものではないのでポリシーを変更してしまってもいいんですが
このサイトに書いてある
chrome://flags/#autoplay-policy
にアクセスしてみても
「Autoplay policy」
「No user gesture is required」
という項目が見当たりません

解決

https://goo.gl/xX8pDD
を参考にオプションをつけてChrome起動すれば音を出せました。

chrome.exe –disable-features=AutoplayIgnoreWebAudio

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *