Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> JavaScript и Мазила (Firefox), Я чайник 
V
    Опции темы
AlphaAndOmega
Дата 16.6.2009, 22:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



Помогите мне, не чего не понимаю... есть фаил *.JS его я преципила к html страничке, в ОПЕРЕ и EI работает все исправно ни каких глюков, а вот  ФФ не работает с... подскажите чего я не ак делаю?  smile  
PM MAIL   Вверх
TetraHC
Дата 16.6.2009, 22:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



Код в студию, телепатов тут мало smile
PM MAIL   Вверх
AlphaAndOmega
Дата 16.6.2009, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



Сам скрипт, я его пыталась и на прямую пихнуть в фаил но не хочет и все тут.

Код

function doMenu(show, within) {
    var menu = menuFor(event.srcElement, within);

    if (show) {
        menu.style.display = "block";
    } else {
        var n = event.toElement;
        do {
            if (n == menu) return;
        } while ((n = n.parentNode) != null);
        menu.style.display = "none";
    }
    event.cancelBubble = true;
}

function menuFor(node, within) {
    var menu = null;
    if (within) {
        menu = getAncestorByTagName(node, "ul");
    } else {
        menu = node.parentNode.getElementsByTagName("ul")[0];
    }
    return menu;
}

function showMenu() { doMenu(1) }
function hideMenu() { doMenu(0) }
function hideMenu2() { doMenu(0,1) }

function initMenus(list) {
    var item, i = 0;
    while (item = list.getElementsByTagName("li")[i++]) {
        var sublist = item.getElementsByTagName("ul")[0];
        if (sublist == null)
            continue;
        var a = item.getElementsByTagName("a")[0];
        a.attachEvent("onmouseover", showMenu);
        a.attachEvent("onmouseout", hideMenu);
        var subitem, j = 0;
        while (subitem = sublist.getElementsByTagName("li")[j++]) {
            subitem.attachEvent("onmouseout", hideMenu2);
        }
    }
}

function getAncestorByTagName(node, tagName) {
    var n = node;
    while ((n = n.parentNode) != null) {
        if (n.nodeType == 1 && n.tagName.toLowerCase() == tagName.toLowerCase())
            break;
    }
    return n;
}


function init() {
    initMenus(document.getElementById("nav").getElementsByTagName("ul")[0]);
}

window.attachEvent("onload", init);


Строчка подкачки в фаил 
Код

<script src="sf/menus.js" type=text/javascript language="javascript" ></SCRIPT>



M
Aliance
Пользуйтесь кнопкой код!


Это сообщение отредактировал(а) Aliance - 17.6.2009, 09:41
PM MAIL   Вверх
Rimch
Дата 17.6.2009, 08:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 23.6.2007

Репутация: нет
Всего: 3



AlphaAndOmega, в дальнейшем пользуйтесь подсветкой
файл menus.js
Код


function doMenu(show, within) {
    var menu = menuFor(event.srcElement, within);

    if (show) {
        menu.style.display = "block";
    } else {
        var n = event.toElement;
        do {
            if (n == menu) return;
        } while ((n = n.parentNode) != null);
        menu.style.display = "none";
    }
    event.cancelBubble = true;
}

function menuFor(node, within) {
    var menu = null;
    if (within) {
        menu = getAncestorByTagName(node, "ul");
    } else {
        menu = node.parentNode.getElementsByTagName("ul")[0];
    }
    return menu;
}

function showMenu() { doMenu(1) }
function hideMenu() { doMenu(0) }
function hideMenu2() { doMenu(0,1) }

function initMenus(list) {
    var item, i = 0;
    while (item = list.getElementsByTagName("li")[i++]) {
        var sublist = item.getElementsByTagName("ul")[0];
        if (sublist == null)
            continue;
        var a = item.getElementsByTagName("a")[0];
        a.attachEvent("onmouseover", showMenu);
        a.attachEvent("onmouseout", hideMenu);
        var subitem, j = 0;
        while (subitem = sublist.getElementsByTagName("li")[j++]) {
            subitem.attachEvent("onmouseout", hideMenu2);
        }
    }
}

function getAncestorByTagName(node, tagName) {
    var n = node;
    while ((n = n.parentNode) != null) {
        if (n.nodeType == 1 && n.tagName.toLowerCase() == tagName.toLowerCase())
            break;
    }
    return n;
}


function init() {
    initMenus(document.getElementById("nav").getElementsByTagName("ul")[0]);
}

window.attachEvent("onload", init);

Строчка подкачки в файле
Код

<script src="sf/menus.js" type=text/javascript language="javascript" ></SCRIPT>

Скажу по секрету в файл с расширением .js не должен содержать теги <script></script>
PM MAIL ICQ   Вверх
AlphaAndOmega
Дата 17.6.2009, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



Цитата(Rimch @ 17.6.2009,  08:17)

[/code]
Скажу по секрету в файл с расширением .js не должен содержать теги <script></script>

я знаю,  я просто копировала из того файла ( *.html) в который я пыталась пихнуть код, что бы посмотреть будет ли он так на прямую фунциклировать в мазиле или нет! Так что этот способ решения проблемы не катит! 
PM MAIL   Вверх
rabbitObject
Дата 17.6.2009, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2007
Где: Беларусь

Репутация: 1
Всего: 1



Цитата

в ОПЕРЕ и EI работает

Интересно... ты назначаешь обработчики событий c помощью attachEvent(). Этого метода FF не знает. Попробуй назначть обработчики как поля элемента, например:

Код

a.onmouseover = showMenu;
a.onmouseout = hideMenu;

Это будет более "кроссбраузерным" решением  smile. Или делай проверку под каким браузером исполняется скрипт:  IE или FF, и используй соответственно: attachEvent или addEventListener.

И еще:
Код

event.srcElement

В FF нет глобального объекта event. Там объект события передается в функцию-обработчик как аргумент. Соответственно, event.toElement  и event.cancelBubble  тоже под FF  работать не будут 
PM MAIL   Вверх
TetraHC
Дата 17.6.2009, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 40
Регистрация: 8.6.2009

Репутация: нет
Всего: нет



window.attachEvent("onload", init);
---------
Тут проблема!
PM MAIL   Вверх
AlphaAndOmega
Дата 17.6.2009, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



попробуемс! Спасибо!
PM MAIL   Вверх
AlphaAndOmega
Дата 19.6.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



Цитата(TetraHC @ 17.6.2009,  19:31)
window.attachEvent("onload", init);
---------
Тут проблема!

а как ее исправить?

Добавлено через 11 минут и 15 секунд
если так же исправить строчку window.attachEvent("onload", init); как предлогает  rabbitObject, то не помогает! 
PM MAIL   Вверх
rabbitObject
Дата 24.6.2009, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 34
Регистрация: 23.1.2007
Где: Беларусь

Репутация: 1
Всего: 1



Цитата

если так же исправить строчку window.attachEvent("onload", init); как предлогает  rabbitObject, то не помогает!  

Еще раз smile :
Цитата

Попробуй назначть обработчики как поля элемента

В твоем случае:
Код

window.onload = init; // кроссбраузер.

или, - как я говорил: делай проверку под каким браузером выполняется скрипт и спользуй attachEvent для IE и addEventListener для FF! Но для IE имя ивента будет начинаться с on, для FF - нет:
Код

window.attachEvent("onload", init); // для IE

Код

window.addEventListener("load", init, false); // для FF


PM MAIL   Вверх
An6rey
Дата 24.6.2009, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 36
Регистрация: 13.10.2008

Репутация: 3
Всего: 5



Все дела в event.toElement
PM MAIL   Вверх
AlphaAndOmega
Дата 10.7.2009, 22:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



СПАСИБО!
PM MAIL   Вверх
AlphaAndOmega
Дата 11.7.2009, 01:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 1.3.2009
Где: Москва

Репутация: 1
Всего: 1



тест
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.