избежать автоматического перехода вниз на странице с видео iframe

У меня есть видео, показывающее на странице, как это

<div class="embed-responsive embed-responsive-16by9">
<iframe class="embed-responsive-item" src="{{skin url="video/hande.mp4"}}"></iframe>
</div>

но при загрузке страницы на планшете/мобильном телефоне страница автоматически перескакивает вниз, где находится видео. Я пытался добавить что-то вроде этого

<iframe style="display: none;" onload="this.style.display='block';" href="..."></iframe>

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

Может кто-то указать мне верное направление? Спасибо


person user2681654    schedule 04.11.2015    source источник


Ответы (1)


ОБНОВЛЕНИЕ

ОП нашел приемлемое решение, используя scrollTo:

<script type="text/javascript">
    // <![CDATA[ window.onload = function(){ window.scrollTo(0,0); }// ]]>
</script>

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

Итак, чтобы добавить к решению OP, попробуйте:

<script>
    // <![CDATA[ document.addEventListener("DOMContentLoaded", function(){ window.scrollTo(0,0); }, false )// ]]>
</script>

Использование window.onload означает, что ваша функция будет вызвана после загрузки всего остального; DOM, изображения, скрипт и т. д.

Использование DOMContentLoaded означает, что ваша функция будет вызываться после загрузки DOM (то есть после загрузки любых фреймов, что обычно является самой медленной частью содержимого DOM). Чего он не ждет, так это сценария, поэтому убедитесь, что вы поместили сценарий YouTube перед этой строкой. Конечно, есть исключения, см. СТАТЬЮ

ОБНОВЛЕНИЕ

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

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

На самом деле забыл обновить фрагмент... поэтому он добавлен сейчас.

Попробуйте этот фрагмент ниже. Посмотреть в «Полной странице». Вы должны прокрутить вниз и вправо, потому что без посторонней помощи он не прокрутится.

document.addEventListener('DOMContentLoaded', init, false);

window.load = function() {
  var fpt = document.querySelector('.focalPoint');
  fpt.parentNode.removeChild(fpt);
}

function init() {
  var fpt = document.createElement('input');
  document.body.appendChild(fpt);
  fpt.classList.add('focalPoint');
  if (fpt != document.activeElement) {
    fpt.focus();
  }
}
.box {
  width: 50vw;
  /* Arbitrary */
}
.vidWrap {
  position: relative;
  /* Anchor the iframe's parent */
  padding-bottom: 56%;
  /* This is for AR 16:9 (ie. wide screen) videos */
  padding-top: 20px;
  /* Offset to padding-bottom */
  height: 0;
  /* Makes a tight 'seal' */
  overflow-y: hidden;
  /* Ensures that edges aren't breached */
  overflow-x: hidden;
  /* As above */
  -webkit-overflow-scrolling: touch;
  /* For iOS7 ... not so sure about iOS8 or iOS9 */
  bottom: -50vw;
  /* Arbitrary. */
  left: 50vw;
  /* Arbitrary */
}
.vid {
  overflow-x: hidden;
  /* See above */
  overflow-y: hidden;
  /* As above */
  height: 100%;
  /* stretched to the edge of parent */
  width: 100%;
  /* As above */
  position: absolute;
  /* Allows control within the parent */
  /* These coords will stretch the iframe seemlessly to parent's edges */
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
}
.focalPoint {
  visibility: hidden;
  opacity: 0;
  line-height: 0;
  font-size: 0;
  border: 0;
  outline: 0;
  position: fixed;
  top: 0;
  left: 0;
  z-index: 9999;
}
<section class="box">
  <div class="vidWrap">
    <iframe id="vid1" class="vid" src="http://media6000.dropshots.com/photos/1381926/20170326/023642.mp4" frameborder="0" scrolling="no" height="100%" width="100%" allowfullscreen></iframe>
  </div>
</section>

person zer00ne    schedule 07.11.2015
comment
спасибо, я пытался с этим, но все еще получаю автоматический переход на мобильный телефон / планшет - person user2681654; 08.11.2015
comment
@ user2681654 Вы добавили scrolling='no' в iframe? - person zer00ne; 09.11.2015
comment
Да вот так ‹section class=box›‹div class=vidWrap› ‹iframe id=vid1 class=vid src={{skin url=video/handmade.mp4}} frameborder=0 scrolling=no height=100% width=100 % allowfullscreen webkitallowfullscreen mozallowfullscreen›‹/iframe›‹/div› - person user2681654; 09.11.2015
comment
На самом деле вы не используете <pre> и <code> , верно? Я предполагаю, что вы используете его только для публикации на этом сайте. Если последнее верно, просто оберните свой код ` (клавиша расположена слева и вверху клавиатуры прямо под клавишей Esc. - person zer00ne; 09.11.2015
comment
Является ли {{ }} шаблоном? - person zer00ne; 09.11.2015
comment
Нет, pre code только здесь, спасибо! {{ }} используется в Magento, но даже если я свяжу то же самое, что и в приведенном выше примере, я все равно получу прыжок - person user2681654; 10.11.2015
comment
Я добавил это на страницу <script type="text/javascript">// <![CDATA[ window.onload = function(){ window.scrollTo(0,0); }// ]]></script>, которая, кажется, работает, хотя есть небольшая задержка, так что это не очень хорошо, но пока это единственное, что, похоже, сработало. - person user2681654; 10.11.2015
comment
Рад, что ты понял. Смотрите мой обновленный пост, чтобы он совпадал с вашим решением. - person zer00ne; 10.11.2015