We help IT Professionals succeed at work.
Get Started

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

awp5379
awp5379 asked
on
261 Views
Last Modified: 2013-11-23
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);}

Open in new window

Menu.zip
Comment
Watch Question
Commented:
This problem has been solved!
Unlock 2 Answers and 3 Comments.
See Answers
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE