对比本身手头的网站源码和实际生成的页面后,发现源码中包含了视频地址的 <video>
标签,在实际页面中,会再生成一个子节点,视频播放控制,须要对这个子节点设置才能生效。javascript
<!-- 实际生成的页面的源码 --> <div id="videodis" src="video/1.mp4"> <video id="videodis_html5_api" src="video/1.mp4"></video> </div>
// 视频暂停代码 <script type="text/javascript"> var videoNode = document.getElementById('videodis_html5_api'); // http://stackoverflow.com/questions/19355952/make-html5-video-stop-at-indicated-time // 下面这个函数能够使视频只暂停一次 // 常规的pause方法,只要视频播放时长超过指定时间 // 就会一直执行暂停函数 var pausing_function = function(){ // currentTime 的单位为秒,有些时间属性单位为毫秒,要区分好 if(this.currentTime >= 2) { this.pause(); videoOverlay(); // 暂停播放后,移除事件监听器 // 不然视频播放只要超过2秒,就会一直被暂停 this.removeEventListener("timeupdate",pausing_function); } }; videoNode.addEventListener("timeupdate", pausing_function); </script>
这个功能的原理很简单,就是在视频区域再添加一个相同位置相同尺寸的同级节点,并让该节点的 z-index
属性大于视频节点的属性便可,如下只摘录关键代码:html
<script type="text/javascript"> var overlayNode = document.createElement('div'); // 由于视频节点是普通的节点,因此直接让须要覆盖在其上的新节点宽高与其相同便可 // clientWidth属性只有数值,因此还需手动加上 'px' 这个单位 overlayNode.style.width = videoNode.clientWidth + 'px'; // http://stackoverflow.com/questions/9191803/why-does-z-index-not-work // 只有设置了position属性的元素,z-index才能对其起做用 overlayNode.style.position = 'relative'; overlayNode.style.zIndex = 20; </script>