2014-12-02 2 views
0

В настоящее время у меня есть HTML5-видео в теле страницы с настраиваемыми элементами управления. Одним из этих настраиваемых элементов управления является кнопка POP-OUT, которая позволяет пользователю вывести видео в изменяемое по размеру диалоговое окно JQuery. Чтобы включить все пользовательские элементы управления, у меня есть внешний javascript, который загружает во всех элементах и ​​eventHandlers и функции, чтобы заставить пользовательские элементы управления работать.Дублирование HTML5-видео в окно диалога jQuery Модальное окно

Есть ли способ, чтобы просто дублировать видео, в диалоговом окне, на лету, и не вынуждены воссоздать весь код пользовательских элементов управления для этого «нового» видео?

Я надеюсь, что у меня не будет таких функций, как playPause() И playPauseModal(), но технология будет достаточно умна, чтобы просто использовать playPause() для обоих.

В настоящее время я использую jquery-ui для запуска модального диалогового окна.

+0

зависит от того, как реализован ваш 'код playPause' .. разместить свой код –

ответ

1

Вы можете отсоединить родителя от DOM, а затем вставить его в модальный диалог - он не дублирует видео, но вы всегда можете использовать местозаполнитель в фоновом режиме во время модальности и при закрытии модального окна переместить его обратно.

Простой пример:

var hasMoved = false; 
 

 
$("#move").on("click", function() { 
 

 
    var parent = $("#parent"); 
 
    var player = $("#player"); // get reference to add and to keep alive 
 

 
    if (hasMoved) { 
 
    $("#modal").remove("#player"); // remove from modal container 
 
    parent.append(player); 
 
    $("#video")[0].play();  // video will stop, continue to play 
 
    hasMoved = false; 
 
    } 
 
    else { 
 
    parent.remove("#player"); // remove player container and all controls inside 
 

 
    $("#modal").append(player); // append to new container 
 
    $("#video")[0].play();  // video will stop, continue to play 
 
    hasMoved = true; 
 
    } 
 
    
 
});
#parent {border:1px solid blue} 
 
#modal {border:1px solid red}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="parent"> 
 
    <div id="player"> 
 
    <video id="video" width="500" height="280" preload="auto" autoplay> 
 
    <source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.mp4" type="video/mp4"> 
 
    <source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.webm" type="video/webm"> 
 
    <source src="http://clips.vorwaerts-gmbh.de/big_buck_bunny.ogv" type="video/ogg"> 
 
    </video> 
 
    <button>Play</button><button>Stop</button> 
 
</div> 
 
</div> 
 
<button id="move">Move --&gt;</button> 
 
<div id="modal"></div>

+0

Это работает фантастически, но у меня немного сложности после Я отменяю процесс, чтобы принести видео BACK к его оригинальному div. Я могу перейти от оригинала к окну, а затем вернуться из окна в исходное, но если я попытаюсь повторить этот процесс еще раз, я получаю сообщение ** Uncaught NotFoundError: не удалось выполнить 'removeChild' в 'Node': узел, который будет remove не является дочерним элементом этого узла. ** Я помещаю игрока обратно в тот же div, что и изначально. – Murphy1976

+0

@ Murphy1976 звучит странно .. Я обновил приведенный выше пример с помощью функции переключения для кнопки перемещения. Похоже, здесь хорошо работать, но, возможно, в вашем сценарии может быть какая-то ссылка (-а), предотвращающая это. Трудно сказать. Посмотрите, будет ли этот добавленный метод работать для вас. – K3N

+0

OH .. Я даже не видел, что вы его обновили ... позвольте мне попробовать, и я вернусь к вам. – Murphy1976

Смежные вопросы