🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

2回答

2756閲覧

ページ遷移してもBGMが途切れないようにするには

den_kusa

総合スコア4

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2019/10/01 01:03

編集2019/10/01 01:31

前提・実現したいこと

wordpressを使用したサイトで「ON」ボタンを押したらBGMが流れ、「OFF」ボタンを押したら曲が停止するようにしたいです。ですが、BGMが流れる時にページが遷移すると曲が途切れてしまいます。
sessionStorageを利用すれば出来そうだということまではわかったのですが、いまいち理解しきれてません。
下記コードをどのようにすれば良いかを教えてください。
よろしくお願いします。

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

HTML

1<div id="Audio-Control"> 2 <audio id="bgm" preload="" autoplay="" loop="" muted=""> 3 <source src="<?php echo get_template_directory_uri();?>/bgm/akaifuusen.mp3" type="audio/mpeg"> 4 </audio> 5<input type="button" onClick="enableMute()" value="OFF"> 6<input type="button" onClick="disableMute()" value="ON"> 7</div>

JavaScript

1var el = document.getElementById("bgm"); 2 3function enableMute() { 4 el.muted = true; 5} 6 7function disableMute() { 8 el.muted = false; 9} 10 11//データを保存する処理 12disableMute.addEventListener("click", function() { 13 var t = document.getElementById("active").value; 14 15 //①sessionStorageにデータを保存する 16 window.sessionStorage.setItem("test", t); 17 18  //②sessionStorageからデータを取り出す 19 var t = window.sessionStorage.getItem("test"); 20 21 $('#Audio-Control button').toggleClass("t"); 22 23 24}, true); 25 26//データを削除する処理 27enableMute.addEventListener("click",function(){ 28 29  //③保存データを全部削除する場合 30 window.sessionStorage.clear(); 31 32},true); 33

試したこと

iframeやpjaxを利用する方法も見つけましたら、理解不足のため成功することはできませんでした。
上記コードで作成した場合、トップページで「ON」ボタンで再生後、他ページを表示させるとBGMは停止され、そのページで改めて「ON」ボタンを押すと初めから再生されます。
JavaScript
$('#Audio-Control button').toggleClass("active");
上記の"active"の部分が保持できればいいのかと思ってましたが。

・BGMを流すのに参考にしたサイト
https://blanche-toile.com/web/html5-audio-bgm-switch

・sessionStorageを参考にしたサイト
https://the-zombis.sakura.ne.jp/wp/blog/2012/05/12/post-1347/
http://javatechnology.net/javascript/sessionstorage-localstorage/

補足情報(FW/ツールのバージョンなど)

WordPress 5.2.3

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

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

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

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

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

m.ts10806

2019/10/01 01:05

「任意の秒数から再生」はできますか?
m.ts10806

2019/10/01 01:07

上記もそうですが、pjaxはともかくiframeでも理解不足となるとそれはもう作業依頼に近い内容になると思います。 どのような記事を参考になにを試してどう分からなかったのかを具体的に記載されるとアドバイスも得やすくなると思います。
den_kusa

2019/10/01 01:32

ご指摘ありがとうございます。 試したことに内容と参考サイトを追加しました。 よろしくお願いします。
guest

回答2

0

SPAにしてコンテンツはxhr(もしくはfetch)などでバックグラウンドに
非同期で取得して本文を書き換えれば、ページの遷移は不要です

投稿2019/10/01 02:01

yambejp

総合スコア116661

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

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

den_kusa

2019/10/04 04:08

ご回答ありがとうございます。 教えて頂いSPAについて調べてみます。
guest

0

'ページ遷移時BGMが途切れて違和感感じる'のが問題であれば、違和感なくBGMが切り替われば良いのでは?

https://developer.mozilla.org/ja/docs/Web/API/WindowEventHandlers/onbeforeunload

onbeforeunloadイベントでBGMをフェードアウトさせ、遷移先はフェードインさせれば違和感和らぐと思います。

遷移先でBGMの続きを秒数指定しても、いろいろな要因でページは一定時間で切り替わらず不連続な再生になると思います。

あと難易度が跳ね上がるので質問者向けではないですが、serviceworkerでBGM制御できるのかな?以下読んでる最中です。
https://stackoverflow.com/questions/42268644/play-a-sound-from-a-service-worker

投稿2019/10/01 03:18

oikashinoa

総合スコア2826

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

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

den_kusa

2019/10/04 04:11

ご回答ありがとうございます。 フェードアウト、フェードインは考えてなかったので教えていただき、とても参考になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問