Hallo,
ich habe im Internet eine Funktion gefunden, die beim Mouseover ein Menü erscheinen lässt und es funktioniert wunderbar: im <BODY> onmouseover="dropdownmenu" usw., aber ich möchte verstehen, wie ist dropmenuobj zustandekommt. Ist es eine Variable oder eine Funktion oder was ist es? Ich habe nirgendwo es gefunden und im Code selbst sehe ich nicht, wo ist es definiert?
Danke für die Antwort
#choicelayer {
position:absolute;
background-color: #E3FFB0;
border:1px solid black;
border-bottom-width: 0;
font:normal 12px Verdana;
line-height:18px;
z-index:100;}
</style>
<script language="JavaScript1.2">
var adr,nam;
function fenster (adr,nam)
{
var win;
win=window.open(adr,nam);
}
var menu=new Array();
menu[0]='test';
menu[1]='test2';
menu[2]='test3';
menu[3]='test4';
var disappeardelay=250;
var horizontaloffset=2 //horizontal offset of menu from default location. (0-5 is a good value)
var ie4=document.all;
var ns6=document.getElementById &&!document.all;
if (ie4||ns6)
document.write('<div id="choicelayer" style="visibility:hidden;width: 160px" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')
function getposOffset(what, offsettype)
{
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null)
{
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}
function showhide (obj, e, visible, hidden, menuwidth)
{
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=menuwidth
if (e.type=="mouseover")
obj.visibility=visible
}
function populatemenu (what)
{
if (ie4||ns6)
dropmenuobj.innerHTML=what.join("")
}
function dropdownmenu (obj, e, menucontents, menuwidth)
{
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
//clearhidemenu()
dropmenuobj=document.getElementByld? document.getElementById("choicelayer") : choicelayer
populatemenu(menucontents)
if (ie4||ns6)
{
showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+horizontaloffset+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px"
}
//return clickreturnvalue()
}
/*function clearhidemenu()
{
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}
*/
function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x-obj.offsetWidth < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth
}
else{
var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move menu up?
edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either? (position at top of viewable window then)
edgeoffset=dropmenuobj.y
}
}
return edgeoffset
}
</script>
ich habe im Internet eine Funktion gefunden, die beim Mouseover ein Menü erscheinen lässt und es funktioniert wunderbar: im <BODY> onmouseover="dropdownmenu" usw., aber ich möchte verstehen, wie ist dropmenuobj zustandekommt. Ist es eine Variable oder eine Funktion oder was ist es? Ich habe nirgendwo es gefunden und im Code selbst sehe ich nicht, wo ist es definiert?
Danke für die Antwort
#choicelayer {
position:absolute;
background-color: #E3FFB0;
border:1px solid black;
border-bottom-width: 0;
font:normal 12px Verdana;
line-height:18px;
z-index:100;}
</style>
<script language="JavaScript1.2">
var adr,nam;
function fenster (adr,nam)
{
var win;
win=window.open(adr,nam);
}
var menu=new Array();
menu[0]='test';
menu[1]='test2';
menu[2]='test3';
menu[3]='test4';
var disappeardelay=250;
var horizontaloffset=2 //horizontal offset of menu from default location. (0-5 is a good value)
var ie4=document.all;
var ns6=document.getElementById &&!document.all;
if (ie4||ns6)
document.write('<div id="choicelayer" style="visibility:hidden;width: 160px" onMouseover="clearhidemenu()" onMouseout="dynamichide(event)"></div>')
function getposOffset(what, offsettype)
{
var totaloffset=(offsettype=="left")? what.offsetLeft : what.offsetTop;
var parentEl=what.offsetParent;
while (parentEl!=null)
{
totaloffset=(offsettype=="left")? totaloffset+parentEl.offsetLeft : totaloffset+parentEl.offsetTop;
parentEl=parentEl.offsetParent;
}
return totaloffset;
}
function showhide (obj, e, visible, hidden, menuwidth)
{
if (ie4||ns6)
dropmenuobj.style.left=dropmenuobj.style.top=-500
dropmenuobj.widthobj=dropmenuobj.style
dropmenuobj.widthobj.width=menuwidth
if (e.type=="mouseover")
obj.visibility=visible
}
function populatemenu (what)
{
if (ie4||ns6)
dropmenuobj.innerHTML=what.join("")
}
function dropdownmenu (obj, e, menucontents, menuwidth)
{
if (window.event) event.cancelBubble=true
else if (e.stopPropagation) e.stopPropagation()
//clearhidemenu()
dropmenuobj=document.getElementByld? document.getElementById("choicelayer") : choicelayer
populatemenu(menucontents)
if (ie4||ns6)
{
showhide(dropmenuobj.style, e, "visible", "hidden", menuwidth)
dropmenuobj.x=getposOffset(obj, "left")
dropmenuobj.y=getposOffset(obj, "top")
dropmenuobj.style.left=dropmenuobj.x-clearbrowseredge(obj, "rightedge")+obj.offsetWidth+horizontaloffset+"px"
dropmenuobj.style.top=dropmenuobj.y-clearbrowseredge(obj, "bottomedge")+"px"
}
//return clickreturnvalue()
}
/*function clearhidemenu()
{
if (typeof delayhide!="undefined")
clearTimeout(delayhide)
}
*/
function clearbrowseredge(obj, whichedge){
var edgeoffset=0
if (whichedge=="rightedge"){
var windowedge=ie4 && !window.opera? iecompattest().scrollLeft+iecompattest().clientWidth-15 : window.pageXOffset+window.innerWidth-15
dropmenuobj.contentmeasure=dropmenuobj.offsetWidth
if (windowedge-dropmenuobj.x-obj.offsetWidth < dropmenuobj.contentmeasure)
edgeoffset=dropmenuobj.contentmeasure+obj.offsetWidth
}
else{
var topedge=ie4 && !window.opera? iecompattest().scrollTop : window.pageYOffset
var windowedge=ie4 && !window.opera? iecompattest().scrollTop+iecompattest().clientHeight-15 : window.pageYOffset+window.innerHeight-18
dropmenuobj.contentmeasure=dropmenuobj.offsetHeight
if (windowedge-dropmenuobj.y < dropmenuobj.contentmeasure){ //move menu up?
edgeoffset=dropmenuobj.contentmeasure-obj.offsetHeight
if ((dropmenuobj.y-topedge)<dropmenuobj.contentmeasure) //up no good either? (position at top of viewable window then)
edgeoffset=dropmenuobj.y
}
}
return edgeoffset
}
</script>