• chrome播放语音时,在chrome 控制台中报 DOMException: The play() request was interrupted by a call to pause(). 的问题.


    $(document).ready(function () {
    var audioElement = $(
    '<audio>' +
    ' <source src="" />' +
    '</audio>');
    $('body').append(audioElement);
    var a = audioElement[0];
    
    var lastEventTime = null;
    var queue = [];
    
    function play() {
    //如果队列是空的,则直接返回
    if (queue.length == 0)
    return;
    if (a.readyState == 0 || a.ended) {
    var event = queue.pop();
    a.src = "xxxxxxxxxxxx";//这儿报DOMException: The play() request was interrupted by a call to pause(). 的问题.
    a.play();
    }
    }

    后改为:

    $(document).ready(function () {
        var audioElement = $(
        '<audio>' +
        '   <source src="" />' +
        '</audio>');
        $('body').append(audioElement);
        var a = audioElement[0];
    
        var lastEventTime = null;
        var queue = [];
    
        function play() {
            //如果队列是空的,则直接返回
            if (queue.length == 0)
                return;
            if (a.readyState == 0 || a.ended) {
                try
                {
                    
    
    
                    a.pause();
                    a.currentTime = 0;
    
                    //解决在chrome 控制台中报 DOMException: The play() request was interrupted by a call to pause(). 的问题.
                    //这是第1种方式
                    //var nopromise = {
                    //    catch: new Function()
                    //};
                    // (a.play() || nopromise).catch(function () { console.log("a.play catch>"); });;//这种可以
                    var event = queue.pop();
                    a.src = "xxxx";
                  
                    //这是第2种方法
                    a.play().catch(function (e) {
                       // console.log("a.play catch>", e);
                    });
    
                }
                catch(e)
                {
                    console.log("autoplay.js play()>", e.message);
                    console.log("autoplay.js play()>", e.description);
                }
    
            }
        }

    这样就可以解决问题了.

  • 相关阅读:
    并发和多线程(二)--启动和中断线程(Interrupt)的正确姿势
    并发和多线程(一)--创建线程的方式
    MySQL系列(十二)--如何设计一个关系型数据库(基本思路)
    Elasticsearch系列(二)--query、filter、aggregations
    Spark-python入门
    python中的Turtle模块
    pytorch显示网络结构
    风格迁移(2)-Fast Style Transfer
    风格迁移(1)-格拉姆矩阵
    使用GAN生成图片
  • 原文地址:https://www.cnblogs.com/bleachli/p/6265878.html
Copyright © 2020-2023  润新知