You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决The play() request was interrupted by a call to pause()报错问题

问题根因

HTMLMediaElement.play() 是异步方法,执行后会返回 Promise 实例,不会立刻完成播放动作。如果在 play() 的 Promise 还处于 pending 状态时就调用 pause(),就会抛出你遇到的未捕获异步异常。另外你代码中的 myVideo 没有加变量声明,会意外挂载到全局作用域,也可能引发变量冲突导致播放逻辑异常。

修复方案

你需要对 play() 方法的异步结果做处理,同时修正变量声明问题,调整状态变更的时机,修复后的代码如下:

jQuery(document).ready(function($){
    var ppbutton = document.getElementById("vidbutton");
    var myVideo = document.getElementById("video1"); // 补全变量声明,避免全局污染
    ppbutton.addEventListener("click", playPause);

    function playPause() {
        if (myVideo.paused) {
            myVideo.play()
            .then(() => {
                // 播放成功后再修改按钮文本,保证状态和实际播放情况一致
                ppbutton.innerHTML = "Pause";
            })
            .catch(err => {
                // 过滤正常的暂停打断类异常,避免控制台抛错
                if (err.name !== 'AbortError') {
                    console.error('播放失败:', err);
                }
            });
        } else  {
            myVideo.pause();
            ppbutton.innerHTML = "Play";
        }
    }
});

额外排查点

如果修复上述代码后仍然存在播放几秒就停止的问题,可以按以下方向排查:

  • 视频文件的编码格式是否兼容当前浏览器,推荐使用H.264编码的MP4格式做兼容兜底
  • 视频服务器的Range请求支持是否正常,分段加载配置是否正确
  • 视频资源的CORS跨域配置是否符合要求

内容的提问来源于stack exchange,提问作者Brandon Powell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:15:03