質問: javascript初心者です。 ヤマダ電機ウェブコムにてヤマダ電機のBGMが流れる拡張機能を作っているのですが、エラーが出ていないのにもかかわらず、音が流れません。 写真のコードのおかしな点を指摘してもらえると嬉しいです。
回答: 全体を見ないことには何とも言えませんが、初心者ということはおそらくmanifest.json内でコンテンツスクリプトの実行タイミングを指定していませんね?(run_atキーのことです) 実行タイミングの指定をしないデフォルトでは、コンテントスクリプトはページのすべてのリソースの読み込みが完了した段階で読み込まれます。 したがって、ご提示のコードが実行されるときには、すでにDOMContentLoadedイベントは発火したあとです。 イベントリスナーに登録せず、直接bgm1.play()としてみてください。 それから、"BGM/mymusic.mp3"はヤマダ電機ウェブコム側でホストされているのですか? もしそうならこのままでいいですが、拡張機能のファイルから読み込むなら const bgm1 = new Audio(chrome.runtime.getURL("BGM/mymusic.mp3"));としないといけません。 また、manifest.jsonに "web_accessible_resources": ["BGM/mymusic.mp3"] の記載も必要になります(manifest.jsonとjsファイルが同階層にあると仮定していますが、違うなら相対パスを適宜修正してください)。 さらに、ブラウザ側のセキュリティ設定で音声の自動再生がブロックされている場合はこのBGMもブロックされるので、ブラウザの設定も見直してください。 これでも無理なら、できるだけ詳しく状況を説明してくだされば、可能な限り返信で情報を追加します。