首页 文章

删除Chrome中的<video>元素后,音频会继续显示

提问于
浏览
7

我在Chrome中遇到视频支持问题 . 我的网页必须在Chrome中运行,并且我使用以下代码定期检查网页是否必须播放视频...但问题是,在我删除元素后,我仍然听到音频,当我重新创建eleemnt,新视频的音频和旧的重叠 .

function showVideo() {
        var video = videodata;

        var videobox = $('#videobox').first();
        var videoplayer = $('#videoplayer').first();

        if (video.Enabled) {
            if ((videoplayer.length > 0 && videoplayer[0].currentSrc != video.Location) || videoplayer.length == 0) {
                videobox.empty();
                videobox.append('<video id="videoplayer" preload="auto" src="' + video.Location + '" width="100%" height="100%" autoplay="autoplay" loop="loop" />');
                videobox.show();
            }
        } else {
            videobox.hide();
            videobox.empty(); // Clear any children.
        }
    }

我怎么解决?

谢谢 .

4 回答

  • 0

    以下是我必须要做的最小工作 . 当用户按下后退按钮时,我实际上遇到了缓冲,同时产生了ajax请求 . 暂停Chrome和Android浏览器中的视频会使其保持缓冲状态 . 非异步的ajax请求会等待缓冲完成,这是永远不会的 .

    将其绑定到beforepagehide事件修复它 .

    $("#SOME_JQM_PAGE").live("pagebeforehide", function(event)
     {
               $("video").each(function () 
               { 
                   logger.debug("PAUSE VIDEO");
                   this.pause();
                   this.src = "";
               });
     });
    

    这将清除页面上的每个视频标签 .

  • 0

    首先尝试在html中创建“video”标记为空,并将“source”标记创建为javascript代码

    <html>
    .
    .
    <video id="main-video" autoplay=""></video>
    .
    .
    </html>
    
    
    <script>
       $('#main-video').append('<source type="video/mp4" src="URL.mp4">');
    </script>
    
  • 9

    在我的情况下,我必须先暂停视频才能删除它,否则音频仍然在后台播放 . 我使用暂停的原因是因为html5视频元素上没有stop()函数 .

    } else {
            videobox.hide();
    
            // you can add something like this
            $("#videoplayer").pause();
    
            videobox.empty(); // Clear any children.
        }
    
  • 1

    尝试(基于SimpleCode的答案):

    function showVideo() { var video = videodata;
    ``

    var videobox = $('#videobox').first();
        var videoplayer = $('#videoplayer').first();
    
        if (video.Enabled) {
            if ((videoplayer.length > 0 && videoplayer[0].currentSrc != video.Location) || videoplayer.length == 0) {
                videobox.empty();
                videobox.append('<video id="videoplayer" preload="auto" src="' + video.Location + '" width="100%" height="100%" loop="loop" />');
                videobox.show();
                document.getElementById("videoplayer").play();
            }
        } else {
            document.getElementById("videoplayer").pause();
            videobox.hide();
            videobox.empty(); // Clear any children.
        }
    }
    

相关问题