3

私はjQuery 1.5とjPlayer 2.0.0を使用しています。これが音楽を自動再生するという事実を無視してください。開始する前に十分な警告を提供します。ユーザーは大きなボタンを押してページを開始する必要があります。大きなSTOPボタンを提供します。

ページの準備ができてオーディオがロードされた後、オーディオ ファイルの再生を開始し、関数を呼び出したいと思います。

私は次のjavascriptを持っています(よりよく理解できるようにコードを変更しました)。

function FemeMusic() {

    FemeMusic.prototype.addMusic = function(actionAfterMusic) {
        $("#jp").jPlayer({
            ready: function() {
                var jPlayerElement = $(this);
                jPlayerElement.jPlayer('setMedia', {
                    mp3: 'aSongByJamesBlunt.mp3'
                });
                jPlayerElement.bind($.jPlayer.event.progress,
                function(event) {
                    if (event.jPlayer.status.seekPercent === 100) {
                        jPlayerElement.jPlayer("play");
                    }
                    if (actionAfterMusic) {
                        actionAfterMusic.call();
                    }
                });
             },
             swfPath: "/flash",
             preload: "auto"
         });
    }
} 

上記のコードをトリガーするこの関数があります。

$(document).ready(function() {
    var femeMusic = new FemeMusic();
    femeMusic.addMusic(killMyself); 
});

私は同じコードを使用していましたが、$.jPlayer.event.progress の代わりに if ステートメントを使用せずに $.jPlayer.event.loadeddata イベントを使用していました。一部のブラウザーでは問題なく動作しましたが、フラッシュの使用に関しては互換性がありません。イベントを発生させません (また、firefox 3.5 でも問題がありましたが、その理由はわかりません)。上記はFirefoxで動作するようです

私はこれを読みました

「代わりに進行状況イベントを使用して、event.jPlayer.status.seekPercent === 100 であることを確認することをお勧めします。」

この投稿http://groups.google.com/group/jplayer/browse_thread/thread/9dc9736f9d6947bd?pli=1作成者による

何か提案はありますか?


編集

chrome と safari でこれが機能していないので、Firefox の新しいバージョン 3.6 でこれをテストしました (最初にこれを行うべきでした)。

Flash および HTML5 ブラウザーでサポートされる堅牢な jPlayer イベント

上記のリンクでは、作成者は event.progress を使用してブラウザの問題を回避することを提案していますが、これはブラウザ固有の問題であるとしか考えられません。

ただし、これについて明確にすることができれば幸いです。

4

2 に答える 2

3

jPlayer の作成者から:

ここでの目標は、メディアがバッファリングされた後に自動再生することですか?

短い答えが必要な場合。忘れてください。X ブラウザのバッファリングは地雷原です。あなたが見つけたように、単に無視する人もいます。メディアを設定して再生するだけです。

本気でやってみたいなら。次に、再生してから一時停止することが役立ちます。これは、media.play()x-browser の方がより優れているためmedia.load()です。ただし、iOS Safari は再生を完全に無視します。ユーザーは、操作を開始する何か、つまり再生ボタンをクリックする必要があります。

最後のポイントは、あらゆる形式の自動再生を試す場合に適用されるため、再生ボタンが利用できることを確認してください。jPlayer インターフェイスは、iOS がブラウザ イベントからのフィードバックを介して再生しない、つまり停止した状態に対処します。

于 2011-04-19T16:08:11.917 に答える
1

ほとんどのブラウザーで、フラッシュと html5 バックエンドの進行状況イベントに問題がありました。私が見る限り、timeupdate イベントははるかにうまく機能しています。

于 2011-02-15T07:41:22.707 に答える