#angularjs #jwplayer #ng-dialog
#angularjs #jwplayer #ng-диалог
Вопрос:
Я должен показать jwplayer во всплывающем окне, для всплывающих окон я использую ngDialog (angular), код для ngDialog приведен ниже:
$scope.showVideoPlayerPopup = function(video_path)
{
$scope.ngDialog = ngDialog;
ngDialog.open({
animation: true,
scope:$scope,
template:'<div id="video_popup"></div>',
plain: true,
//className: 'ngdialog-theme-default',
closeByDocument: true
//backdrop : 'static'
});
playVideo(video_path);
}
функция воспроизведения видео, вызванная выше, содержит код для jwplayer, который приведен ниже:
<script>
function playVideo(video_path)
{
jwplayer("video_popup").setup({
file: video_path,
width: "600px",
height: "600px",
stretching: "bestfit",
});
}
</script>
когда я использую тот же код jwplayer для простого HTML-кода, который без всплывающего окна, он работает нормально, но я пытаюсь поместить свой html во всплывающее окно, оно выдает ошибку ниже:
Ошибка: jwplayer (…).setup не является функцией
Обновить
Файлы, которые я включил:
<script src="https://content.jwplatform.com/libraries/qAkRysIB.js"></script>
Комментарии:
1. Вы добавили jwplayer.js файл?
Ответ №1:
- Убедитесь, что включен jwplayer src (вероятно, вы уже это сделали, но в случае, если нет:)
Обновление 11/2021
смотрите Раздел, размещенный в облаке, на странице документации Добавить библиотеку проигрывателя. Для этого потребуется получить учетную запись JWPlayer.
- На странице Загрузки плеера и ключей прокрутите вниз до раздела Библиотеки плееров, размещенных в облаке.
- В разделе Библиотеки проигрывателей, размещенных в облаке, выберите название проигрывателя из выпадающего меню.
- Скопируйте URL библиотеки Cloud Player.
- В пределах
<head>
вашей страницы скопируйте и вставьте URL-адрес в библиотеку проигрывателя.<script src="{cloud_hosted_player_library_url}"></script>
- Перед вызовом функции убедитесь, что панель загружена
setup
. Один из способов сделать это — зарегистрировать прослушиватель событий дляngDialog.opened
из ngDialog (см. Раздел События в ngDialog readme):$scope.$on('ngDialog.opened', function (e, $dialog) { playVideo(); });
Комментарии:
1. Спасибо @Sam. Сработало отлично. Спас мой день!!
2. Где описываются документы
<script type="text/javascript" src="http://p.jwpcdn.com/6/10/jwplayer.js"></script>
, это необходимо?3. @Philll_t Я не могу вспомнить, где я нашел этот URL-адрес, но с тех пор я обновил ответ, чтобы он соответствовал последней документации, поскольку предыдущий URL-адрес, похоже, больше не работал с образцом jsbin.
Ответ №2:
ДА…потому что ваш тег div с идентификатором «current_video_path» должен быть в DOM, прежде чем скрипт jwplayer (…).setup сможет работать…Возможно, вы можете добавить некоторую задержку, используя $timeout или setTimeout, чтобы у него было достаточно времени для отображения div во всплывающем окне, прежде чем этот скрипт сможет сработать..
Комментарии:
1. Как кто-то может определить время задержки, всегда используйте обратный вызов в таких случаях.
2. @Sweety Webashlar: я уже создал <input type=»hidden» id=»current_video_path» value=»> в моем DOM. В любом случае спасибо.
3. ДА… может быть сделано .. я просто хотел, чтобы он понял, что должна быть проблема с синхронизацией… это было только моей главной заботой. и это были варианты, позволяющие быстро проверить, был ли это тот же случай для него или нет..