# Cmd-Befehl: Link in neuem Fenster öffnen?



## hydrido (24. Februar 2004)

Hallo,

bin gerade beim ändern eines Menüs, mit Hilfe Java Skript. Ich will bei den Menu Einträgen nicht mit 'href' arbeiten, da dann der Link nur auf dem Wort funktioniert, nicht aber auf dem ganzen Menüeintrag. Beim verwendeten cmd-Befehl aber habe ich noch keine Möglichkeit gefunden, die verlinkte Seite in einem neuen Fenster zu öffnen. Habt ihr eine Idee?

Hier Teile des Codes:  <DIV Id="menuBar" class="menuBar" >
    <DIV Id="Bar1" class="Bar"  menu="menu1">Home</DIV>
    <DIV Id="Bar2" class="Bar"  menu="menu2">Links</DIV>

</DIV>
<!--MenuItem Definition -->

<div Id="menu1" class="menu" >
   <div Id="menuItem1_1" class="menuItem" title="http://www.hydrant.de" cmd="http://www.hydrant.de/">Intro</div>
   <div Id="menuItem1_2" class="menuItem" title="http://www.hydrant.de/index2.htm" cmd="http://www.hydrant.de/index2.htm">Startseite</div>
</div>
<div Id="menu2" class="menu">
   <div Id="menuItem2_1" class="menuItem" cmd="http://www.hydrant.de/links/">Links</div>
</div>
....

Habt ihr eine Idee?

Danke und Gruß
michi


----------



## Sven Mintel (24. Februar 2004)

Kann man mal das Skript dazu sehen.... "cmd" ist nichts, was mir bekannt wäre.

Ansonsten öffnet man neue Fenster mit "window.open()" ....

wenn du also bspw. statt
	
	
	



```
cmd="http://www.hydrant.de/links/"
```
....
	
	
	



```
onclick="window.open('http://www.hydrant.de/links/')"
```
 schreibst, hätte das den gewünschten Effekt.


----------



## hydrido (24. Februar 2004)

*es geht!*

Juhuu! Es funktioniert - Vielen Dank!

Anbei noch das Javaskript   

__________
	
	
	



```
_______________________________
function InitMenu()
   {
     var bar = menuBar.children     

     for(var i=0;i < bar.length;i++) 
        {
          var menu=eval(bar[i].menu)
          menu.style.visibility = "hidden"
          bar[i].onmouseover = new Function("ShowMenu("+bar[i].id+")")
          var Items = menu.children
          for(var j=0; j<Items.length; j++)
            {
              var menuItem = eval(Items[j].id)
                
                if(menuItem.menu != null)
                   { 
                    menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
                    //var tmp = eval(menuItem.id+"_Arrow")
                    // tmp.style.pixelLeft = menu.getBoundingClientRect().Right //- tmp.offsetWidth - 15
                    FindSubMenu(menuItem.menu)}
               
                 if(menuItem.cmd != null) 
                   {
                   menuItem.onclick = new Function("Do("+menuItem.id+")") } 
                   
              menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
            
            }    
        
        }  
   }
   function FindSubMenu(subMenu)
   {
         var menu=eval(subMenu)
         var Items = menu.children
          for(var j=0; j<Items.length; j++)
            {
              menu.style.visibility = "hidden"
              var menuItem = eval(Items[j].id)
              
              
              if(menuItem.menu!= null)
                 {
                    menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
                    // var tmp = eval(menuItem.id+"_Arrow")
                    //tmp.style.pixelLeft = 35 //menuItem.getBoundingClientRect().right - tmp.offsetWidth - 15
                    FindSubMenu(menuItem.menu)
                 }

                 if(menuItem.cmd != null) 
                   {
                   menuItem.onclick = new Function("Do("+menuItem.id+")") } 
                  
              menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
                 
            }  
   } 
   function ShowMenu(obj)
   {
     HideMenu(menuBar)
     var menu = eval(obj.menu)
     var bar = eval(obj.id)
     bar.className="barOver"
     menu.style.visibility = "visible"
     menu.style.pixelTop =  obj.getBoundingClientRect().top + obj.offsetHeight + Bdy.scrollTop
     menu.style.pixelLeft = obj.getBoundingClientRect().left + Bdy.scrollLeft
   }
   
   function highlight(obj)
   {
     var PElement = eval(obj.parentElement.id)
     if(PElement.hasChildNodes() == true)
     {  var Elements = PElement.children
       for(var i=0;i<Elements.length;i++)
       {
          TE = eval(Elements[i].id)
          TE.className = "menuItem"
       }
      } 
     obj.className="ItemMouseOver"
     window.defaultStatus = obj.title
     ShowSubMenu(obj)
   }
   
   function Do(obj)
   {
    var cmd = eval(obj).cmd	
    window.navigate(cmd)
     
   }
   
   function HideMenu(obj)
   {
          if(obj.hasChildNodes()==true)
              {  
                 var child = obj.children     
                 
                 for(var j =0;j<child.length;j++)
                  {
                     if (child[j].className=="barOver")
                     {var bar = eval(child[j].id)
                      bar.className="Bar"}
                      
                     if(child[j].menu != null)
                       {
                          var childMenu = eval(child[j].menu)
                          if(childMenu.hasChildNodes()==true) 
                               HideMenu(childMenu)
                          
                           childMenu.style.visibility = "hidden" 
                         }
                  }
              
              }
   }
  function ShowSubMenu(obj)
  {
     PMenu = eval(obj.parentElement.id)
      HideMenu(PMenu)
     if(obj.menu != null)
     {
     var menu = eval(obj.menu)
     menu.style.visibility = "visible"
     menu.style.pixelTop =  obj.getBoundingClientRect().top + Bdy.scrollTop
     menu.style.pixelLeft = obj.getBoundingClientRect().right + Bdy.scrollLeft
     if(menu.getBoundingClientRect().right > window.screen.availWidth )
       menu.style.pixelLeft = obj.getBoundingClientRect().left - menu.offsetWidth
    }
  } 





 ///////////////////CascadedDropdown Menu/////////////////
 //Date : 08/09/2001               						//
 //Version : 1.0        								//
 //Author Mr.Arun N Kumar	                            //
 //EMail: n_arunk@hotmail.com					//		
 /////////////////////////////////////////////////////////
 // Modifications on this code is not recomended
 // Suggestions are welcome
```


----------



## hydrido (24. Februar 2004)

*noch was*

das Skript macht mir noch ein einer Stelle Probleme. Wenn man das Menu mit mehreren Einträgen hat, und den Webbrowser verkleinert (Breite) auf ca. 50%, verkleinert sich auch das Menü (Zeilenumbruch)  und der IE steht und reagiert nicht mehr.

Werde den Effekt mit einer fest vorgegebenen Breite verhindert.

Gruß
michi


----------



## Spacedoener (24. Februar 2004)

*Re: es geht!*



			
				hydrido hat gesagt.:
			
		

> Juhuu! Es funktioniert - Vielen Dank!



Anbei noch das Javaskript   

_________________________________________

```
function InitMenu()
   {
     var bar = menuBar.children     

     for(var i=0;i < bar.length;i++) 
        {
          var menu=eval(bar[i].menu)
          menu.style.visibility = "hidden"
          bar[i].onmouseover = new Function("ShowMenu("+bar[i].id+")")
          var Items = menu.children
          for(var j=0; j<Items.length; j++)
            {
              var menuItem = eval(Items[j].id)
                
                if(menuItem.menu != null)
                   { 
                    menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
                    //var tmp = eval(menuItem.id+"_Arrow")
                    // tmp.style.pixelLeft = menu.getBoundingClientRect().Right //- tmp.offsetWidth - 15
                    FindSubMenu(menuItem.menu)}
               
                 if(menuItem.cmd != null) 
                   {
                   menuItem.onclick = new Function("Do("+menuItem.id+")") } 
                   
              menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
            
            }    
        
        }  
   }
   function FindSubMenu(subMenu)
   {
         var menu=eval(subMenu)
         var Items = menu.children
          for(var j=0; j<Items.length; j++)
            {
              menu.style.visibility = "hidden"
              var menuItem = eval(Items[j].id)
              
              
              if(menuItem.menu!= null)
                 {
                    menuItem.innerHTML += "<Span Id="+menuItem.id+"_Arrow class='Arrow'>4</Span>"
                    // var tmp = eval(menuItem.id+"_Arrow")
                    //tmp.style.pixelLeft = 35 //menuItem.getBoundingClientRect().right - tmp.offsetWidth - 15
                    FindSubMenu(menuItem.menu)
                 }

                 if(menuItem.cmd != null) 
                   {
                   menuItem.onclick = new Function("Do("+menuItem.id+")") } 
                  
              menuItem.onmouseover = new Function("highlight("+Items[j].id+")")
                 
            }  
   } 
   function ShowMenu(obj)
   {
     HideMenu(menuBar)
     var menu = eval(obj.menu)
     var bar = eval(obj.id)
     bar.className="barOver"
     menu.style.visibility = "visible"
     menu.style.pixelTop =  obj.getBoundingClientRect().top + obj.offsetHeight + Bdy.scrollTop
     menu.style.pixelLeft = obj.getBoundingClientRect().left + Bdy.scrollLeft
   }
   
   function highlight(obj)
   {
     var PElement = eval(obj.parentElement.id)
     if(PElement.hasChildNodes() == true)
     {  var Elements = PElement.children
       for(var i=0;i<Elements.length;i++)
       {
          TE = eval(Elements[i].id)
          TE.className = "menuItem"
       }
      } 
     obj.className="ItemMouseOver"
     window.defaultStatus = obj.title
     ShowSubMenu(obj)
   }
   
   function Do(obj)
   {
    var cmd = eval(obj).cmd	
    window.navigate(cmd)
     
   }
   
   function HideMenu(obj)
   {
          if(obj.hasChildNodes()==true)
              {  
                 var child = obj.children     
                 
                 for(var j =0;j<child.length;j++)
                  {
                     if (child[j].className=="barOver")
                     {var bar = eval(child[j].id)
                      bar.className="Bar"}
                      
                     if(child[j].menu != null)
                       {
                          var childMenu = eval(child[j].menu)
                          if(childMenu.hasChildNodes()==true) 
                               HideMenu(childMenu)
                          
                           childMenu.style.visibility = "hidden" 
                         }
                  }
              
              }
   }
  function ShowSubMenu(obj)
  {
     PMenu = eval(obj.parentElement.id)
      HideMenu(PMenu)
     if(obj.menu != null)
     {
     var menu = eval(obj.menu)
     menu.style.visibility = "visible"
     menu.style.pixelTop =  obj.getBoundingClientRect().top + Bdy.scrollTop
     menu.style.pixelLeft = obj.getBoundingClientRect().right + Bdy.scrollLeft
     if(menu.getBoundingClientRect().right > window.screen.availWidth )
       menu.style.pixelLeft = obj.getBoundingClientRect().left - menu.offsetWidth
    }
  } 





 ///////////////////CascadedDropdown Menu/////////////////
 //Date : 08/09/2001               						//
 //Version : 1.0        								//
 //Author Mr.Arun N Kumar	                            //
 //EMail: n_arunk@hotmail.com							//		
 /////////////////////////////////////////////////////////
 // Modifications on this code is not recomended
 // Suggestions are welcome
```

Wie und wo startet das ding (also dein Script) und mit was... ?
Blickt da jemand noch durch ?

Würde mich sehr freuen, wenn du mir da bisschen Helfen könntest...

MfG
Spacedoener


----------



## hydrido (25. Februar 2004)

Hi,

na klar, aber das einzige was noch fehlt ist der Aufruf im Head

<script language="javascript" src="CascadeMenu.js"></script>

welches unten rein kopiert ist, und der Aufruf im Body der eigentlichen html-Seite:

__________________________

<BODY OnLoad="InitMenu()" Onclick="HideMenu(menuBar)" ID="Bdy" bgColor="#D0D0D0">


<DIV Id="menuBar" class="menuBar" >
    <DIV Id="Bar1" class="Bar"  menu="menu1">Home</DIV>
    <DIV Id="Bar2" class="Bar"  menu="menu2">Links</DIV>


</DIV>
<!--MenuItem Definition -->

<div Id="menu1" class="menu" >
   <div Id="menuItem1_1" class="menuItem" title="http://www.hydrant.de" onclick="window.open('http://www.hydrant.de/links/')">Intro</div>
   <div Id="menuItem1_2" class="menuItem" title="http://www.hydrant.de/index2.htm" onclick="window.open('http://www.hydrant.de/index2.htm')">Startseite</div>
</div>

....


____________________________________

Dass du das Skript nochmal in den Thread kopiert hast, trägt sicherlich nicht zu lesbarkeit bei.     

Aber wie gesagt, jetzt funktioniert es.

Gruß
michi


----------



## Spacedoener (27. Februar 2004)

> _Original geschrieben von hydrido _
> *Hi,
> 
> na klar, aber das einzige was noch fehlt ist der Aufruf im Head
> ...




Sorry aber dein Script so wie du es hier gepostet hast, wimmelt von fehlern, es funktioniert nicht...    
Ist reinste Kaos irgendwie...
Kannst du das mal nicht etwas besser mal posten, so das man es auch direkt sofort versteht ?

MfG
Spacedoener


----------

