Nickolay.info. Javascript. Как перейти к нужному месту страницы?

Если перевести вопрос на приемлемый русский, он был задан так:

"Как мне сделать, чтобы новый баннер Яndexа (шириной во всю страницу) у меня не показывался, хотя бы просто автоматически прокрутить страницу вниз, чтоб скрыть его? Желательно как можно проще, я не программист."

Во-первых, можно вернуть старый баннер, зайдя по адресу http://narod.yandex.ru/userarea/adv.xhtml (нужно выполнить персональный вход на Яndex)

Во-вторых, имея от 300 посетителей в сутки, можно стать "партнером" компании Яndex и выбирать место размещения рекламы более свободно (http://partner.yandex.ru/registered/?cmd=campaigns&act=Request)

В-третьих вместо динамического можно установить на каждой странице своего сайта статический баннер (http://narod.yandex.ru/help/20.yhtml)

Наконец, в-четвертых, Вы можете прокрутить средствами Javascript свою страницу (собственно, вопрос-то был в этом)

Предупреждение. Я не сделал этого на своем сайте и не призываю к этому Вас. Я отвечаю на конкретный вопрос по JavaScript - прокрутка окна вниз к нужному месту. Согласно п.7.3i "Пользовательского соглашения" (http://rules.yandex.ru/) данное действие может быть истолковано как "нарушение внешнего вида или операционных возможностей любых элементов, которые Яндекс внедряет на веб-страницу, включая панели управления, фоновые изображения, логограммы и рекламные баннеры; при этом если стандартный баннер, автоматически вставляемый на Вашу страницу Яндексом, не отображается или отображается не полностью из-за каких-либо особенностей кода Вашей страницы, Вы обязаны изменить код страницы, чтобы обеспечить нормальное отображение этого баннера".

1. Используя событие onload тега <body> можно прокрутить загруженную страницу вниз на требуемое число пикселов. Для этого достаточно в открывающей части тега написать код
window.scroll(0,X)
где X - требуемое число пикселов.
Например, у нас в теге было:
<body bgcolor=white >
а стало: <body bgcolor=white onload='window.scroll(0,99)'>
и 99 пикселов сверху будут прокручены после загрузки страницы.

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

С другой стороны, код вида
window.scrollTo(0, document.body.scrollHeight)
должен работать во всех основных браузерах, хотя это, возможно, "не по канонам".

2. Сразу после тега <body> ставим закладку, например, такую
<body><a name="start"></a>
В теге body обеспечиваем переход к ней после загрузки страницы:
onload='document.all.start.scrollIntoView(true)'
то есть, код
<body bgcolor=white>
мы в каждом файле нашего сайта должны заменить на
<body bgcolor=white onload='document.all.start.scrollIntoView(true)'><a name="start"></a>

Оба способа не сработают, если содержимое страницы не заполняет даже одного окна браузера. Кроме того, коллекцию document.all лучше вообще не использовать, она работает только для браузеров, совместимых с Internet Explorer. К тому же, по неясным причинам сверхпопулярный в России браузер Opera метод scrollIntoView игнорирует начисто (хотя нигде не написано, что не поддерживает). Так что из простых способов могу предложить, разве что, следующий.

3. В нужное место документа документа ставим картинку размером 1x1 пиксел (метка start теперь не нужна):

<img src="1.gif" NAME="start1" WIDTH="1" HEIGHT="1" STYLE='visibility:hidden; position:relative;'>

У меня здесь предполагается, что картинка с именем 1.gif берётся из текущй папки, у Вас это может быть иначе.

В заголовок документа включаем несложный скрипт:

<script type="text/javascript">
function scroll1 () {
 var holdingImage = document.images["start1"]; 
 var canvasTop = holdingImage.offsetTop; 
 window.scrollTo(0, canvasTop); 
}
</script>

Вызываем этот скрипт по загрузке страницы:

<body onload="scroll1();">

У меня сработало, в том числе, в "Опере".

4. Собственно "убирание". Если открыть исходный код любой страницы, открытой онлайн на "Народе", мы увидим внизу файла 2 стиля, которые и отвечают за вывод всплывающего окна с рекламой:

#bn {display:block;}
#bt {display:block;}

В JavaScript можно обращаться к любому именованному объекту на странице. Отключить его видимость проще простого - достаточно поставить в значение none свойство display. Это мы и выполним по загрузке страницы, когда произойдет событие onload. Чтобы подмена не выглядела слишком уж явной, сделаем код чуть-чуть похитрее.

<script type="text/javascript">
function prst () {
 var b1='bn',b2='bt',nn='none';
 document.getElementById(b1).style.display = nn;
 document.getElementById(b2).style.display = nn;
}
</script>

Вставляем код внутрь тега <head> нужной страницы, а в тег <body> добавляем вызов этой функции:

<body onload="prst()">

Это всё.

Рейтинг@Mail.ru

вверх гостевая; E-mail