2014-10-29 83 views
0

當按下上一個或繼續按鈕時,我有一個內容區域可以動態加載新內容。 HTML的一個簡單的例子是:構建HTML5視頻內容,然後通過點擊事件播放視頻iOS

<div id="contentArea"></div> 
<nav> 
    <ul> 
     <li class="butPrev">Previous</li> 
     <li class="butNext">Next</li> 
    </ul> 
</nav> 

我使用iOS6的做的是有過第一次加載的內容區域,我可以點擊觸發口罩的音頻和視頻,然後將所有其他動態HTML5視頻將發揮。我不確定iOS7,但iOS8不允許這樣做。我將不得不爲每個頁面做到這一點,這會破壞面具的用途,並且對用戶來說是一種痛苦。

作爲一種替代方法,我試圖用下一個按鈕單擊來觸發視頻播放。問題是下一個按鈕會捕獲動態內容,將其加載到內容區域中,並在那個時候需要觸發該iOS不喜歡的播放。有沒有什麼方法可以等待內容區域加載,同時保持在點擊事件中,以防止被阻止?這是我想什麼(我已經去掉了Ajax的東西):

var contentLoaded = false; 

$('nav li').click(function(){ 
    contentLoaded = false; 
    //load HTML with HTML5 video via Ajax 
    //when done, sets contentLoaded = true 
    triggerAutoplay(); 
}); 

function triggerAutoplay() { 
    if (contentLoaded) { 
     $('video[autoplay]').each(function(){ 
      if ($('this').attr('autoplay') != "false") { 
       this.play(); 
      } 
     }); 
    } else { 
     setTimeout(triggerAutoplay,100); 
    } 
} 
+0

你要玩()的實際點擊。您可能能夠點擊觸發前加載視頻,但取決於動態部分是否同步。是否將視頻「src」停止播放已經播放的視頻?我知道它會重新開始,但是新玩家是否會自動玩,依靠舊玩家的遊戲()? – dandavis 2014-10-29 20:45:39

+0

音頻/視頻標籤播放一次後,您似乎可以繼續調用播放並在此之後更改src。我用音頻來做這件事,但不幸的是,視頻是在不同的地方,並不總是出現在內容中,所以這種方法不適合我。 – fanfavorite 2014-10-30 13:54:51

回答

0

該劇觸發必須點擊功能中,所以我有這樣的AJAX功能之前完成設置異步來假調用,比如:

$('nav li').click(function(){ 
    $.ajax({ 
     url: "whatever", 
     async: false 
    }); 
    triggerAutoplay(); 
}); 

function triggerAutoplay() { 
    $('video[autoplay]').each(function(){ 
      if ($('this').attr('autoplay') != "false") { 
       this.play(); 
      } 
    }); 
} 
0

IM不知道如果我理解你的權利,但也許你應該叫打在你的Ajax調用的,像這樣的成功:

$('nav li').click(function(){ 
    $.ajax({ 
     url: "whatever" 
    }).done(function() { 
     //do some stuff 
     triggerAutoplay(); 
    }); 
}); 

function triggerAutoplay() { 
    $('video[autoplay]').each(function(){ 
      if ($('this').attr('autoplay') != "false") { 
       this.play(); 
      } 
    }); 
} 
+0

這就是我想要做的,但該遊戲仍然在iOS中被阻止。我看到可以完成的唯一方法是如果異步設置爲false並且在ajax函數之後有播放。 – fanfavorite 2014-10-29 21:26:34