2014-10-22 87 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