Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   iframe и якорь (https://javascript.ru/forum/dom-window/22192-iframe-i-yakor.html)

Nikoole 09.10.2011 22:20

iframe и якорь
 
Ребят, не могу найти сам, есть ли решение.
на странице есть iframe. Над iframe разместил:
<-Назад Вперед->
и в <input type = "hidden" id = "anchors"> - список якорей в этом iframe

Когда давлю Назад или Вперед, происходит это:
var iframe = document.getElementById('didacticfileContent_'+DIDACTICCODE);
iframe.src = iframe.src.split('#')[0] +"#"+ anchor; // нужный анкор выбираю заранее

Опытным путем выяснил что заново документ не загружается, но вот сам iframr прыгает вверх ОСНОВНОЙ страницы, а мне надо чтобы позиционирование по анкору было только внутри iframe. Как этого добиться?

melky 09.10.2011 23:19

iframe.src = iframe.src.split('#')[0] +"#"+ anchor;


мб надо только хеш менять, а не весь url... тогда будет имитация перехода по якорю

делать так

iframe.contentWindow.location.hash = anchor;

Nikoole 09.10.2011 23:31

Цитата:

Сообщение от melky
iframe.contentWindow.location.hash = anchor;

Именно это - не срабатывает... Покопаю в эту сторону.

Nikoole 09.10.2011 23:46

http://www.w3schools.com/tags/tag_iframe.asp

вот тут говорят, что у iframe нет таких штук как вы написали :)...
Можно ли как то блокировать прокрутку окна?
Сделать так: Блокируем прокрутку окна -> Устанавливаем якорь в iframe -> разблокируем возможность прокрутки окна.

melky 09.10.2011 23:50

Цитата:

Сообщение от Nikoole (Сообщение 130535)
вот тут говорят, что у iframe нет таких штук как вы написали :)...

<body></body>
<script>
alert( typeof document.body.appendChild( document.createElement('iframe') ).contentWindow );
</script>

Nikoole 10.10.2011 00:04

melky, спасибо за наглядный пример. Вы были правы. Я ожидал изменений в src (когда экспериментировал), изменяя hash как вы предложили. Сейчас попробывал - кидает на нужное место в фрейме, но и основная страница прыгает, как обычно :(.
Пытаюсь решить задачу экспериментами...

melky 10.10.2011 07:35

что же, желаем удачи :)))

Nikoole 10.10.2011 13:09

Попытка прокрутки iframe с помощью функции scrollIntoView увенчалась так же неудачей... Тот же эффект...

Nikoole 10.10.2011 13:36

Утро вечера мудренее... В итоге всех подугов вылезло вот это:
iframe.contentWindow.window.scroll(0, iframe.contentWindow.document.getElementsByName(anchor)[0].offsetTop)

И оно работает.


Часовой пояс GMT +3, время: 21:50.