Hello everyone. A few weeks ago I finished programming a javascript drop down menu system for my website. When I had ironed out the bugs it worked fine in IE 6. Later I got Opera 9 on my computer and the menus don't work in it. In fact, my pages appear to "freeze" the javascript engine and no scripts on the page run (even ones that were there before I added the menu system). I also tried the pages in an app called Editplus 2. It is a text editor with a built in browser that will give details about Javascript errors on web pages (it found some on Daniweb). But no problem with my pages. I've included the script here:

<script language="JavaScript" type="text/JavaScript">
<!--
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function menu(flag_mouse, which_menu){
if (flag_mouse == 1)
{
	if (which_menu == 0) {
remove_menus();
	}
	else if (which_menu == 1 && flag1 == 1) {a = 1};
	else if (which_menu == 1 && flag1 != 1) {
remove_menus();
flag1 = 1;
document.getElementById("menu1").style.zIndex="3";
document.getElementById("menu1").style.visibility="visible";
	}
	else if (which_menu == 2 && flag2 == 1) {a = 1};
	else if (which_menu == 2 && flag2 != 1) {
remove_menus();
	}
	else if (which_menu == 3 && flag3 == 1) {a = 1};
	else if (which_menu == 3 && flag3 != 1) {
remove_menus();
	}
	else if (which_menu == 4 && flag4 == 1) {a = 1};
	else if (which_menu == 4 && flag4 != 1) {
remove_menus();
flag4 = 1;
document.getElementById("menu4").style.zIndex="3";
document.getElementById("menu4").style.visibility="visible";
	}
	else if (which_menu == 5 && flag5 == 1) {a = 1};
	else if (which_menu == 5 && flag5 != 1) {
remove_menus();
	}
	else if (which_menu == 6 && flag6 == 1) {a = 1};
	else if (which_menu == 6 && flag6 != 1) {
remove_menus();
	}
	else if (which_menu == 7 && flag7 == 1) {a = 1};
	else if (which_menu == 7 && flag7 != 1) {
remove_menus();
flag7 = 1;
document.getElementById("menu7").style.zIndex="3";
document.getElementById("menu7").style.visibility="visible";
	};
}
else if (flag_mouse == 0)
{
flag1 = 0; flag4 = 0; flag7 = 0;
document.getElementById("menu1").style.zIndex="0";
document.getElementById("menu1").style.visibility="hidden";
document.getElementById("menu4").style.zIndex="0";
document.getElementById("menu4").style.visibility="hidden";
document.getElementById("menu7").style.zIndex="0";
document.getElementById("menu7").style.visibility="hidden";
};
}
function remove_menus() {
document.getElementById("menu1").style.zIndex="0";
document.getElementById("menu1").style.visibility="hidden";
document.getElementById("menu4").style.zIndex="0";
document.getElementById("menu4").style.visibility="hidden";
document.getElementById("menu7").style.zIndex="0";
document.getElementById("menu7").style.visibility="hidden";
flag1 = 0; flag4 = 0; flag7 = 0;
}
</script>

You can find the whole pages on my homepage. So what do you think, am I stupid or is Opera? Any advice appriciated.

Steven.

To help troubleshoot this I would suggest removing portions of code until you are able to narrow it down to a small snippet that is causing the error. That will make troubleshooting much easier.

I'm having the same type of problem with Opera and a CSS/javascript menu. I don't know the answer but it is happening to me as well. Works fine with all other browsers.

Can I see the code in action on your page. I have a Drop Down / css menu on one of my pages that works fine in Opera as well, so you can just redesign it for your need.

I just want to see yours. Post a link, pls.

This article has been dead for over six months. Start a new discussion instead.