Buon giorno, ho questo problema.Ho inserito un Panel, nella pagina, che viene richiamato tramite un pulsante( linguetta.png).Quando clicco, scende per un tot di pixel, quando ri-clicco torna su...
Ho visto che c'è un problema, se apro il Panel, e poi, con lo scroll scorro la pagina, questo Panel mi segue, e fin qui ok, ma se clicco sulla linguetta, per chiuderlo, con FF ed OPERA, invece di salire, scende ulteriormente, creando una "schifezza", invece con IE è tutto ok..
Vi posto il codice js, sperando possiate aiutarmi a risolvere questa schifezza
Scusate se è troppo lungo, ma spero possa esservi utile a capire.codice:var panelWidth = 280; // Width of help panel var slideSpeed = 15; // Higher = quicker slide var slideTimer = 10; // Lower = quicker slide var slideActive = true; // Slide active ? var initBodyMargin = 0; // Left or top margin of your <body> tag (left if panel is at the left, top if panel is on the top) var pushMainContentOnSlide = false; // Push your main content to the right when sliding var panelPosition = 1; // 0 = left , 1 = top /* Don't change these values */ var slideLeftPanelObj=false; var slideInProgress = false; var startScrollPos = false; var panelVisible = false; function initSlideLeftPanel(expandOnly) { if(slideInProgress)return; if(!slideLeftPanelObj){ if(document.getElementById('dhtmlgoodies_leftPanel')){ // Object exists in HTML code? slideLeftPanelObj = document.getElementById('dhtmlgoodies_leftPanel'); if(panelPosition == 1)slideLeftPanelObj.style.width = '100%'; }else{ // Object doesn't exist -> Create <div> dynamically slideLeftPanelObj = document.createElement('DIV'); slideLeftPanelObj.id = 'dhtmlgoodies_leftPanel'; slideLeftPanelObj.style.display='none'; document.body.appendChild(slideLeftPanelObj); } if(panelPosition == 1){ slideLeftPanelObj.style.top = "-" + panelWidth + 'px'; slideLeftPanelObj.style.left = '0px'; slideLeftPanelObj.style.height = panelWidth + 'px'; }else{ slideLeftPanelObj.style.left = "-" + panelWidth + 'px'; slideLeftPanelObj.style.top = '0px'; slideLeftPanelObj.style.width = panelWidth + 'px'; } if(!document.all || navigator.userAgent.indexOf('Opera')>=0)slideLeftPanelObj.style.position = 'fixed'; } if(panelPosition == 0){ if(document.documentElement.clientHeight){ slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px'; }else if(document.body.clientHeight){ slideLeftPanelObj.style.height = document.body.clientHeight + 'px'; } var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1; }else{ if(document.documentElement.clientWidth){ slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px'; }else if(document.body.clientHeight){ slideLeftPanelObj.style.width = document.body.clientWidth + 'px'; } var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1; } slideLeftPanelObj.style.display='block'; if(panelPosition==1) startScrollPos = Math.max(document.body.scrollTop,document.documentElement.scrollTop); else startScrollPos = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft); if(leftPos<(0+startScrollPos)){ if(slideActive){ slideLeftPanel(slideSpeed); }else{ document.body.style.marginLeft = panelWidth + 'px'; slideLeftPanelObj.style.left = '0px'; } }else{ if(expandOnly)return; if(slideActive){ slideLeftPanel(slideSpeed*-1); }else{ if(panelPosition == 0){ if(pushMainContentOnSlide)document.body.style.marginLeft = initBodyMargin + 'px'; slideLeftPanelObj.style.left = (panelWidth*-1) + 'px'; }else{ if(pushMainContentOnSlide)document.body.style.marginTop = initBodyMargin + 'px'; slideLeftPanelObj.style.top = (panelWidth*-1) + 'px'; } } } if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0){ window.onscroll = repositionHelpDiv; repositionHelpDiv(); } window.onresize = resizeLeftPanel; } function resizeLeftPanel() { if(panelPosition == 0){ if(document.documentElement.clientHeight){ slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px'; }else if(document.body.clientHeight){ slideLeftPanelObj.style.height = document.body.clientHeight + 'px'; } }else{ if(document.documentElement.clientWidth){ slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px'; }else if(document.body.clientWidth){ slideLeftPanelObj.style.width = document.body.clientWidth + 'px'; } } } function slideLeftPanel(slideSpeed){ slideInProgress =true; var scrollValue = 0; if(panelPosition==1) var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1; else var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1; leftPos+=slideSpeed; okToSlide = true; if(slideSpeed<0){ if(leftPos < ((panelWidth*-1) + startScrollPos)){ leftPos = (panelWidth*-1) + startScrollPos; okToSlide=false; } } if(slideSpeed>0){ if(leftPos > (0 + startScrollPos)){ leftPos = 0 + startScrollPos; okToSlide = false; } } if(panelPosition==0){ slideLeftPanelObj.style.left = leftPos + startScrollPos + 'px'; if(pushMainContentOnSlide)document.body.style.marginLeft = leftPos - startScrollPos + panelWidth + 'px'; }else{ slideLeftPanelObj.style.top = leftPos + 'px'; if(pushMainContentOnSlide)document.body.style.marginTop = leftPos - startScrollPos + panelWidth + 'px'; } if(okToSlide)setTimeout('slideLeftPanel(' + slideSpeed + ')',slideTimer); else { slideInProgress = false; if(slideSpeed>0)panelVisible=true; else panelVisible = false; } } function repositionHelpDiv() { if(panelPosition==0){ var maxValue = Math.max(document.body.scrollTop,document.documentElement.scrollTop); slideLeftPanelObj.style.top = maxValue; }else{ var maxValue = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft); slideLeftPanelObj.style.left = maxValue; var maxTop = Math.max(document.body.scrollTop,document.documentElement.scrollTop); if(!slideInProgress)slideLeftPanelObj.style.top = (maxTop - (panelVisible?0:panelWidth)) + 'px'; } } function cancelEvent() { return false; } function keyboardShowLeftPanel() { initSlideLeftPanel(); return false; } function leftPanelKeyboardEvent(e) { if(document.all)return; if(e.keyCode==112){ initSlideLeftPanel(); return false; } } function setLeftPanelContent(text) { document.getElementById('leftPanelContent').innerHTML = text; initSlideLeftPanel(true); } if(!document.all)document.documentElement.onkeypress = leftPanelKeyboardEvent; document.documentElement.onhelp = keyboardShowLeftPanel;
Vi ringrazio e vi auguro una buona giornata


Rispondi quotando