2014-10-22 118 views
0

我想在mediaelement.js顯示的視頻的特定時間顯示按鈕。jquery添加了按鈕閃爍並防止一些點擊 - mediaelement.js

我添加了一個時間更新的事件監聽器,並在當前時間在特定時間時添加按鈕代碼。

 $('video').mediaelementplayer({ 
      enableAutosize: true, 
      features: ['playpause','volume'], 
      alwaysShowControls: false, 

      success: function(mediaElement, domObject) { 

        mediaElement.addEventListener('timeupdate', function(e) { 

        var currentTime = mediaElement.currentTime; 
        var msg = '<a href="url-link" target="_blank" class="btn">Click to see</a>'; 
        var empty = ''; 

        if(currentTime > (120)) { 
         $("#offerArea").html(msg);       
        } else { 
         $("#offerArea").html(empty); 
        }  

       }, false); 

     }); 

的問題是按鈕「忽悠」盤旋在它時,不工作,你在播放視頻時,點擊所有的時間。如果我停止播放視頻,該按鈕始終工作。

http://jsfiddle.net/ronjo/owp191Ld/1/

+0

請使用您的HTML和JavaScript設置一些演示,以便我們可以看到代碼中出了什麼問題。 – 2014-10-22 06:16:21

回答

1

這似乎是一般working just fine。但是因爲它不適合你,所以當你顯示你的鏈接時,嘗試設置一個變量,以確保它只發生一次,而不是所有的時間都在播放視頻。

var buttonVisible = false; 

$('video').mediaelementplayer({ 
    enableAutosize: true, 
    features: ['playpause', 'volume'], 
    alwaysShowControls: false, 

    success: function (mediaElement, domObject) { 
     mediaElement.addEventListener('canplay', function() { 
      mediaElement.play(); 
     }, false); 
     mediaElement.addEventListener('timeupdate', function (e) { 

      var currentTime = mediaElement.currentTime; 
      var msg = '<a href="http://stackoverflow.com/questions/26501102/jquery-added-button-flicker-and-prevent-some-clicks-mediaelement-js" target="_blank" class="btn">Click to see</a>'; 
      var empty = ''; 

      if (currentTime > (1) && buttonVisible == false) { 
       buttonVisible = true; 
       $("#offerArea").html(msg); 
      } 

     }, false) 

    } 
}); 

JSFIDDLE

+0

我有你的jsfiddle代碼相同的問題。 我在運行OSX 10.9.5的Mac上,並嘗試使用Safari v7.1,Firefox 32.0.3和Google Chrome v38.0.2125.104。 https://www.dropbox.com/sh/qnosydhgmnj8khq/AAC6iLXrCX1BCanWCIXOwqlwa?dl=0 – 2014-10-22 08:34:13

+0

非常有趣。我在10.9.4上,在所有瀏覽器中都可以正常工作。如果我的電腦設法足夠快地重新繪製元素,但是您的電腦卻沒有,則可能是性能問題。第二個JSFIDDLE鏈接是否在我的答案的底部起作用?在這種情況下,正如我在文章中提到的那樣,由於您在120秒後每**毫秒**不斷更新#offerArea,因此您正在重繪數千次鏈接。您應該更新一次offerArea,然後設置一個變量,以便在每個毫秒後都不會發生。就像我的例子。 – 2014-10-22 08:50:12

+0

是的,現在我看到你有兩個例子。你的第二個小提琴工作。 但它真的每毫秒更新一次嗎?我認爲它只更新時間更新事件,每秒約4次... – 2014-10-22 09:09:26