Использование CSS и JQuery для управления встроенным фреймом с жестко запрограммированным автозапуском

У меня есть презентация, сделанная в Adobe Presenter, которая встроена с использованием iframe. Автовоспроизведение было жестко закодировано, когда презентация была опубликована. при загрузке страницы презентация запускается автоматически и воспроизводится звук.

Поскольку я не могу отключить автовоспроизведение, я решил добавить кнопку воспроизведения/паузы и использовать JQuery для добавления класса, который изменяется с display:hidden на display:block, раскрывая презентацию и скрывая ее по завершении. Я пробовал это, но даже когда iframe скрыт, звук запускается автоматически при загрузке страницы.

Есть ли в CSS альтернативное свойство display, которое может полностью удалить элемент и вернуть его, а не просто скрыть? или у кого-нибудь есть другая идея о том, как я могу дать пользователю возможность начать презентацию?


person mackswel    schedule 20.07.2015    source источник


Ответы (2)


Привет, вы можете сделать что-то подобное для кнопки паузы воспроизведения. Он просто остановит и запустит видео по щелчку любого класса, который вы замените на .video. Я не знаю, почему вы хотите display:none и т. д., поэтому я не включил эту часть в ... если вы расширите, я могу отредактировать свой вопрос, чтобы он хорошо подходил для вас.

jQuery( document ).ready(function($) {
    $('.video').click(function() {
        $(this).get(0).paused ? $(this).get(0).play() : $(this).get(0).pause();
    });
});

ИЗМЕНИТЬ
а точнее:

jQuery(function($) {
    $('.video').on("click", function() {
        this[ this.paused ? "play" : "pause" ]();
    });
});

Чистый способ javascript был бы

Играть в:

document.getElementById('videoId').play();

Пауза:

document.getElementById('videoId').pause();
person Josh Stevens    schedule 20.07.2015
comment
Извините за мое редактирование. В ваш код добавлен немного лучший пример, в котором используется this вместо $(this).get(0). Надеюсь, вы не против ;) - person Roko C. Buljan; 20.07.2015
comment
да, это более аккуратный способ, оглядываясь на это @RokoC.Buljan, не беспокойтесь :) - person Josh Stevens; 20.07.2015
comment
В любом случае, вы показываете OP, как переключать воспроизведение/приостановку видео. Если вы внимательно прочитаете, у OP есть iframe, в котором есть видео, которое запускается автоматически. Вопрос заключался в том, как: со страницы, в которую встроен iframe, -> управлять этим видеоэлементом и не запускать его/автозапускать. - person Roko C. Buljan; 20.07.2015
comment
Привет, спасибо, что так быстро ответили мне. Роко прав, у меня уже есть элементы управления для воспроизведения и приостановки видео. моя проблема в том, что презентация находится на полпути вниз по странице, поэтому, когда страница загружается, она автоматически воспроизводится и начинает говорить, прежде чем пользователь сможет прочитать введение и найти его. Вот почему я попробовал элементы управления, которые переключали Display:none/Display:block, которые работали, но звук по-прежнему автоматически воспроизводился при загрузке страницы, даже если презентация не была видна. Любые идеи о том, как остановить это или, возможно, напрямую получить доступ к кнопкам паузы/воспроизведения внутри iframe при его загрузке? - person mackswel; 21.07.2015

После долгих изнурительных гуглений я решил, что решения нет. Хотя мне удалось отключить автозапуск. но это означает индивидуальную загрузку каждой презентации с сервера, редактирование XML и повторную загрузку... Их тысячи.

Спасибо всем, кто потратил время на размышления над этой неразрешимой проблемой.

И всем, у кого есть похожая проблема, кто доберется до этого поста через несколько месяцев, не тратьте столько времени, как я, пытаясь найти обходной путь, и просто смиритесь с поражением... нет более быстрого способа.

person mackswel    schedule 21.07.2015