質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

Q&A

解決済

2回答

11022閲覧

HTMLでUncaught (in promise) DOMExceptionが出る

ohyama

総合スコア29

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

0グッド

0クリップ

投稿2019/05/14 10:31

###前提・実現したい事
HTMLで画面読み込み時に音声を流したいのですが、タイトルの通り

Uncaught (in promise) DOMException

とエラーが出てしまいます。

###該当のソースコード

HTML

1<body> 2 <script> 3 var music = new Audio("music.mp3"); 4 music.play(); 5 </script> 6</body>

###試したこと
1.調べたところ、setTimeoutを挟めば上手く行くという記事をいくつか見つけたのですが、setTimeoutで時間差でmusic.play()を実行しても同じエラーが出たままでした。
2.setTimeoutの第2引数の値を5000くらいにして色々いじってみると、画面が読み込まれてから5秒後の音声が流れるまでの間に、画面をタッチするとエラーが出ずに、しっかり5秒後に音声が流れるという現象が起きました。
3.2の結果を受けて、画面読み込み時にクリックイベントを強制的に発生させるというのも試してみたのですが、相変わらずエラーが出たままでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/14 12:06

「JavaScript」をタグに追加しておいてください
yasutomi

2019/05/14 13:09

JavaScriptの質問なのにHTMLの回答がベストアンサーなので HTMLの質問のようです。(白目)
guest

回答2

0

ある程度の秒数がないとエラーになります。
1000ミリ秒くらいが妥当でしょう。(短かすぎるとエラー)

javascript

1const music = new Audio(); 2music.src = 'music.mp3'; 3setTimeout(() => music.play(), 1000)

投稿2019/05/14 12:25

yasutomi

総合スコア2937

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

iframeがベターでは?

HTML

1<iframe src="music.mp3" allow="autoplay" style="display:none"></iframe>

投稿2019/05/14 11:07

yambejp

総合スコア114572

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ohyama

2019/05/14 14:25

ちなみになんですが、allow="autoplay"のところに変更を加えてループ再生させることって可能ですか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問