Marianne: netscape 7

Beitrag lesen

Hallo, ich habe bei einer webseite ein frameuebergreifendes menu benutzt, dass normalerweise immer funktioniert, nur bei netscape 7 nicht. Der Quelltext ist folgender (leider kenne ich mich mit javaScript nicht richtig aus, ich waere also dankbar fuer jede Hilfe!):

var _isIE4=false,_isNN4=false,_menuTimer=0,_menuOffset=0,frameOffset=4; var popInstance=-1,popRegistered=false,mapRegistered=false,mapX=0,mapY=0; var instanceValid=true,instanceReady=false; var frameWidth=0,frameHeight=0,halfWidth=0,halfHeight=0,contentWidth=0,contentHeight=0,scrollBar=0; var lastInstance=-1,lastIndex=1,holdOn=false; var yxI=new Array(),iCount=0,yxS=new Array(),sCount=0;

function getInstance(_name) {   for (var i=0; i<iCount; i++) {     if (yxI[i].name==_name) { return i; }   }

return -1; }

function setDIM() {   if (_isNN4) {     frameWidth=window.innerWidth; frameHeight=window.innerHeight;     contentWidth=(frameHeight<window.document.height-frameOffset)?(frameWidth-scrollBar+frameOffset):(frameWidth+frameOffset);     contentHeight=(frameWidth<window.document.width-frameOffset)?(frameHeight-scrollBar+frameOffset):(frameHeight+frameOffset);   }   else {     contentWidth=window.document.body.clientWidth; contentHeight=window.document.body.clientHeight;   }

halfWidth=Math.ceil(contentWidth/2); halfHeight=Math.ceil(contentHeight/2); }

function resizeFrame() {   if (_isNN4) {     if (window.innerWidth!=frameWidth || window.innerHeight!=frameHeight) { document.location.reload(); }   }   else {     var oldWidth=contentWidth,oldHeight=contentHeight;     setDIM();     var dx=contentWidth-oldWidth,dy=contentHeight-oldHeight;

if (dx!=0 || dy!=0) {       for (var i=0; i<iCount; i++) {         if ((yxI[i].position==2 || yxI[i].position==3 || yxI[i].position==4) && dx!=0) { yxI[i].holder.xx+=dx; }         if ((yxI[i].position==1 || yxI[i].position==5 || yxI[i].position==8) && dx!=0) { yxI[i].holder.xx+=Math.floor(dx/2); }         if ((yxI[i].position==4 || yxI[i].position==5 || yxI[i].position==6) && dy!=0) { yxI[i].holder.yy+=dy; }         if ((yxI[i].position==3 || yxI[i].position==7 || yxI[i].position==8) && dy!=0) { yxI[i].holder.yy+=Math.floor(dy/2); }

yxI[i].moveInstanceTo(yxI[i].holder.xx,yxI[i].holder.yy);       }     }   } }

function popMenu(e) {   if (!holdOn) {     holdOn=true;

var menuX=0,menuY=0;     if (_isIE4) {       menuX=event.clientX+window.document.body.scrollLeft; menuY=event.clientY+window.document.body.scrollTop;     }     else {       menuX=e.pageX; menuY=e.pageY;     }

for (var i=0; i<iCount; i++) {       if (i==popInstance) {         menuX+=(yxI[i].direction==0 || yxI[i].direction==3)?-_menuOffset:_menuOffset;         menuY+=(yxI[i].direction==0 || yxI[i].direction==1)?-_menuOffset:_menuOffset;

yxI[i].moveInstanceTo(menuX,menuY);         yxI[i].showInstance();       }       else {         yxI[i].hideInstance();       }     }

holdOn=false;   }

return false; }

function mapMenu(e) {   if (_isIE4) {     mapX=event.clientX+window.document.body.scrollLeft; mapY=event.clientY+window.document.body.scrollTop;   }   else {     mapX=e.pageX; mapY=e.pageY;   }

return true; }

function _hideInstance(_instance) { yxI[_instance].timer=eval('setTimeout("yxI['+_instance+'].hideInstance()",'+_menuTimer+')'); } function clearTimer(_instance) { clearTimeout(yxI[_instance].timer); }

function _checkInstance(_instance) {   var holder=yxI[_instance].holder;

if (_isIE4) {     holder.style.pixelLeft=holder.xx+window.document.body.scrollLeft;     holder.style.pixelTop=holder.yy+window.document.body.scrollTop;   }   else {     holder.moveTo(holder.xx+window.pageXOffset,holder.yy+window.pageYOffset);   }   holder.dx=top.getLeft(holder);   holder.dy=top.getTop(holder);

eval('setTimeout("_checkInstance('+_instance+')",'+_menuTimer+')'); }

function _registerPop(_instance) {   popInstance=_instance;

if (_isIE4) {     window.document.ondblclick=popMenu;   }   else {     window.document.onDblClick=popMenu;     window.document.captureEvents(Event.DBLCLICK);   } }

function _registerMap() {   if (_isIE4) {     window.document.onclick=mapMenu;   }   else {     window.document.onClick=mapMenu;     window.document.captureEvents(Event.CLICK);   } }

function _initMenu(_scrollBar) {   window.onunload=delFrame;

_isIE4=top.isIE4; _isNN4=top.isNN4;   _menuTimer=top.menuTimer; _menuOffset=top.menuOffset;

scrollBar=(_scrollBar==0)?0:20;   setDIM();

buildMenu();

if (instanceValid) {     instanceReady=true;     window.onresize=resizeFrame;     top.showMessage("Menu activated");   } }

function _openMap(_name) {   if (!holdOn && instanceReady) {     holdOn=true;

for (var i=0; i<iCount; i++) {       if (yxI[i].name==_name) {         mapX+=((yxI[i].direction==0 || yxI[i].direction==3)?-_menuOffset:_menuOffset);         mapY+=((yxI[i].direction==0 || yxI[i].direction==1)?-_menuOffset:_menuOffset);

yxI[i].moveInstanceTo(mapX,mapY);         yxI[i].showInstance();       }       else {         yxI[i].hideInstance();       }     }

holdOn=false;     return true;   }   return false; }

function _openMenu(_name,mode) {   if (!holdOn && instanceReady) {     holdOn=true;

for (var i=0; i<iCount; i++) {       if (yxI[i].name==_name) {         if (mode) {           yxI[i].initial = true;           yxI[i].menu.initial = true;         }         yxI[i].showInstance();       }       else {         yxI[i].hideInstance();       }     }

holdOn=false;     return true;   }   return false; }

function _closeMenu(_name) {   if (!holdOn && instanceReady) {     holdOn=true;

var iIndex=getInstance(_name);     if (iIndex!=-1) {       if (yxI[iIndex].shown) { _hideInstance(iIndex); }     }

holdOn=false;     return true;   }   return false; }

function _closeMenuNow(_name,mode) {   if (!holdOn && instanceReady) {     holdOn=true;

var iIndex=getInstance(_name);     if (iIndex!=-1) {       if (mode) {         yxI[iIndex].initial = false;         yxI[iIndex].menu.initial = false;       }       if (yxI[iIndex].shown) { yxI[iIndex].hideInstance(); }     }

holdOn=false;     return true;   }   return false; }

function _switchMenu(_name) {   if (!holdOn && instanceReady) {     holdOn=true;

for (var i=0; i<iCount; i++) {       if (yxI[i].name==_name) {         if (yxI[i].shown) {           yxI[i].hideInstance();         }         else {           yxI[i].showInstance();         }       }       else {         yxI[i].hideInstance();       }     }

holdOn=false;     return true;   }   return false; }

function _moveMenuTo(_name,_x,_y) {   if (instanceReady) {     var iIndex=getInstance(_name);     if (iIndex!=-1) {       yxI[iIndex].moveInstanceTo(_x,_y);       return true;     }   }   return false; }

function _moveMenuBy(_name,_x,_y) {   if (instanceReady) {     var iIndex=getInstance(_name);     if (iIndex!=-1) {       yxI[iIndex].moveInstanceBy(_x,_y);       return true;     }   }   return false; }

function dimOBJ(_x,_y,_width,_height,_scrollX,_scrollY) {   this.x=_x; this.y=_y; this.width=_width; this.height=_height; this.scrollX=_scrollX; this.scrollY=_scrollY; }

function _getMenuDim(_name) {   if (instanceReady) {     var iIndex=getInstance(_name);     if (iIndex!=-1) {       if (yxI[iIndex].menu.ready) {         var pad=yxI[iIndex].menu.pad.layer;         if (_isIE4) {           _obj=pad.children[0];           return (new dimOBJ(top._getLeft(pad),top._getTop(pad),_obj.offsetWidth,_obj.offsetHeight,window.document.body.scrollLeft,window.document.body.scrollTop));         }         else {           return (new dimOBJ(pad.pageX,pad.pageY,pad.document.width,pad.document.height,window.pageXOffset,window.pageYOffset));         }       }     }   }   return null; }

function _getItemDim(_name,_item) {   if (instanceReady) {     var iIndex=getInstance(_name);     if (iIndex!=-1) {       if (yxI[iIndex].menu.ready) {         if (_item<yxI[iIndex].menu.items.length) {           var item=yxI[iIndex].menu.items[_item].layer;           if (_isIE4) {             _obj=item.children[0];             return (new dimOBJ(top._getLeft(item),top._getTop(item),_obj.offsetWidth,_obj.offsetHeight,window.document.body.scrollLeft,window.document.body.scrollTop));           }           else {             return (new dimOBJ(item.pageX,item.pageY,item.document.width,item.document.height,window.pageXOffset,window.pageYOffset));           }         }       }     }   }   return null; }

function initMenu(_scrollBar) {   if (top.groupReady) {     _initMenu(_scrollBar);   }   else {     eval('setTimeout("initMenu('+_scrollBar+')",200)');   } }

function addStyle(_styleName,_paddingWidth,_paddingHeight,_spacing,_spacingColor,_colorNormal,_colorHighlighted,_border,_borderColorBright,_borderColorDark,_textFont,_textSize,_textWeight,_textDecoration,_textColor,_tag,_tagWidth,_tagHeight,_tagImage,_imagePath,widthRatio) {   top.addStyle(self,_styleName,_paddingWidth,_paddingHeight,_spacing,_spacingColor,_colorNormal,_colorHighlighted,_border,_borderColorBright,_borderColorDark,_textFont,_textSize,_textWeight,_textDecoration,_textColor,_tag,_tagWidth,_tagHeight,_tagImage,_imagePath,_widthRatio); }

function addInstance(_name,_type,_position,_holder,_x,_y,_direction,_form,_initial,_target,_group,_style1,style2) {   top.addInstance(self,_name,_type,_position,_holder,_x,_y,_direction,_form,_initial,_target,_group,_style1,_style2); }

function addFrame(name) { if (!top.addFrame(_name,self)) { eval('setTimeout("addFrame('+_name+')",200)'); } } function delFrame() { top.delFrame(self); }

function openMap(_fName,iName) { return top.openMap(_fName,_iName); } function openMenu(_fName,iName) { return top.openMenu(_fName,_iName,false); } function closeMenu(_fName,iName) { return top.closeMenu(_fName,_iName); } function closeMenuNow(_fName,iName) { return top.closeMenuNow(_fName,_iName,false); } function switchMenu(_fName,iName) { return top.switchMenu(_fName,_iName); } function moveMenuTo(_fName,_iName,_x,y) { return top.moveMenuTo(_fName,_iName,_x,_y); } function moveMenuBy(_fName,_iName,_x,y) { return top.moveMenuBy(_fName,_iName,_x,_y); } function getMenuDim(_fName,iName) { return top.getMenuDim(_fName,_iName); } function getItemDim(_fName,_iName,iIndex) { return top.getItemDim(_fName,_iName,_iIndex); } function openMenuX(_fName,iName) { return top.openMenu(_fName,_iName,true); } function closeMenuX(_fName,iName) { return top.closeMenuNow(_fName,_iName,true); }