Я здесь новенький ... надеюсь, что все делаю правильно ;-D

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

У меня есть сайт с длинной областью контента, на сайте есть полосы прокрутки. Где-то внутри этой области содержимого есть iframe. Этот iframe реализует сайт с полной высотой (доска поддержки) и изменяет размер iframe при изменении содержимого height, поэтому iframe не имеет полос прокрутки. Теперь я хочу: когда я открываю веб-сайт с помощью ie http://www.mywebsite.com/#new, я хочу, чтобы страница прокручивалась вниз до iframe, но не только до начала iframe, но и до положения, в котором размещен якорь. внутри этого iframe.

Таким образом, сам iframe не нужно прокручивать (это всегда 100% высота), но родительский фрейм должен быть прокручен до положения, в котором - внутри iframe - размещается якорь.

Я действительно не знаю, как это решить. Добавление привязки к URL-адресу iframe не помогает, а также просто добавление привязки к URL-адресу веб-сайта не работает. Я уверен, что мне нужно реализовать что-то с помощью javascript или аналогичного, но не знаю, как! Я могу изменить код обоих - веб-сайта внутри iframe и родительского сайта!

// РЕДАКТИРОВАТЬ
О, я забыл ... Я не могу сделать это с помощью onClick-Action или атрибута ссылки (это то, что должно быть решением в соответствующем сообщении), потому что это не прыжок внутри той же страницы. Страница перезагружается и должна перейти к привязке :-D Так что она должна работать, когда я ввожу URL самостоятельно ...
Надеюсь, вы понимаете, что мне нужно!

// EDIT2 Возможные рамки:

  • Главная страница - это блог на wordpress, поэтому можно использовать JQuery !
  • Страница iframe - это простой машинный форум (SMF) - я думаю, только родной JS здесь!
4
Niklas Möller 26 Июл 2013 в 17:55
Вы хотите простой javascript? у вас есть jQuery, Mootools или другой фреймворк?
 – 
Sergio
26 Июл 2013 в 19:32
Да извини! Забыл добавить эту информацию, добавил ее в исходный пост прямо сейчас!
 – 
Niklas Möller
27 Июл 2013 в 20:05

1 ответ

Лучший ответ

Вот ответ, который направит вас «на правильный путь».

Предполагая, что ваш iFrame всегда находится в одной и той же позиции на вашей главной странице, вам нужно прокрутить главную страницу до этой точки: координата y iframe + координата привязки внутри iFrame.

Я буду называть вас якорем: <a name="anchor1">Here</a> и iFrame: <iframe id ="myiFrame" ...

Чтобы получить позицию iframe на странице, вы можете использовать $("#myiFrame").position().top и позицию привязки внутри iFrame с помощью $("#myiFrame").contents().find('a[name=anchor]').position().top.

Итак, ваш сценарий может выглядеть так:

var y = $("#myiFrame").position().top + $("#myiFrame").contents().find('a[name=anchor]').position().top;
$(window).scrollTop(y)
2
Sergio 27 Июл 2013 в 22:45
Это помогло мне, спасибо! Необходимо использовать offset () вместо position (), но все остальное работает. Спасибо! :) Сейчас делаю вот так: jQuery(window).load(function() { id=window.location.hash.slice(1).substr(window.location.hash.slice(1).indexOf('#')+1); if(jQuery("#iframeforum").contents().find('a[id='+id+']').length) { var y = jQuery("#iframeforum").offset().top + jQuery("#iframeforum").contents().find('a[id='+id+']').offset().top - jQuery('#top').height(); jQuery(window).scrollTop(y) } });
 – 
Niklas Möller
29 Июл 2013 в 11:29
Насколько я могу судить, это невозможно, если iframe находится в другом домене. Кто-нибудь, пожалуйста, поправьте меня, если я ошибаюсь.
 – 
lbstr
31 Авг 2013 в 02:48