zoukankan      html  css  js  c++  java
  • 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);
                }
    
            }
        }

    这样就可以解决问题了.

  • 相关阅读:
    CSRF的安全问题
    preg_replace
    反汇编:虚函数表
    12.Proxy
    JS中的this
    11.Set 和 Map数据结构
    10.symbol
    9.对象的扩展
    test
    ES5支持的方法
  • 原文地址:https://www.cnblogs.com/bleachli/p/6265878.html
Copyright © 2011-2022 走看看