动态更改视频使 play() 请求被新的加载请求中断

2024-01-02

动态更改视频时,我在服务器控制台下收到以下错误

(index):71 Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.

发生更改时我使用以下代码

function playlocalVID()
{
        var player = document.getElementById("video");
        var currentVID = document.getElementById('currentVID');
        var selectedLocalVID = document.getElementById('howtovideo').files[0];
        currentVID.setAttribute('src', URL.createObjectURL(new Blob([selectedLocalVID])));
        player.load();
        player.play();
}

但是当更改视频 3 - 4 次或单击“删除”按钮时

我收到问题了

Uncaught (in promise) DOMException: The play() request was interrupted by a new load request.

这是我的小提琴

https://jsfiddle.net/q3hhk17e/36/ https://jsfiddle.net/q3hhk17e/36/

您能让我知道如何解决这个问题吗?


Attach canplay事件至#video元素,内playlocalVID()调用创建Blob URL from File对象,注意没有必要同时调用Blob() with File对象作为参数;设定电流File.name at #video .dataset; set <input type="file">元素.value to null for change连续选择同一文件时调用的事件;称呼.load() at #video元素;等待canplay or canplaythrough事件发送至#video元素;在canplay事件处理程序调用.play() at #video元素。

<!DOCTYPE html>
<html>

<head>
</head>

<body>
  <div class="form-group last">
    <label class="control-label col-md-3">How to video</label>
    <div class="col-md-9">
      <div class="fileinput fileinput-new" data-provides="fileinput">
        <figure>
          <video id="video" width="150" height="100" controls>
            <source id='currentVID' src="" type="video/mp4">
          </video>
          <figcaption></figcaption>
        </figure>
        <div class="fileinput-preview fileinput-exists" style="max-width: 200px; max-height: 150px;"></div>
        <div>
          <span class="btn default btn-file">
            <span class="fileinput-new"> Select Video </span>
          <span class="fileinput-exists"> Change </span>
          <input type="file" id="howtovideo" name="howtovideo" accept="video/mp4" autoplay onchange="playlocalVID();" />
          </span>
          <a href="javascript:;" class="btn red fileinput-exists removepic" data-name="removeforhowtovideo" data-dismiss="fileinput"> Remove </a>
        </div>
      </div>
    </div>
  </div>
  <script>
    var player = document.getElementById("video");
    var currentVID = document.getElementById('currentVID');
    var caption = document.querySelector("figcaption");
    var selectedLocalVID = document.getElementById("howtovideo");
     // reference to `Blob URL` to be created at `playLocalVID`
    var url;
     // attach `canplay` event to `player`
    player.addEventListener("canplay", function handleEvent(e) {
      this.play();
      // set `figcaption` to current video `File.name`
      caption.innerHTML = this.dataset.currentVideo;
    });

    function playlocalVID() {
      if (url) {
        console.log(url);
        // if `url` is defined revoke existing `Blob URL`
        URL.revokeObjectURL(url);
      }
      // create `Blob URL` of `File` object
      url = URL.createObjectURL(selectedLocalVID.files[0]);
      // set `.name` of current `File` at `player.dataset.currentVideo`
      player.dataset.currentVideo = selectedLocalVID.files[0].name;
      // reset `input type="file"` event
      selectedLocalVID.value = null;
      // call `.pause()` at `player`
      player.pause();
      // set new `src` at `<source>` element
      currentVID.setAttribute("src", url);
      // call `.load()` on `player`
      // wait for `canplay` event
      player.load();
    }
  </script>
</body>

</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

动态更改视频使 play() 请求被新的加载请求中断 的相关文章

  • Angular 2 链式 Promise 并传递拒绝

    应该是一个简单的问题 但是我找不到有关如何做到这一点的文档 像这样链接一个承诺 Making a promise no problem let promise new Promise resolve reject gt let data d
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • 如何使用 JavaScript 中的值填充下拉列表?

    我在 Tridion CMS 扩展中的功能区工具栏按钮中添加了一个按钮 单击该按钮后 将显示一个弹出页面 其中包含两个下拉菜单 通过更改第一个下拉控件中的值 我应该填充第二个下拉控件的值 就我而言 我正在使用ASP drop down li
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • Node.js - console.log 不显示数组中的项目,而是显示 [Object]

    我在注销对象内数组的内容时遇到问题 实际的物体看起来像这样 var stuff accepted item1 item2 rejected response Foo envelope from The sender to new item1
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 如果链接包含特定文本,jQuery 将类添加到 href

    我的网站上的列表中有一些动态填充的链接 这些链接链接到文件 是否可以使用 jQuery 查看文件名是否以 pdf 结尾 并在 href 或类似的链接文本以 mp3 结尾时添加一个类 例如 我的列表中有以下链接 文件1 pdf 歌曲1 mp3
  • Google Chrome 106 可拖动导致元素消失

    使用拖放元素时 绝对定位元素中包含的大多数其他元素都会从屏幕上消失 如果我调整窗口大小 这些元素会出现 但在开始拖动时会再次消失 我在最新版本的 Google Chrome 106 和 Beta 版本 107 0 5304 18 以及现在的
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 如何在jquery中获取保存时间和当前时间的差异?

    我想在 javascript 或 jquery 中获取保存时间和当前时间之间的时差 我节省的时间看起来像Sun Oct 24 15 55 56 GMT 05 30 2010 java中的日期格式代码如下 String newDate 201
  • 如何获取 UIWebView 中元素的位置?

    我在 iPad 程序中加载了 html 的 UIWebView 通过使用 webkit column width 我将 html 分为几列 padding 0px height 1024px webkit column gap 0px we
  • 无法在前端使用 JavaScript Fetch API 将文件上传到 FastAPI 后端

    我正在尝试弄清楚如何将图像发送到我的 API 并验证生成的token那是在header的请求 到目前为止 这就是我所处的位置 app post endreProfilbilde async def endreProfilbilde requ
  • 如何在 javascript 正则表达式中匹配平衡分隔符?

    我原以为这个问题是不可能的 据我所知 Javascript 的正则表达式既没有递归插值 也没有漂亮的 NET 平衡组功能 但问题就在那里 如问题 12 所示正则表达式 alf nu http regex alf nu 匹配平衡对 lt an
  • 单击引导分页链接时调用 jquery 函数

    我想在单击引导分页链接时调用 jquery 函数 假设我想从第1页遍历到第2页 应该调用一个jquery函数 我正在使用以下代码 但它不起作用 ul pagination on click li function alert page ch
  • 防止文本区域出现新行

    我正在开发聊天功能 使用 Vue 并使用文本区域作为输入 以便溢出换行 并且对于编写较长消息的用户来说更具可读性 不幸的是 当用户按下 Enter 键并提交时 光标会在提交之前移动到新行 从而使用户体验感觉不佳 关于如何使用普通 Javas
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 在 GWT 中,在任何主机页标记上添加事件处理程序

    我想为任何标签添加 MouseOver 事件处理程序 举个例子 我想为旧版 HTML 页面中的每个锚点页面添加事件处理程序 继GWT指南 http code google com webtoolkit doc 1 6 DevGuideUse

随机推荐