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.