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

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

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

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

1回答

6510閲覧

スマホなどで非アクティブからアクティブになった時にアクション

kouji20

総合スコア17

HTML5

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

JavaScript

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

2クリップ

投稿2016/05/08 02:45

webページアプリを作成しています。

window.onloadで音が鳴るようにしておりますが、スマホで一度起動した後、アプリ一覧から選択した際にもアクションを起こすにはどのようにすればよいでしょうか。
今はこんな感じで書いております。

<script> window.onload = function ring() { document.getElementById("play-sound").play(); }; </script>

ご教示よろしくお願いします。

act823👍を押しています

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

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

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

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

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

guest

回答1

0

focus イベントハンドラ

window.onfocus はいかがでしょうか。
(addEventListenerを使うと上書きされる心配がなくなります。)
https://developer.mozilla.org/ja/docs/Web/Events/focus

※音を鳴らす動作は敬遠される場合があるのでユーザが音のOn/Offを設定出来ると良いと思います。

audio要素の API サポート状況

iPhone で動作しないとのことですが、onfocus を確認する前にaudio要素のAPIサポート状況を確認する必要があると思います。
HTMLMediaElement#play が存在するのか。

JavaScript

1alert('play' in document.getElementById("play-sound"));

iOS Safari で再生可能な音楽フォーマットを使っているのか。

Page Visibility API

iOS Safari では window.onfocus が動作しないようなので Page Visibility API を併用します。

javascript

1'use strict'; 2function handleVisibilitychange (event) { 3 var doc = event.target; 4 5 if (doc.visibilityState === 'visible') { 6 alert(event.target.visibilityState); 7 doc.getElementById('play-sound').play(); 8 } 9} 10 11function handleFocus (event) { 12 alert(event.type); 13 event.currentTarget.document.getElementById('play-sound').play(); 14} 15 16if ('visibilityState' in document) { 17 document.addEventListener('visibilitychange', handleVisibilitychange, false); 18} else if ('onfocus' in this) { 19 addEventListener('focus', handleFocus, false); 20}

Re: kouji20 さん

投稿2016/05/08 03:21

編集2016/05/12 22:07
think49

総合スコア18162

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

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

kouji20

2016/05/08 18:26

ありがとうございます。 ページも参考にしてやってみたのですが、PC上では動作するもののiphoneでは発動しませんでした。もう少し色々やってみます。
think49

2016/05/09 02:15

> PC上では動作するもののiphoneでは発動しませんでした。 それは onfocus の問題ではない可能性はないでしょうか。 onfocus を使用せずに下記を試してみたらどうなるでしょうか(親記事を修正しました)。 - document.getElementById("play-sound").play() - in 演算子で play プロパティが存在するか - 音楽フォーマットは iOS Safari がサポートするものを使っているのか
kouji20

2016/05/11 16:53

返信遅くなりすみません。 onloadやonclickではちゃんと音がなるのですが、他のアプリから切り替えた時はやはり音が鳴らない状況です。 あと”in 演算子で play プロパティが存在するかin 演算子で play プロパティが存在するか”はよくわからず試しておりません。 どういったやり方かご教示お願いできますでしょうか?何度もすみません。
think49

2016/05/12 22:09

「'play' in document.getElementById('play-sound') === true ならば、playプロパティが存在するので play() を実行できる」の意です。 iOS Safari では window.onfocus が動作しないようなので Page Visibility API を併用してみて下さい(親記事を修正しました)。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問