Показать сообщение отдельно
  #1 (permalink)  
Старый 17.09.2013, 15:24
Новичок на форуме
Отправить личное сообщение для disee Посмотреть профиль Найти все сообщения от disee
 
Регистрация: 17.09.2013
Сообщений: 2

Требуется доработка скрипта.
Я сам не силен в скриптах, небольшие знания программирования школьного курса есть, для понимания... В общем есть скрипт плавающего меню (при прокрутке), отлично работает на браузерах эксплорер и опера, на мозиле и хроме - подглючивает в одном моменте. Функция скрипта: при старте страницы определяет, где должен быть модуль относительно головы страницы, а при прокрутке прилепляется к верху странице и остается на этом месте. Глюк состоит в том, что при использовании якорей на странице, либо обновлении в произвольном месте, скрипт подгружается с параметром первоначального отступа от верха странице. Если наглядно, то это так: выглядит.

А еще хотел использовать этот скрипт дважды на странице, для разных блоков. Все перемешалось и работола по сценарию второго скрипта, несмотря на то, что переменные m1, m2, s и top менял на альтернативные.

Помогите уроком, решением...

Вот скрипт:

<script type="text/javascript">
var m1 = 240; /* высота шапки в пикселях */
var m2 = 20; /* отступ, когда во время прокрутки шапка
 уже не видна */
 
/* функция кроссбраузерного определения
отступа от верха документа к текущей позиции
скроллера прокрутки */
 
function getScrollTop() {
           var scrOfY = 0;
           if( typeof( window.pageYOffset ) == "number" ) {
                   //Netscape compliant
                   scrOfY = window.pageYOffset;
           } else if( document.body
           && ( document.body.scrollLeft
           || document.body.scrollTop ) ) {
                   //DOM compliant
                   scrOfY = document.body.scrollTop;
           } else if( document.documentElement
           && ( document.documentElement.scrollLeft
            || document.documentElement.scrollTop ) ) {
                   //IE6 Strict
                   scrOfY = document.documentElement.scrollTop;
           }
           return scrOfY;
}
 
/* функция, которая устанавливает верхний отступ
 для «плавающего» фиксированного вертикального
меню в зависимости от положения
 скроллера и видимости шапки */
 
 
function marginMenuTop() {
            var top  = getScrollTop();
            var s    = document.getElementById("socializ");
            if (top+m2 < m1) {
                s.style.top = (m1-top) + "px";
            } else {
                s.style.top = m2 + "px";
            }
}
 
/** функция регистрирует
вычисление позиции
 «плавающего» меню при прокрутке страницы
**/
 
function setMenuPosition(){
 
if(typeof window.addEventListener != "undefined"){
    window.addEventListener("scroll", marginMenuTop, false);
 
} else if(typeof window.attachEvent != "undefined"){
    window. attachEvent("onscroll", marginMenuTop);
}
 
 
}
 
/** регистрируем вызов
необходимых функций после
 загрузки страницы **/
 
if(typeof window.addEventListener != "undefined"){
    window.addEventListener("load", setMenuPosition, false);
 
} else if(typeof window.attachEvent != "undefined"){
    window. attachEvent("onload", setMenuPosition);
}
 
 
</script>
Ответить с цитированием