Как показать на моем веб-сайте таймер, синхронизированный с истекшим временем встроенного видео - PullRequest
0 голосов
/ 22 апреля 2019

В настоящее время я создаю веб-сайт с использованием фляги Python, который показывает встроенное видео в iframe.Я хотел бы добавить таймер на веб-сайте, который показывает текущее время, и эти два должны быть синхронизированы (например, когда посетитель приостанавливает видео, таймер должен также сделать паузу).

Так что в настоящее время у меня есть что-то вроде этого в моем приложении фляги:

@app.route('/')
def home():

    return """
    <h1>Hello world, check out this video:</h1>
    <iframe src="https://www.bbc.com/ideas/videos/a-love-letter-to-trees/p076rn7c/player" width="500" height="440" scrolling="no" style="overflow: hidden" allowfullscreen frameborder="0">
    </iframe>    
    """

Мне трудно получить доступ к элементам в iframe.После некоторого поиска и спотыкания о чем-то, называемом политикой того же происхождения, кажется, что невозможно прочитать или отредактировать содержимое iframe, если вы не из того же источника (хотя некоторые говорят, что вы можете использовать запросы Python + Beautifulsoup, который добавляет кнемного путаница).

Учитывая мои проблемы с iframes, я начал думать, возможно ли это без использования iframes.Если бы я размещал свой сайт локально, я мог бы использовать Chrome, чтобы заглянуть в iframe и найти источник видео.Вместо использования iframe я могу напрямую использовать <video> в своем коде фляги и отсылать src к тому, который я только что нашел.

Это сработало, и я подумал, что я делаю успехи, но через некоторое время, вернувшись на свой сайт, я заметил, что видео больше не работает, и я предполагаю, что src, который я взял из iframe, действителен только в течение определенного времени,Это заставляет меня думать, что использование <video> напрямую не является правильным способом (или даже не одобряется веб-сайтом, на котором размещено видео).

Возможна ли моя цель иметь синхронизированный таймер?

1 Ответ

0 голосов
/ 24 апреля 2019

Невозможно получить информацию о странице iframed в другом домене, используя JavaScript, запущенный на родительской странице, из-за упомянутой политики того же происхождения . Это функция безопасности - если бы это было возможно, было бы тривиально интерпретировать фишинговую атаку для сбора информации для входа в систему для онлайн-банкинга, открыв ее, например, в iframe и прочитав введенный пароль.

Существуют способы взаимодействия со страницей внутри iframe, такие как API Window.postMessage () , но для этого встроенная страница должна взаимодействовать, то есть прослушивать сообщения и делать все, что угодно спрашиваешь.

Использование <video> позволит обойти эту проблему, но большинство поставщиков / издателей видео, которые вы можете найти в Интернете, не хотят , чтобы это было сделано - иногда напрямую запрещает это их Условия использования , такие как BBC для встраивания в ваш пример («код для встраивания не должен быть изменен каким-либо образом»). В других случаях URL-адрес видео будет заблокирован для встраивания, временного или просто ненадежного.

Правильный способ добиться того, что вы описываете (видео в проигрывателе для встраивания с синхронизированным таймером), - это использовать API, предоставленный поставщиком видео.

...