Встроенное видео не отображается в Chrome при первой загрузке после сохранения кода в модели Rails - PullRequest
5 голосов
/ 27 июля 2011

У нас есть приложение Ruby on Rail, которое позволяет пользователю сохранять несколько кодов для встраивания видео в нашу модель данных.Форма позволяет пользователю вводить любое количество кодов для встраивания, нажимать кнопку отправки и сохранять все в базе данных.Затем приложение перенаправляет пользователя на страницу со списком всех кодов для встраивания.

Этот рабочий процесс отлично работает для IE, Safari и Firefox.

В Chrome, однако, при первой загрузке страницы ни одно из видео не появляется на странице.Я вижу следующую ошибку в консоли, один раз для каждого видео:

Отказался выполнить скрипт JavaScript.Исходный код скрипта найден в запросе.

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

Когда я просматриваю источник, страница перезагружается дляоперация просмотра источника, поэтому я не могу сказать, поступает ли источник, как ожидалось.

Когда я проверяю элемент в блоке, где должно быть видео, я вижу следующее:

<iframe src="" width="400" height="225" frameborder="0">
  <html>
    <head></head>
    <body></body>
  </html>
</iframe>

Это происходит как для кодов встраивания в стиле iframe, так и для кода тега «старого стиля» для видео YoutTube и Vimeo.

Связанный:

Ответы [ 2 ]

6 голосов
/ 13 декабря 2011

Это то, как Chrome предотвращает XSS (межсайтовый скриптинг) , как указано выше.

Когда вы отправляете свои коды встраивания и перенаправляете на другую страницу для их отображения, Chrome видитчто отправленные коды встраивания (через HTTP POST)) и ответы встраиваемых кодов совпадают, поэтому они не могут загрузить их и отображают ошибку в консоли.

При обновлении страницы больше не отправляется HTTP POST(потому что вы перенаправили его раньше), поэтому он должен отображаться правильно.

У меня та же проблема, и я решил ее, автоматически перезагрузив страницу после ее перенаправления.

1 голос
/ 28 декабря 2012

Я перезагружаю iframes через javascript (с jquery) как обходной путь ..

Поэтому я сохраняю src в другом месте, потому что chrome удаляет его ..

Я добавил URL дважды как src и src2и затем перезагрузил с помощью src2.

Я также дал все iframes, которые нуждаются в перезагрузке специального класса 'webkitIframeHack'.

<script type="text/javascript">
$(function(){
    if ($.browser.webkit) {
        $("iframe.webkitIframeHack").each(function(){
            $(this).attr('src', $(this).attr('src2'));
        });
    };
});
</script>

(я не могу использовать атрибуты html5 data- *,я думаю, что они были бы более приспособленными ..)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...