Аудио продолжается после удаления элемента <video>в Chrome - PullRequest
7 голосов
/ 28 января 2012

У меня проблемы с поддержкой видео в 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 ]

9 голосов
/ 28 июня 2012

Следующее было минимумом, я должен был пойти, чтобы заставить это работать.Я на самом деле испытывал остановку из-за буферизации при порождении ajax-запросов, когда пользователь нажимал кнопку возврата.Приостановка видео в Chrome и браузере Android сохраняла его буферизацию.Не асинхронный ajax-запрос застрял бы в ожидании завершения буферизации, чего никогда не будет.

Привязка этого к событию beforepagehide исправила его.

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

Это очистит каждое видеоотметка на странице.

1 голос
/ 19 сентября 2017

сначала попробуйте создать тег «video» пустым в html и создать тег «source» в код JavaScript

<html>
.
.
<video id="main-video" autoplay=""></video>
.
.
</html>


<script>
   $('#main-video').append('<source type="video/mp4" src="URL.mp4">');
</script>
0 голосов
/ 01 июня 2012

try (на основе ответа SimpleCode):

function showVideo() { var video = videodata;</p> <pre> 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. } }

0 голосов
/ 05 апреля 2012

В моем случае мне пришлось сначала приостановить видео, прежде чем удалять его, в противном случае звук все еще воспроизводится в фоновом режиме. Причина, по которой я использовал pause, заключается в том, что в элементе видео html5 нет функции stop ().

        } else {
        videobox.hide();

        // you can add something like this
        $("#videoplayer").pause();

        videobox.empty(); // Clear any children.
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...