Я пытаюсь сделать выпадающее горизонтальное меню в JavaScript. Он отлично работает на Firefox и Chrome, однако вызывает проблемы в IE.
Вот код, который у меня есть
function init(){
hideAllSubMenu();
var menuItem = document.getElementById("menu_wrap").getElementsByTagName("div");
for(var index = 0; index < menuItem.length; index++)
{
// if firefox and all oother browsers
if(typeof menuItem[index].addEventListener != "undefined")
{
menuItem[index].addEventListener("mouseover", ShowListener, false);
menuItem[index].addEventListener("click", ShowListener, false);
}
else //IE
{
menuItem[index].attachEvent("onclick", ShowListener);
menuItem[index].attachEvent("onmouseover", ShowListener);
}
}
}
function ShowListener(event)
{
hideAllSubMenu();
var menuItemIdStr = this.id;
var menuItemIdNum = menuItemIdStr.replace(/menu/i, "");
var subMenu = document.getElementById("submenu_wrap" + menuItemIdNum);
subMenu.style.left = this.offsetLeft + "px";
subMenu.style.top = this.offsetTop + this.offsetHeight + 2 + "px";
subMenu.style.display = "block";
}
Кажется, это жалуется на это .
Я понимаю, что в IE функция прослушивания событий - это не копирование, а ссылка, и именно поэтому это вызывает у меня проблему.
Есть ли способ обойти эту проблему?
Я даже пытался создать отдельную функцию для attachEvent for IE и непосредственно указывал путь к объекту, однако это все еще жаловалось.
Нечто подобное
menuItem[index].attachEvent("onmouseover", ShowListenerIE(menuItem[index]));
Примечание: я планирую переписать это простое по функциональности меню в JQuery, но сейчас я заинтересован в изучении JavaScript Core + DOM и хотел бы обойти эту проблему.
Заранее спасибо.