Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Фреймы


Автор: longtop 13.5.2009, 08:27
Надо просто загружаемую во фрейм страницу прокрутить на 120 пикселей. Скажете проще простого, есть window.scroll() и всякие другие функции. Но дело в том, что доступа к коду загружаемой страницы нет и скроллящий код надо размещать в странице, содержащей <frameset>...</frameset>
Помогите, плз!

Автор: Aliance 13.5.2009, 08:53
Читаем статью о работе с фреймами: http://forum.vingrad.ru/forum/topic-44559.html
Видим, что из документа, задающего frameset можно легко манипулировать любыми данными, содержащимися во фрейме (если конечно фрейм с того же домена, политика безопасности). В твоем случае так:
Код

top.frames["имя_фрейма"].onload = function()
{
    top.frames["имя_фрейма"].scrollTo( 0, 120 );
}


Автор: longtop 14.5.2009, 01:45
А в function() что определять?

Автор: longtop 14.5.2009, 04:25
Код

<script language="JavaScript" type="text/JavaScript">
top.frames["mainFrame"].onload = scrollwin()
{
     top.frames["mainFrame"].scrollTo( 0, 120 );
}
</script>
</head>
<frameset rows="[color=red]<? print $hi;?>[/color],*" frameborder="NO" border="0" framespacing="0">
<frame src="[color=red]<? print $top_frame;?>[/color]" name="topFrame" scrolling="NO" noresize>[/color]
<!-- вот этот фрейм (mainFrame) нужно скроллить --?>
[color=darkblue]<frame src="[color=red]<?print $main_frame;?>[/color]" name="mainFrame">
</frameset>


Если не трудно, подскажите, пожалуйста.

Автор: bars80080 14.5.2009, 09:14
longtop, а зачем вы поменяли служебное слово function на неизвестное js слово scrollwin?

Автор: longtop 15.5.2009, 01:37
А с function() тоже не работает. Я так понимаю, что функцию, которую создал для прокрутки, откуда то надо вызвать. Если она называется function, к ней так и обращаться? Тогда откуда обращаться? Фрагмент кода это только фрагмент, как его встроить в код страницы, содержащей <frameset>...</frameset> абсолютно непонятно. Мне непонятно. Может есть кто подскажет? smile 

Автор: bars80080 15.5.2009, 09:43
если нужно обращаться из другого места, то нужно написать обычную:

Код

scrollwin() {
     top.frames["mainFrame"].scrollTo( 0, 120 );
}


где нужно вызываем:
Код

<frame src="<? print $top_frame;?>" name="topFrame" scrolling="NO" onload="scrollwin()" noresize>

либо из другого места. нужно только не запутаться где что находится. onload="scrollwin()"  - справедливо, если функция объявлена здесь же, где написано <frame ...>
если нужно вызвать из самого фрэйма функцию расположенную в родительском окне, то можно поступить примерно так:
<body onload="parent.scrollwin();"> или parent.document.scrollwin(); там надо посмотреть

либо если не хочется писать в тэгах, а нужно в коде то для первого случая: window.frames['topFrame'].onload = function() { scrollwin(); }
для второго случая window.onload = function() { parent.scrollwin(); }

Добавлено через 2 минуты и 2 секунды
вместо

Цитата(bars80080 @  15.5.2009,  09:43 Найти цитируемый пост)
scrollwin() {
     top.frames["mainFrame"].scrollTo( 0, 120 );
}

для первого варианта должно работать 
Код

scrollwin() {
     window.frames["mainFrame"].scrollTo( 0, 120 );
}

или
Код

scrollwin() {
     document.frames["mainFrame"].scrollTo( 0, 120 );
}

короче надо пробовать

Автор: Aliance 15.5.2009, 13:36
Какую ошибку выдает? Работать должно, если все правильно делать.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)