Запретить # привязку в iframe прокручивать окно браузера - PullRequest
9 голосов
/ 13 октября 2011

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

Демонстрация: http://jsfiddle.net/dTQEE/1/

Если URL-адрес заканчивается на #, например http://foo.com#, браузер предполагает, что вы хотите перейти в верхнюю часть страницы.

Как предотвратить прокрутку родительского окна, когда в фрейме сзагружен фрагмент хеша?

Проблема возникает в Chrome, не уверен, что это проблема в других браузерах.

Сейчас лучшее решение, которое у меня есть, это использовать el.addEventListener('scroll', ...) для сброса scrollTop до 0, если это еще не 0. Это работает, но прокрутка вниз и прокрутка вверх очень заметны.

Ответы [ 2 ]

0 голосов
/ 20 марта 2013

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

<a href="dummylink.html" onclick="someFunction(); return false;">

Ссылка href используется для строки состояния, но из-за return false; в конце она фактически никуда не денется. Затем вы просто делаете свое перенаправление (в моем случае это document.formName.submit();) внутри вашего someFunction();. Если подумать об этом, вы могли бы делать все встроенным, но это не кажется хорошей формой, если у вас есть только одна вещь.

Примечание: Если ваш someFunction(); имеет return false; в конце, этого будет недостаточно, чтобы предотвратить прыжок.

0 голосов
/ 13 октября 2011

Не уверен, что это возможно, но вы должны попытаться подключиться к событию window.onhashchange и запретить использование по умолчанию.Если нет, вам придется удалить хеш, если за ним ничего не следует.

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