Javascript 暂停视频不会';html5视频标签中的t停止音频

Javascript 暂停视频不会';html5视频标签中的t停止音频,javascript,html,firefox,google-chrome,html5-video,Javascript,Html,Firefox,Google Chrome,Html5 Video,我正在使用其pause()方法暂停视频。。问题是音频继续播放。。。我还试着在Firefox的Javascript控制台中暂停它。。。什么也没发生。视频是.ogg格式的,甚至没有在Chrome上播放(因为我认为它不受支持)。 我在AmazonS3上主持了这段视频,它的流媒体非常完美。我动态创建元素,从JSON请求加载其信息。 下面是一些代码: function showVideo() { var video = videodata; var videobox =

我正在使用其
pause()
方法暂停视频。。问题是音频继续播放。。。我还试着在Firefox的Javascript控制台中暂停它。。。什么也没发生。视频是.ogg格式的,甚至没有在Chrome上播放(因为我认为它不受支持)。 我在AmazonS3上主持了这段视频,它的流媒体非常完美。我动态创建元素,从JSON请求加载其信息。 下面是一些代码:

function showVideo() {
        var video = videodata;

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

        if (video.Enabled) {
            if ((videoplayer != null && videoplayer.currentSrc != video.Location) || videoplayer == null) {
                console.log('Creating video elem');
                videobox.empty();
                videobox.append('<video id="videoplayer" preload="auto" src="' +
                  video.Location + '" width="100%" height="100%" autoplay="autoplay" loop="loop" />');
                videobox.show();
            }
        } else {
            if (videoplayer != null) {
                videoplayer.pause();
                console.log('Pausing video...');
            }
            console.log('Deleting video elem');
            videobox.hide();
            videobox.empty();
        }
    }

我猜showVideo会被调用两次,并创建两个副本,其中一个副本即使在你调用另一个暂停后仍会继续播放

在您的代码中,videoplayer变量将不会引用您稍后使用append创建的视频标记,它将指向之前具有该id的内容,我假设在清空该框时该id将被删除,但可能会保留在内存中(并继续播放声音)

这只是我的最佳猜测,但无论如何,最好使用视频元素的API来设置源和其他参数,而不是清空框并重建标记

videoplayer.src = video.Location;
videoplayer.autoplay = true;
// etc.

此外,100%不是宽度/高度属性的有效值。您需要使用CSS来拉伸视频以填充一个区域。

我有一个类似的问题,这个问题通过非常出色的编码器解决了。看看这篇文章。这可能很有用

如果您使用的是html属性:



我遵循了您的建议,不再每次都重新创建该元素,而且它可以正常工作。但是我检查了该方法是否两次输入相同的if块:否。我认为这是一只虫子。。顺便说一句,如果有人有同样的问题,我会发布工作代码。;-)虽然这可以从理论上回答这个问题,但在这里包括答案的基本部分,并提供链接供参考。我修正了我的答案,以反映更完整的回答。我只是想帮你。忘了-1吧,你已经编辑了你的帖子,并且给出了一个很好的答案。随着时间的推移,您将获得更多+1。讨厌的人会讨厌:)谢谢你建议编辑:)没有它,我不会在这个赫诺问题上做得更好!添加更多精彩的答案,你会很好。祝你好运。
videoplayer.src = video.Location;
videoplayer.autoplay = true;
// etc.