0

jQuery を使用してフォームが送信された後、SoundManager2 を iPhone Web アプリケーションの一部として使用してサウンドを再生しようとしています。再生される特定のサウンドは結果に依存するため、結果のページでは、再生するサウンド ファイルを識別する変数が設定されます。

これはすべてデスクトップでは問題なく動作しますが、iPhone で実行すると失敗します。

iPhone のデバッグ コンソールは、それが試行されていることを示しています...

1124: SMSound.play(): "ValidSound" is loading - attempting to play...
1124: SMSound.play(): "ValidSound" is starting to play
1124: setPosition(0): delaying, sound not ready
1124: HTML5::loadstart: ValidSound
1124: HTML5::suspend: ValidSound

...しかし、すべての再生音はありません。

これが失敗する原因について何か考えはありますか? メイン ページのコードと、jQuery を使用して返される「応答」ページの例を含めました。

主要

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript" src="sm/script/soundmanager2.js"></script>
<script> 
soundManager.setup({

  url: 'sm/swf/',
  useHTML5Audio: true,

  onready: function() {

    soundManager.createSound({
      id: 'ValidSound',
      useHTML5Audio: true,
      preferFlash: false,
      url: 'http://www.example.com/example sound.mp3'
    });

  }

});
</script>

</head>

<body onload="window.top.scrollTo(0,1);">

<div class="scannerform">
  <form id="scanner" name="scanner" method="post" action="ok.php">
    <input type="text" name="scan" id="scan" />
    <input type="submit" name="button" id="button" value="Submit" />
  </form>
</div>

<div class="loadingDiv" id="loadingDiv">Loading...</div>
<div class="wrapper" id="wrapper"><div name="data" id="data"></div></div>

<script>
$('#loadingDiv')
    .hide()
    .ajaxStart(function() {
        $(this).show();
    })
    .ajaxStop(function() {
        $(this).hide();
    })
;

$("#scanner").submit(function(event) {

    $("#loadingImage").show();

    event.preventDefault(); 
    var $form = $( this ),
        scanned_data = $form.find( 'input[name="scan"]' ).val(),
        url = $form.attr( 'action' );

    $.post( url, { scanned_data: scanned_data },
      function( data ) {
          var content = $( data );
          $( "#data" ).empty().append( content );
          $("#loadingImage").hide();
          if (playSound) playSound();
          soundManager.play(SoundToPlay);
      }
    );
  });
  </script>
</body>
</html>

応答

<script>
function playSound()
{
  SoundToPlay="ValidSound";
}
</script>

<div id="example">Hello World</div>

ご協力いただきありがとうございます!

J.

4

1 に答える 1

9

iPhone Safariにサウンド制限が適用されていることをご存知ですか?基本的に、ユーザーが何らかの方法で(画面をタッチして)ページを操作しない限り、サウンドは再生されません。したがって、「onLoad」またはその他のイベントを介して再生される自動サウンドについては忘れてください。

ただし、SoundManager2と私のiPhoneでは、少し注意が必要な場合があります。アプリで少なくとも1回指でクリックすると(たとえば、最初のhtmlポップアップを閉じる(基本的には)、サウンドが自動的に(数回でも)再生されると確信しています。 ))

したがって、少なくともこのリードを確認してください...

トマシュ

資力:

http://buildingwebapps.blogspot.com/2012/04/state-of-html5-audio-in-mobile-safari.html

http://blog.logicking.com/2012/03/cross-platform-sounds-for-html5-games.html

于 2012-08-06T01:31:33.220 に答える