troubleshooting Question

How to make java based menu open links in new browser windows?

Avatar of awp5379
awp5379 asked on
JavaWeb DevelopmentJavaScript
3 Comments2 Solutions263 ViewsLast Modified:
How to make java based menu open links in new browser windows? I have the code below (simplified the number of menus displayed) with menus for download MDAC and .Net framework 2.0. Currently all links open in the same window which is fine in some scenarios but not in others.

So lets assume that MDAC should open in the same window (which currently works), but I want to open the .net framework download link in a new window, how do I achieve that? I can modify the rest of the menus myself (something like 30, and modify with changes as needed).

I'm assuming that the code in the writeDrop function needs to be modified? Please include a code example and description on how to add that functionality.

Attached zip file with source files.
var fix = 1; var delay = 2000; var modd = 0;
var bar = new menuBar();
bar.addMenu('Links');
bar.addItem('http://www.microsoft.com/downloads/details.aspx?FamilyID=6c050fe3-c795-4b7d-b037-185d0506396c&DisplayLang=en','MDAC');
bar.addItem('http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5&displaylang=en','.Net framework 2.0');
 
 
var blc = '#ffffff';var blh = '#ffffff';var bla = '#a4ffff';var lc = '#0000ff';var lh = '#0000ff';var la = '#0000ff';
 
function menuBar() 
{
this.jj = -1;this.kk = 0;this.mO = new Array();this.addMenu = addMenu;this.addItem = addItem;this.writeBar = writeBar;
this.writeDrop = writeDrop;
}
 
function addMenu(main) 
{
this.mO[++this.jj] = new Object();this.mO[this.jj].main = main;this.kk = 0;this.mO[this.jj].link = new Array();
this.mO[this.jj].name = new Array();
}
 
function addItem(link,name) 
{
this.mO[this.jj].link[this.kk] = link;this.mO[this.jj].name[this.kk++] = name;
}
 
function writeBar() 
{
for (var i=1;i <= this.mO.length; i++)
{document.write('<span id="navMenu'+i+'" class="mH">'+this.mO[i-1].main+'<\/span>');
}
 }
 
function writeDrop() 
{
for (var i=1;i <= this.mO.length; i++)
{document.write('<div id="dropMenu'+i+'" class="mD">\r\n');for (var h=0;h < this.mO[i-1].link.length; h++)
{document.write('<a class="mL" href="'+this.mO[i-1].link[h]+'">'+this.mO[i-1].name[h]+'<\/a>\r\n');
}
document.write('<\/div>\r\n');
}
 }
 
if (fix) window.onscroll=sMenu;window.onload=iMenu;var onm = null;var ponm = null;var podm = null;var ndm = bar.mO.length;
 
function posY() 
{
return typeof window.pageYOffset != 'undefined' ? window.pageYOffset:document.documentElement.scrollTop? 
document.documentElement.scrollTop: document.body.scrollTop?document.body.scrollTop:0;
}
 
function sMenu() 
{
document.getElementById('mB').style.top = posY() + 'px'; for (i=1; i<=ndm; i++) 
{menuName = 'dropMenu' + i;odm = document.getElementById(menuName); 
if (onm) {var yPos = onm.offsetParent.offsetTop + onm.offsetParent.offsetHeight;odm.style.top = yPos + 'px';
}
 }
  }
 
function iMenu() 
{
if (document.getElementById) {document.onclick = mHide; for (i=1; i<=ndm; i++) 
{menuName = 'dropMenu' + i; navName = 'navMenu' + i; odm = document.getElementById(menuName); 
onm = document.getElementById(navName); 
odm.style.visibility = 'hidden'; 
onm.onmouseover =  mHov; onm.onmouseout = mOut;
}
 onm = null;
 }
  return;
  }
 
function  mHov(e) 
{
if (modd) clearTimeout(modd);
document.onclick = null; 
honm = document.getElementById(this.id); 
if (honm != onm) {honm.style.color = lh; honm.style.backgroundColor = blh;} 
menuName = 'drop' + this.id.substring(3,this.id.length); 
odm = document.getElementById(menuName); 
if (podm == odm) {mHide(); return;} 
if (podm != null) mHide(); onm = document.getElementById(this.id); 
if ((ponm != onm ) || (podm == null)) {onm.style.color = la; onm.style.backgroundColor = bla;} 
if (odm) {xPos = onm.offsetParent.offsetLeft + onm.offsetLeft; 
yPos = onm.offsetParent.offsetTop + onm.offsetParent.offsetHeight; 
odm.style.left = xPos + 'px'; odm.style.top = yPos + 'px'; odm.style.visibility = 'visible'; 
odm.onmouseover = omov; odm.onmouseout = omot; podm = odm; ponm = onm;
}
 }
 
function omov() {if (modd) clearTimeout(modd);}
function omot() {modd = setTimeout('mHide()',delay);}
 
function mOut(e) 
{modd = setTimeout('mHide()',delay);
document.onclick = mHide;oonm = document.getElementById(this.id); 
if (oonm != onm) {oonm.style.color = lc; oonm.style.backgroundColor = blc;
}
 }
 
function mHide() 
{document.onclick = null; if (podm) {podm.style.visibility = 'hidden'; 
podm = null; ponm.style.color = lc; ponm.style.backgroundColor = blc;} onm = null;}
if (fix) {var ag = navigator.userAgent.toLowerCase();var isG = (ag.indexOf('gecko') != -1);var isR=0;
if (isG) {t = ag.split("rv:"); isR = parseFloat(t[1]);}if (isR && isR<1) setInterval('sMenu()',50);}
Menu.zip
ASKER CERTIFIED SOLUTION
awp5379

Our community of experts have been thoroughly vetted for their expertise and industry experience.

Join our community to see this answer!
Unlock 2 Answers and 3 Comments.
Start Free Trial
Learn from the best

Network and collaborate with thousands of CTOs, CISOs, and IT Pros rooting for you and your success.

Andrew Hancock - VMware vExpert
See if this solution works for you by signing up for a 7 day free trial.
Unlock 2 Answers and 3 Comments.
Try for 7 days

”The time we save is the biggest benefit of E-E to our team. What could take multiple guys 2 hours or more each to find is accessed in around 15 minutes on Experts Exchange.

-Mike Kapnisakis, Warner Bros