67326


manifest.json

[code]

    {
      "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"
      ]
    }
    
    
[/code]

test.js

[code]

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

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

[code]

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

というエラーが出ます

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

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

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

* * *

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

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


CC BY-SA 4.0
2020-06-03T06:15:04.823
67250
2020-06-05T08:34:55.580
2020-06-04T01:39:07.960
question
javascript chrome-extension
chrome 拡張で音声を再生したい


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

chrome.exe --disable-features=AutoplayIgnoreWebAudio


CC BY-SA 4.0
2020-06-05T08:34:55.580
67326
2020-06-05T08:34:55.580
40495
67250
answer