20. januar 2006 - 15:30Der er
25 kommentarer og 1 løsning
ændring af script mht til img i undermenuer i pop-up menu
HEy
er der nogle der kan fortælle mig hvilke ændringer / tilføjelser til javascriptet der er lavet for at indsætte billeder i undermenuerne i en pop-up menu.
-- derefter skal du også modificere funktionen writeMenus, hvis du kigger i den udgave, de bruger på Lampefeber, skal du ca. 80 linjer ned, der er tilføjet et par linjer og ændret i en ...
den eneste mm_menu.js jeg kan åbne er min egen og jeg kan ikke finde noget der er tagget som rettet. hvis du nu får min mm_menu.js kan du så ikke skære det ud i pap hvor rettelsen skal ligge.
/** * mm_menu 20MAR2002 Version 6.0 * Andy Finnell, March 2002 * Copyright (c) 2000-2002 Macromedia, Inc. * * based on menu.js * by gary smith, July 1997 * Copyright (c) 1997-1999 Netscape Communications Corp. * * Netscape grants you a royalty free license to use or modify this * software provided that this copyright notice appears on all copies. * This software is provided "AS IS," without a warranty of any kind. */ function Menu(label, mw, mh, fnt, fs, fclr, fhclr, bg, bgh, halgn, valgn, pad, space, to, sx, sy, srel, opq, vert, idt, aw, ah) { this.version = "020320 [Menu; mm_menu.js]"; this.type = "Menu"; this.menuWidth = mw; this.menuItemHeight = mh; this.fontSize = fs; this.fontWeight = "plain"; this.fontFamily = fnt; this.fontColor = fclr; this.fontColorHilite = fhclr; this.bgColor = "#555555"; this.menuBorder = 1; this.menuBgOpaque=opq; this.menuItemBorder = 1; this.menuItemIndent = idt; this.menuItemBgColor = bg; this.menuItemVAlign = valgn; this.menuItemHAlign = halgn; this.menuItemPadding = pad; this.menuItemSpacing = space; this.menuLiteBgColor = "#ffffff"; this.menuBorderBgColor = "#777777"; this.menuHiliteBgColor = bgh; this.menuContainerBgColor = "#cccccc"; this.childMenuIcon = "arrows.gif"; this.submenuXOffset = sx; this.submenuYOffset = sy; this.submenuRelativeToItem = srel; this.vertical = vert; this.items = new Array(); this.actions = new Array(); this.childMenus = new Array(); this.hideOnMouseOut = true; this.hideTimeout = to; this.addMenuItem = addMenuItem; this.writeMenus = writeMenus; this.MM_showMenu = MM_showMenu; this.onMenuItemOver = onMenuItemOver; this.onMenuItemAction = onMenuItemAction; this.hideMenu = hideMenu; this.hideChildMenu = hideChildMenu; if (!window.menus) window.menus = new Array(); this.label = " " + label; window.menus[this.label] = this; window.menus[window.menus.length] = this; if (!window.activeMenus) window.activeMenus = new Array(); }
function FIND(item) { if( window.mmIsOpera ) return(document.getElementById(item)); if (document.all) return(document.all[item]); if (document.getElementById) return(document.getElementById(item)); return(false); }
function writeMenus(container) { if (window.triedToWriteMenus) return; var agt = navigator.userAgent.toLowerCase(); window.mmIsOpera = agt.indexOf("opera") != -1; if (!container && document.layers) { window.delayWriteMenus = this.writeMenus; var timer = setTimeout('delayWriteMenus()', 500); container = new Layer(100); clearTimeout(timer); } else if (document.all || document.hasChildNodes || window.mmIsOpera) { document.writeln('<span id="menuContainer"></span>'); container = FIND("menuContainer"); }
window.mmHideMenuTimer = null; if (!container) return; window.triedToWriteMenus = true; container.isContainer = true; container.menus = new Array(); for (var i=0; i<window.menus.length; i++) container.menus[i] = window.menus[i]; window.menus.length = 0; var countMenus = 0; var countItems = 0; var top = 0; var content = ''; var lrs = false; var theStat = ""; var tsc = 0; if (document.layers) lrs = true; for (var i=0; i<container.menus.length; i++, countMenus++) { var menu = container.menus[i]; if (menu.bgImageUp || !menu.menuBgOpaque) { menu.menuBorder = 0; menu.menuItemBorder = 0; } if (lrs) { var menuLayer = new Layer(100, container); var lite = new Layer(100, menuLayer); lite.top = menu.menuBorder; lite.left = menu.menuBorder; var body = new Layer(100, lite); body.top = menu.menuBorder; body.left = menu.menuBorder; } else { content += ''+ '<div id="menuLayer'+ countMenus +'" style="position:absolute;z-index:1;left:10px;top:'+ (i * 100) +'px;visibility:hidden;color:' + menu.menuBorderBgColor + ';">\n'+ ' <div id="menuLite'+ countMenus +'" style="position:absolute;z-index:1;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;" onmouseout="mouseoutMenu();">\n'+ ' <div id="menuFg'+ countMenus +'" style="position:absolute;left:'+ menu.menuBorder +'px;top:'+ menu.menuBorder +'px;visibility:hide;">\n'+ ''; } var x=i; for (var i=0; i<menu.items.length; i++) { var item = menu.items[i]; var childMenu = false; var defaultHeight = menu.fontSize+2*menu.menuItemPadding; if (item.label) { item = item.label; childMenu = true; } menu.menuItemHeight = menu.menuItemHeight || defaultHeight; var itemProps = ''; if( menu.fontFamily != '' ) itemProps += 'font-family:' + menu.fontFamily +';'; itemProps += 'font-weight:' + menu.fontWeight + ';fontSize:' + menu.fontSize + 'px;'; if (menu.fontStyle) itemProps += 'font-style:' + menu.fontStyle + ';'; if (document.all || window.mmIsOpera) itemProps += 'font-size:' + menu.fontSize + 'px;" onmouseover="onMenuItemOver(null,this);" onclick="onMenuItemAction(null,this);'; else if (!document.layers) { itemProps += 'font-size:' + menu.fontSize + 'px;'; } var l; if (lrs) { var lw = menu.menuWidth; if( menu.menuItemHAlign == 'right' ) lw -= menu.menuItemPadding; l = new Layer(lw,body); } var itemLeft = 0; var itemTop = i*menu.menuItemHeight; if( !menu.vertical ) { itemLeft = i*menu.menuWidth; itemTop = 0; } var dTag = '<div id="menuItem'+ countItems +'" style="position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">'; var dClose = '</div>' if (menu.bgImageUp) dTag = '<div id="menuItem'+ countItems +'" style="background:url('+menu.bgImageUp+');position:absolute;left:' + itemLeft + 'px;top:'+ itemTop +'px;'+ itemProps +'">';
var left = 0, top = 0, right = 0, bottom = 0; left = 1 + menu.menuItemPadding + menu.menuItemIndent; right = left + menu.menuWidth - 2*menu.menuItemPadding - menu.menuItemIndent; if( menu.menuItemVAlign == 'top' ) top = menu.menuItemPadding; if( menu.menuItemVAlign == 'bottom' ) top = menu.menuItemHeight-menu.fontSize-1-menu.menuItemPadding; if( menu.menuItemVAlign == 'middle' ) top = ((menu.menuItemHeight/2)-(menu.fontSize/2)-1); bottom = menu.menuItemHeight - 2*menu.menuItemPadding; var textProps = 'position:absolute;left:' + left + 'px;top:' + top + 'px;'; if (lrs) { textProps +=itemProps + 'right:' + right + ';bottom:' + bottom + ';'; dTag = ""; dClose = ""; }
function NS4resize() { if (NS4sIW != window.innerWidth || NS4sIH != window.innerHeight) window.location.reload(); }
function onMenuItemOver(e, l) { MM_clearTimeout(); l = l || this; var a = window.ActiveMenuItem; if (document.layers) { if (a) { a.document.bgColor = a.saveColor; if (a.hilite) a.hilite.visibility = "hidden"; if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp; a.focusItem.top = -100; a.clicked = false; } if (l.hilite) { l.document.bgColor = l.menuHiliteBgColor; l.zIndex = 1; l.hilite.visibility = "inherit"; l.hilite.zIndex = 2; l.document.layers[1].zIndex = 1; l.focusItem.zIndex = this.zIndex +2; } if (l.Menu.bgImageOver) l.background.src = l.Menu.bgImageOver; l.focusItem.top = this.top; l.focusItem.left = this.left; l.focusItem.clip.width = l.clip.width; l.focusItem.clip.height = l.clip.height; l.Menu.hideChildMenu(l); } else if (l.style && l.Menu) { if (a) { a.style.backgroundColor = a.saveColor; if (a.hilite) a.hilite.style.visibility = "hidden"; if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit"; if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")";; } l.style.backgroundColor = l.menuHiliteBgColor; l.zIndex = 1; if (l.Menu.bgImageOver) l.style.background = "url(" + l.Menu.bgImageOver +")"; if (l.hilite) { l.hilite.style.visibility = "inherit"; if( l.hiliteShim ) l.hiliteShim.style.visibility = "visible"; } l.focusItem.style.pixelTop = l.style.pixelTop; l.focusItem.style.top = l.focusItem.style.pixelTop + 'px'; l.focusItem.style.pixelLeft = l.style.pixelLeft; l.focusItem.style.left = l.focusItem.style.pixelLeft + 'px'; l.focusItem.style.zIndex = l.zIndex +1; l.Menu.hideChildMenu(l); } else return; window.ActiveMenuItem = l; }
function onMenuItemAction(e, l) { l = window.ActiveMenuItem; if (!l) return; hideActiveMenus(); if (l.mmaction) eval("" + l.mmaction); window.ActiveMenuItem = 0; }
function MM_clearTimeout() { if (mmHideMenuTimer) clearTimeout(mmHideMenuTimer); mmHideMenuTimer = null; mmDHFlag = false; }
function MM_startTimeout() { if( window.ActiveMenu ) { mmStart = new Date(); mmDHFlag = true; mmHideMenuTimer = setTimeout("mmDoHide()", window.ActiveMenu.Menu.hideTimeout); } }
function mmDoHide() { if (!mmDHFlag || !window.ActiveMenu) return; var elapsed = new Date() - mmStart; var timeout = window.ActiveMenu.Menu.hideTimeout; if (elapsed < timeout) { mmHideMenuTimer = setTimeout("mmDoHide()", timeout+100-elapsed); return; } mmDHFlag = false; hideActiveMenus(); window.ActiveMenuItem = 0; }
function MM_showMenu(menu, x, y, child, imgname) { if (!window.mmWroteMenu) return; MM_clearTimeout(); if (menu) { var obj = FIND(imgname) || document.images[imgname] || document.links[imgname] || document.anchors[imgname]; x = moveXbySlicePos (x, obj); y = moveYbySlicePos (y, obj); } if (document.layers) { if (menu) { var l = menu.menuLayer || menu; l.top = l.left = 1; hideActiveMenus(); if (this.visibility) l = this; window.ActiveMenu = l; } else { var l = child; } if (!l) return; for (var i=0; i<l.layers.length; i++) { if (!l.layers[i].isHilite) l.layers[i].visibility = "inherit"; if (l.layers[i].document.layers.length > 0) MM_showMenu(null, "relative", "relative", l.layers[i]); } if (l.parentLayer) { if (x != "relative") l.parentLayer.left = x || window.pageX || 0; if (l.parentLayer.left + l.clip.width > window.innerWidth) l.parentLayer.left -= (l.parentLayer.left + l.clip.width - window.innerWidth); if (y != "relative") l.parentLayer.top = y || window.pageY || 0; if (l.parentLayer.isContainer) { l.Menu.xOffset = window.pageXOffset; l.Menu.yOffset = window.pageYOffset; l.parentLayer.clip.width = window.ActiveMenu.clip.width +2; l.parentLayer.clip.height = window.ActiveMenu.clip.height +2; if (l.parentLayer.menuContainerBgColor && l.Menu.menuBgOpaque ) l.parentLayer.document.bgColor = l.parentLayer.menuContainerBgColor; } } l.visibility = "inherit"; if (l.Menu) l.Menu.container.visibility = "inherit"; } else if (FIND("menuItem0")) { var l = menu.menuLayer || menu; hideActiveMenus(); if (typeof(l) == "string") l = FIND(l); window.ActiveMenu = l; var s = l.style; s.visibility = "inherit"; if (x != "relative") { s.pixelLeft = x || (window.pageX + document.body.scrollLeft) || 0; s.left = s.pixelLeft + 'px'; } if (y != "relative") { s.pixelTop = y || (window.pageY + document.body.scrollTop) || 0; s.top = s.pixelTop + 'px'; } l.Menu.xOffset = document.body.scrollLeft; l.Menu.yOffset = document.body.scrollTop; } if (menu) window.activeMenus[window.activeMenus.length] = l; MM_clearTimeout(); }
function onMenuItemDown(e, l) { var a = window.ActiveMenuItem; if (document.layers && a) { a.eX = e.pageX; a.eY = e.pageY; a.clicked = true; } }
function mouseupMenu(e) { hideMenu(true, e); hideActiveMenus(); return true; }
function getExplorerVersion() { var ieVers = parseFloat(navigator.appVersion); if( navigator.appName != 'Microsoft Internet Explorer' ) return ieVers; var tempVers = navigator.appVersion; var i = tempVers.indexOf( 'MSIE ' ); if( i >= 0 ) { tempVers = tempVers.substring( i+5 ); ieVers = parseFloat( tempVers ); } return ieVers; }
function mouseoutMenu() { if ((navigator.appName == "Microsoft Internet Explorer") && (getExplorerVersion() < 4.5)) return true; hideMenu(false, false); return true; }
function hideMenu(mouseup, e) { var a = window.ActiveMenuItem; if (a && document.layers) { a.document.bgColor = a.saveColor; a.focusItem.top = -30; if (a.hilite) a.hilite.visibility = "hidden"; if (mouseup && a.mmaction && a.clicked && window.ActiveMenu) { if (a.eX <= e.pageX+15 && a.eX >= e.pageX-15 && a.eY <= e.pageY+10 && a.eY >= e.pageY-10) { setTimeout('window.ActiveMenu.Menu.onMenuItemAction();', 500); } } a.clicked = false; if (a.Menu.bgImageOver) a.background.src = a.Menu.bgImageUp; } else if (window.ActiveMenu && FIND("menuItem0")) { if (a) { a.style.backgroundColor = a.saveColor; if (a.hilite) a.hilite.style.visibility = "hidden"; if (a.hiliteShim) a.hiliteShim.style.visibility = "inherit"; if (a.Menu.bgImageUp) a.style.background = "url(" + a.Menu.bgImageUp +")"; } } if (!mouseup && window.ActiveMenu) { if (window.ActiveMenu.Menu) { if (window.ActiveMenu.Menu.hideOnMouseOut) MM_startTimeout(); return(true); } } return(true); }
function hideActiveMenus() { if (!window.activeMenus) return; for (var i=0; i < window.activeMenus.length; i++) { if (!activeMenus[i]) continue; if (activeMenus[i].visibility && activeMenus[i].Menu && !window.mmIsOpera) { activeMenus[i].visibility = "hidden"; activeMenus[i].Menu.container.visibility = "hidden"; activeMenus[i].Menu.container.clip.left = 0; } else if (activeMenus[i].style) { var s = activeMenus[i].style; s.visibility = "hidden"; s.left = '-200px'; s.top = '-200px'; } } if (window.ActiveMenuItem) hideMenu(false, false); window.activeMenus.length = 0; }
function moveXbySlicePos (x, img) { if (!document.layers) { var onWindows = navigator.platform ? navigator.platform == "Win32" : false; var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5; var par = img; var lastOffset = 0; while(par){ if( par.leftMargin && ! onWindows ) x += parseInt(par.leftMargin); if( (par.offsetLeft != lastOffset) && par.offsetLeft ) x += parseInt(par.offsetLeft); if( par.offsetLeft != 0 ) lastOffset = par.offsetLeft; par = macIE45 ? par.parentElement : par.offsetParent; } } else if (img.x) x += img.x; return x; }
function moveYbySlicePos (y, img) { if(!document.layers) { var onWindows = navigator.platform ? navigator.platform == "Win32" : false; var macIE45 = document.all && !onWindows && getExplorerVersion() == 4.5; var par = img; var lastOffset = 0; while(par){ if( par.topMargin && !onWindows ) y += parseInt(par.topMargin); if( (par.offsetTop != lastOffset) && par.offsetTop ) y += parseInt(par.offsetTop); if( par.offsetTop != 0 ) lastOffset = par.offsetTop; par = macIE45 ? par.parentElement : par.offsetParent; } } else if (img.y >= 0) y += img.y; return y; }
ud ovver det er det også mig der har lavet indlægget med swap image behavior i undermenuer. måske du ved om det er noget der også kan fikses med rettelser i javascripten til menuen?
-- kan du ikke lave en forsimplet udgave og lægge op, for jeg har ikke lyst til at kopiere herfra (og så er det jo også næsten spam af Ekspertens database !-)
har du en email. for jeg har ikke købt domænet til siden endnu. det er til min kones frisør salon der åbner om nogle måneder. hvis du ikke ønsker at få den offentliggjort kan du få min her og så sender jeg en retur.
jeg har også en mm_css_menu.js fil til den tilsvarendde menu der er lavet i fireworks. måske den er mere overskuelig, da den fylder langt under halvdelen af den dreamweaver laver. her er det eneste problem at få knyttet en swap image behavior til hver enkelt undermenu. stylesheetet styrer baggrunden for de enkelte undermenuer med hård hånd.
anyway....du ved med garanti bedre en mig hvad der vil være lettest at lave. eller mindre svært for mit vedkommende. :)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.