9

少し問題があります。

オーバーレイに Facebook のようなボックス ウィンドウがあります。このボックスは、ユーザーがいいねをクリックすると非表示になります - 明らかに。このウィンドウが表示されているときにオーディオ要素を使用し、このウィンドウが非表示になるときにオーディオを停止したい。これが私のhtmlとjqueryです。私を助けてください。

<audio id="audio_player" loop="loop">
    <source src="fileadmin/templates/main/crowd.mp3" type='audio/mpeg; codecs="mp3"'>
    <source src="fileadmin/templates/main/crowd.ogg" type='audio/ogg; codecs="vorbis"'>
</audio>

$(document).ready(function(){
function audio_player (){
    if (
        $('fb_like_box').css('display','block')){
            $('audio').each(function() {
                var song = $(this);
                    song.play();
                });
    }
    else if (
        $('fb_like_box').css('display','none')) {
            $('audio').each(function() {
                var song = $(this);
                    song.pause();
                });
    }
    else {}
}
});
4

4 に答える 4

1

あなたのコードは構文的に間違っています。

まず、次の構文は値を割り当てるためのものです。

$('#fb_like_box').css('display','block')

blockプロパティを要素に割り当てます$('#fb_like_box');

それを確認したい場合は、次のようなものを使用します。

if($('#fb_like_box').css('display') == 'block') {
    // then do something
}

あなたが試みていることを行う良い方法は次のとおりです。

if ($('#fb_like_box').is(':visible')) {

    $('audio').each(function() {
        $(this).play();
    });

} else {

    $('audio').each(function() {
        $(this).pause();
    });

}
于 2012-06-04T08:43:24.173 に答える
1

次のような非常に基本的なことを試してください

$(document).ready(function(){
  $('audio')[0].play();
}

これが実行されれば、少なくとも正しい軌道に乗っていることがわかります。再生できることがわかったら、条件を追加して、それらが機能することをテストします。

于 2013-07-19T21:15:31.507 に答える
0

:visibleセレクターを使用して.orを追加#fb_like_boxます。fb_like_boxは有効なセレクタではありません。IDだと仮定して

if ($('#fb_like_box').is(':visible')){
      // like box visible, play audio
            $('audio').each(function() {
                var song = $(this);
                    song.play();
                });
    }
    else {
      // like box hidden pause audio  
            $('audio').each(function() {
                var song = $(this);
                    song.pause();
                });
    }
于 2012-06-04T08:32:37.387 に答える
0

主な問題は、facebook フィールドが非表示になっているときに関数を実行する必要があるため、適切なリスナーに関数を追加する必要があることだと思います。この状況では「 」になると思いますDOMAttrModified

いくつかの疑似コード (テストされていないコード):

$('facebookelementtohide').addEventListener('DOMAttrModified', function(e){
   audio_player ();
}, false);
于 2012-06-04T08:39:13.430 に答える