javascript - 如何知道 html 视频开始播放的原因?

标签 javascript google-chrome-extension html5-video dom-events

有一个 HTML 视频标签。我想知道什么时候开始播放:

  • 是否是由自动播放引起的?
  • 是否是JavaScript中调用play()引起的?
  • 是否是用户点击播放按钮导致的?

我想处理由用户操作引起的播放事件(以上三种情况中的第三种情况)。

我当前的解决方案:

function videoEventHandler(ev) {
    var videoElem = ev.target;
    if (!videoElem.controls) {
        // no controls in video, means events can't be caused by user actions
        return true;
    }

    switch (ev.type) {
        case 'play':
            if (videoElem.autoplay && !videoElem.hasPaused) {
                // first play event in autoplay video, muse be caused by autoplay
                return true;
            }
            // deal with play event caused by user actions
            return true;

        case 'pause':
            ev.target.hasPaused = true;
            // deal with pause event caused by user actions
            return true;
    }
}

问题:我的解决方案无法处理这些场景:

  • 它不知道 play 事件是否由 JavaScript 调用 play() 引起
  • 它不知道由视频引起的暂停事件是否到达结束

请注意:我无法在 play() 上添加标志,因为它是在网页中调用的。该网页不是我写的,我无法更改它。 (我正在编写一个 Chrome 扩展程序)

有人可以帮我解决这个问题吗?

这是一个非常具体的问题,可能会让某些人感到困惑。如果我的问题让您感到困惑,请发表评论,我会尽力解释得更清楚。赞赏。

最佳答案

当您从 javaScript 调用 play() 时,只需将元素中的一个属性设置为 true,以指定它由 javascript 启动。在监听 play 事件时,您可以检查该变量以了解它是否是从 javascript 播放的。

调用播放之前:

video.playedFromJavascript=true;
video.play(); 

播放中监听器:

if (videoElem.playedFromJavascript==true) {
                // play event caused by javascript
videoElem.playedFromJavascript=false; // resetting it to false once captured
       }

我们有 ending 事件,该事件在视频到达结尾时触发。使用此事件可以了解视频引起的暂停事件是否到达结尾。

关于javascript - 如何知道 html 视频开始播放的原因?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42154978/

相关文章:

javascript - 使用 $compile 编译指令后 Controller 的范围未定义

javascript - 使用 jquery 或 javascript 保持复选框启用状态

JavaScript 默认等待而不是手动等待

javascript - 我可以通过单击重新加载扩展在本地模拟更新过程吗?

javascript - 如何使用 html-loader 将 html 部分包含在 webpack(版本 2)中?

javascript - 将值从页面传递到 Bootstrap 模式和操作结果

javascript - 代码在 Chrome 控制台中运行良好,但在 Chrome 扩展程序中运行不正常

ffmpeg - 您可以为 Clappr Player 设置初始缓冲区吗?

html - 宽度为 : 100% and custom height: 的视频

css - 在特定组件/路径上添加视频背景