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.

Dani AI

Generated

— a single syntax/runtime error in a newly added script can stop all JavaScript on a page in Opera, so the symptoms you describe are common and not necessarily a browser bug. is right: isolate the new code by removing or commenting chunks until a minimal page reproduces the failure. seeing the same behaviour reinforces that it’s worth systematic debugging. ’s request for a link is the logical next step if the minimal test still fails.

Common causes to check first: an unterminated HTML comment inside a <script> block (old pages sometimes use <!-- without properly closing it), a parse-time syntax error, or a runtime exception caused by accessing a DOM node that does not exist. Browsers will stop running subsequent scripts when such errors happen; the <script> element docs discuss historic pitfalls with HTML comments inside scripts (MDN: script element).

Practical steps to find the failing line:

  • Reduce to a tiny HTML file that only includes the problem script and one target element; if that still breaks, the error is in the script itself. This is the pruning suggested.
  • Capture the error message. Either open Opera’s JavaScript console or add a global error handler to surface the message, e.g.
    window.onerror = function(message, source, lineno) {
    alert('JS error: ' + message + ' at ' + source + ':' + lineno);
    };

    (see MDN: onerror).

Other quick checks: look for stray <--/--> markers, unterminated strings, and trailing commas; avoid manipulating .style or other properties until you confirm the element exists. If a reduced test still fails, post a link to the minimal failing page (or paste the tiny test case) so others can reproduce and point to the exact Opera error.

Recommended Answers

All 3 Replies

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.

Member Avatar for Member #117553

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.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.