点击HTML5视频播放的海报图片?

And*_*rew 33 video jquery html5

我有一个带海报属性的HTML5视频.我想以某种方式设置它,以便您可以点击视频元素上的任何位置(海报图像的区域),它将触发播放事件并启动视频?我觉得这是相当标准的做法,但我没有办法在没有闪光灯的情况下做到这一点.任何帮助将非常感激.

小智 65

这对我来说是安德鲁.

在你的html头中添加这一小块js:

var video = document.getElementById('video');
video.addEventListener('click',function(){
    video.play();
},false);
Run Code Online (Sandbox Code Playgroud)

或者,只需将onlick属性直接添加到您的html元素:

<video src="your_video" width="250" height="50" poster="your_image" onclick="this.play();"/>
Run Code Online (Sandbox Code Playgroud)

  • 如果你想在点击时暂停视频,可以改变`onclick ="this.play();"`到`onclick ="this.paused?this.play():this.pause();"` .想法由http://stackoverflow.com/a/20434695/1410871提供 (27认同)
  • 我修改了嵌入式onclick操作以检测FireFox浏览器并在需要时禁用代码.`onclick ="if(typeof InstallTrigger =='undefined')(this.paused?this.play():this.pause());"`它适用于Mac FF,Mac Safari和Mac Chrome.还没有在Windows上测试过. (5认同)
  • 另外:这不会在Firefox在Mac(版本35)的最新版本的工作,因为Firefox的视频播放器播放已,当你在视频中点击,并添加该代码搞砸了Firefox的执行暂停.有关如何检测Firefox浏览器并避免执行任何操作的详细信息,请参阅[此SO帖子](http://stackoverflow.com/a/9851769/1410871). (3认同)
  • Dan,添加了“控件”(在使用 Chrome 的 Windows 上)这个最新版本 (onclick="if (typeof InstallTrigger == 'undefined') (this.paused ? this.play() : this.pause());")需要点击两次才能停止...如果我删除“控件”部分,它确实可以工作 (2认同)

ios*_*ard 17

也在这里发布,但这也适用于这个线程.

我有无数问题这样做,但最终提出了一个有效的解决方案.

基本上下面的代码是为视频添加一个点击处理程序,但忽略了下半部分的所有点击(0.82是任意的,但似乎适用于所有大小).

$("video").click(function(e){

    // handle click if not Firefox (Firefox supports this feature natively)
    if (typeof InstallTrigger === 'undefined') {

        // get click position 
        var clickY = (e.pageY - $(this).offset().top);
        var height = parseFloat( $(this).height() );

        // avoids interference with controls
        if (clickY > 0.82*height) return;

        // toggles play / pause
        this.paused ? this.play() : this.pause();
    }
});
Run Code Online (Sandbox Code Playgroud)


tia*_*ldt 6

使用poster属性不会改变行为.它只是在加载视频时显示图像.让视频自动启动(如果浏览器实现不这样做),那么您必须执行以下操作:

<video id="video" ...></video>

在javascript中使用jquery:

$('#video').click(function(){
   document.getElementById('video').play();
});
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你

  • 在你的例子中,不需要放置document.getElementById('video').play(),你可以放置this.play(). (4认同)