Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    12

    problema con javascript

    Salve a tutti
    sono nuovo del mondo javascript ma cerco di apprendere il più presto possibile.

    Praticamente ho scaricato un menu gia bello pronto e cerco di capire come sia strutturato. Fino ad ora ho capito tutto ma mi si presenta un problema e purtroppo non so a cosa sia dovuto.

    Espongo il problema e nel caso la spiegazione sia troppo vaga allora vi posto il codice senza nessun problema.

    Praticamente ho ho fatto un esempio di pagina in cui inserivo il suddetto menu.
    La pagina é divisa in due box gestiti tramite un file css e in mezzo a questi due box vi inserisco il menu. Una voce del menu é composto di un sub-menu. Ora nel caricare la pagina in questione aggiunge uno spazio in fondo di uguale grandezza del sub-menu. Se vado ad espandere il sottomenu questa pagina torna alla grandezza naturale. Questo problema lo ottengo ogni volta che premo f5 insomma ogni volta che carico la pagina nuovamente.

    Vi prego aiutatemi.

    Grazie

    kibab

  2. #2
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    12

    Ecco il codice, part 1

    codice:
    <script language="JavaScript">
    is = {};
    is.agent = navigator.userAgent.toLowerCase();
    is.ie4 = (is.agent.indexOf("msie 4") != -1);
    is.ie5 = (is.agent.indexOf("msie 5") != -1);
    is.ie55 = (is.agent.indexOf("msie 5.5") != -1);
    is.ie6 = (is.agent.indexOf("msie 6") != 20);
    is.ns4 = (is.agent.indexOf("4") != -1 && document.layers);
    is.ns6 = (is.agent.indexOf("netscape6") != -1 && is.agent.indexOf("6.1") == -1);
    is.ns61 = (is.agent.indexOf("netscape6/6.1") != -1);
    is.ns6x = (is.agent.indexOf("netscape6") != -1);
    is.ie = (is.ie4 || is.ie5 || is.ie55 || is.ie6);
    is.moz = (is.agent.indexOf("gecko")!= -1);
    is.mac = (is.agent.indexOf("mac") != -1);
    is.win = (is.agent.indexOf("win") != -1);
    is.iestrict = (is.win && is.ie6 && document.compatMode == "CSS1Compat");
    is.macstrict = (is.ie5 && is.mac && document.doctype && document.doctype.name.indexOf(".dtd") != -1);
    is.strict = (is.iestrict || is.macstrict);
    is.dom = (is.ie5 || is.ie55 || is.ie6 || is.ns6x || is.moz);
    var css_px = (is.ns4) ?"" : "px";
    
    function menuObj(obj, par, nst) {
    page = new Object();
    page.width = (is.ns6 || is.ns61 || is.ns6 || is.ns4 || is.moz) ? innerWidth : document.body.clientWidth;
    page.height = (is.ns6 || is.ns61 || is.ns6 || is.ns4 || is.moz) ? innerHeight : document.body.clientHeight;
    if(!is.ns4) this.lyr = (is.dom) ?document.getElementById(obj) : document.all[obj];
    else this.lyr = (!nst) ?document.layers[obj] : document.layers[nst].document.layers[obj];
    this.sty = (!is.ns4) ? this.lyr.style : this.lyr;
    if(par) this.parent = par;
    this.obj = obj + "SwipeLayer";
    eval(this.obj + "= this");
    }
    menuObj.prototype.timer = null;
    menuObj.prototype.wipe = 0;
    menuObj.prototype.offX = Function('oX = (is.ie || is.ns61 || is.moz) ?this.lyr.offsetLeft : parseInt(this.sty.left);return oX');
    menuObj.prototype.offY = Function('oY = (is.ie || is.ns61 ||is.moz) ?this.lyr.offsetTop : parseInt(this.sty.top);return oY;');
    menuObj.prototype.offW = Function('oW = (!is.ns4) ?this.lyr.offsetWidth : this.lyr.clip.width; return oW;')
    menuObj.prototype.offH = Function('oH = (!is.ns4) ?this.lyr.offsetHeight : this.lyr.clip.height; return oH;')
    menuObj.prototype.maxWipe = function() {
    if(is.dom) return this.offH()+10;
    if(is.ns4) return (sAtt.height*this.lyr.document.layers.length)+10;
    }
    wipeMenu.prototype.addMain = function(name, hasSub, txt, url) {
    menuName = this.name;
    wipePos = this.pos;
    mAtt = this.mAtt, sAtt = this.sAtt;
    if(this.main[name]) return;
    if(is.ns4) {
    var mainMenu = new Layer(mAtt.width);
    var styStr = "text-decoration:none; color:"+mAtt.fg_off+"; padding:"+((mAtt.height/2)-(mAtt.font_size/2)-1)+"px 0px 0px 0px; font-size:"+mAtt.font_size+"px; font-family:"+mAtt.font+";"
    var pd = "padding:0px 6px 0px 6px;"
    mainMenu.document.write('<div align="'+mAtt.align+'" style="'+pd+'">'+txt+'</div>');
    mainMenu.document.close();
    mainMenu.captureEvents(Event.MOUSEUP);
    mainMenu.resizeTo(mAtt.width,mAtt.height)
    if(mAtt.bg_off.indexOf("url") != -1) {
    mainMenu.background.src = mAtt.bg_off.substring(4,mAtt.bg_off.length-1);
    mainMenu.background.src = mAtt.bg_off.substring(4,mAtt.bg_off.length-1);
    } else mainMenu.bgColor = mAtt.bg_off;
    mainMenu.visibility = "visible";
    }
    if(is.dom) {
    var mainMenu = document.createElement("DIV");
    var pf = Math.ceil(((mAtt.height-mAtt.font_size)/2)-2); var wf = (is.ns6x || is.strict) ?12 : 0;
    var pf2 = (mAtt.height%2 == 0) ?1 : 0;
    mainMenu.innerHTML = txt;
    mainMenu.id = name+menuName;
    var styStr = "position:absolute; width:"+(mAtt.width-wf)+"px; border:solid "+mAtt.border+"px "+mAtt.border_color+"; color:"+mAtt.fg_off+"; text-align:"+mAtt.align+"; font-size:"+mAtt.font_size+"px; font-family:"+mAtt.font+"; padding:"+pf+"px 6px "+(pf+pf2)+"px 6px; background:"+mAtt.bg_off+"; cursor:pointer; cursor:hand;"
    mainMenu.style.cssText = styStr;
    mainMenu.setAttribute("style", styStr);
    document.body.appendChild(mainMenu);
    }
    if(is.ie4) {
    var pf = Math.ceil(((mAtt.height-mAtt.font_size)/2)-2);
    var pf2 = (mAtt.height%2 == 0) ?1 : 0;
    alert(pf+pf2)
    var styStr = "position:absolute; width:"+(mAtt.width)+"px; border:solid "+mAtt.border+"px "+mAtt.border_color+"; color:"+mAtt.fg_off+"; text-align:"+mAtt.align+"; font-size:"+mAtt.font_size+"px; font-family:"+mAtt.font+"; padding:"+(pf)+"px 6px "+(pf)+"px 6px; background:"+mAtt.bg_off+"; cursor:hand;"
    var mM = '<div id="'+name+menuName+'" style="'+styStr+'">'+txt+'</div>';
    document.body.insertAdjacentHTML("beforeEnd", mM);
    var mainMenu = document.all[name+menuName];
    }
    mainMenu.onmouseover = Function('if('+hasSub+')'+menuName+'.subs["'+name+'"].show("'+wipePos+'");over_out(this, "'+mAtt.bg_on+'", "'+mAtt.fg_on+'")')
    mainMenu.onmouseout = Function('if('+hasSub+')'+menuName+'.subs["'+name+'"].hide();over_out(this, "'+mAtt.bg_off+'", "'+mAtt.fg_off+'");')
    mainMenu.onmousedown = Function('location.href = "'+url+'"');
    
    this.main[name] = new menuObj(mainMenu.id);
    this.mainNum[this.mainNum.length] = this.main[name];
    
    if(!hasSub) return;
    if(is.ns4) {
    var subC = new Layer(sAtt.width);
    subC.resizeTo(sAtt.width,0);
    subC.visibility = "hidden";
    }
    if(is.dom) {
    var subC = document.createElement("DIV");
    subC.id = name+menuName+"Sub";
    var wf = (is.ns6x) ?4 : 0;
    var styStr = "position:absolute; visibility:hidden; clip:rect(0px "+(sAtt.width+20)+"px 0px 0px); border:solid 1px "+sAtt.border_color+"; border-width:"+sAtt.border+"px 0px 0px 0px; cursor:default;"
    subC.style.cssText = styStr;
    subC.setAttribute("style", styStr);
    document.body.appendChild(subC);
    }
    if(is.ie4) {
    var styStr = "position:absolute; visibility:hidden; clip:rect(0px "+(sAtt.width+20)+"px 0px 0px); border:solid 1px "+sAtt.border_color+"; border-width:"+sAtt.border+"px 0px 0px 0px; cursor:default;"
    var sC = '<div id="'+name+menuName+'Sub" style="'+styStr+'"></div>';
    document.body.insertAdjacentHTML("beforeEnd", sC);
    var subC = document.all[name+menuName+"Sub"];
    }
    this.subs[name] = new menuObj(subC.id, this.main[name]);
    subC.onmouseover = Function(menuName+'.subs["'+name+'"].show("'+wipePos+'");');
    subC.onmouseout = Function(menuName+'.subs["'+name+'"].hide();');
    }
    wipeMenu.prototype.addSub = function(name, parent, txt, url) {
    if(is.ns4) {
    var tempsub = new Layer(sAtt.width, this.subs[parent].lyr);
    var styStr = "text-decoration:none; color:"+sAtt.fg_off+"; padding:"+((sAtt.height/2)-(sAtt.font_size/2)-2)+"px 0px 0px 0px; font-size:"+sAtt.font_size+"px; font-family:"+sAtt.font+";"
    var pd = "padding:0px 6px 0px 6px;"
    tempsub.document.write('<div align="'+sAtt.align+'" style="'+pd+'">'+txt+'</div>');
    tempsub.document.close();
    tempsub.captureEvents(Event.MOUSEUP);
    //this.subs[parent].lyr.resizeTo(sAtt.width,(sAtt.height*this.subs[parent].lyr.document.layers.length))
    tempsub.resizeTo(sAtt.width,sAtt.height);
    tempsub.moveTo(0,(sAtt.height*(this.subs[parent].lyr.document.layers.length-1)));
    if(sAtt.bg_off.indexOf("url") != -1) {
    tempsub.background.src = sAtt.bg_off.substring(4,sAtt.bg_off.length-1);
    tempsub.background.src = sAtt.bg_off.substring(4,sAtt.bg_off.length-1);
    } else tempsub.bgColor = sAtt.bg_off;
    tempsub.visibility = "inherit";
    }
    if(is.dom) {
    var tempsub = document.createElement("DIV");
    var pf = Math.ceil(((mAtt.height-mAtt.font_size)/2)-2); var wf = (is.ns6x || is.strict) ?12 : 0;
    var pf2 = (mAtt.height%2 == 0) ?1 : 0;
    tempsub.id = name+menuName+"SubItem";
    tempsub.innerHTML = txt;
    var styStr = "width:"+(sAtt.width-wf)+"px; border:solid "+sAtt.border+"px "+sAtt.border_color+"; border-top-width:0px; color:"+sAtt.fg_off+"; text-align:"+sAtt.align+"; font-size:"+sAtt.font_size+"px; font-family:"+sAtt.font+"; padding:"+pf+"px 6px "+(pf+pf2)+"px 6px; background:"+sAtt.bg_off+"; cursor:pointer; cursor:hand;"
    tempsub.style.cssText = styStr;
    tempsub.setAttribute("style", styStr);
    this.subs[parent].lyr.appendChild(tempsub);
    }
    if(is.ie4) {
    var pf = Math.ceil(((mAtt.height-mAtt.font_size)/2)-2);
    var pf2 = (mAtt.height%2 == 0) ?1 : 0;
    var styStr = "width:"+(sAtt.width)+"px; border:solid "+sAtt.border+"px "+sAtt.border_color+"; border-top-width:0px; color:"+sAtt.fg_off+"; text-align:"+sAtt.align+"; font-size:"+sAtt.font_size+"px; font-family:"+sAtt.font+"; padding:"+(pf+pf2)+"px 6px "+(pf+pf2)+"px 6px; background:"+sAtt.bg_off+"; cursor:hand;";
    var ts = '<div id="'+name+menuName+'SubItem" style="'+styStr+'" onmouseover="over_out(this, \''+sAtt.bg_on+'\', \''+sAtt.fg_on+'\')" onmouseout="over_out(this, \''+sAtt.bg_off+'\', \''+sAtt.fg_off+'\')" onmousedown="location.href=\''+url+'\'">'+txt+'</div>';
    this.subs[parent].lyr.insertAdjacentHTML("beforeEnd", ts);
    }
    if(!is.ie4) {
    tempsub.onmouseover = Function('over_out(this, "'+sAtt.bg_on+'", "'+sAtt.fg_on+'")');
    tempsub.onmouseout = Function('over_out(this, "'+sAtt.bg_off+'", "'+sAtt.fg_off+'")');
    tempsub.onmousedown = Function('location.href = "'+url+'"');
    }
    }
    menuObj.prototype.show = function(p) {
    if(p == "h") {
    this.sty.left = this.parent.offX()+css_px;
    this.sty.top = this.parent.offY()+this.parent.offH()+css_px;
    } else {
    this.sty.left = this.parent.offX()+this.parent.offW()+css_px;
    this.sty.top = this.parent.offY()+css_px;
    }
    this.sty.visibility = "visible";
    this.sty.zIndex = "12";
    this.doShow();
    }
    menuObj.prototype.doShow = function() {
    clearTimeout(this.timer)
    this.clipIt(0, this.offW(), this.wipe, 0);
    this.wipe += 10;
    if(this.wipe <= this.maxWipe()) this.timer = setTimeout(this.obj + ".doShow()", 45)
    }
    menuObj.prototype.hide = function() {
    clearTimeout(this.timer)
    this.clipIt(0, this.offW(), this.wipe-10, 0);
    this.wipe -= 10;
    if(this.wipe >= 0) this.timer = setTimeout(this.obj + ".hide()", 200);
    else this.sty.visibility = "hidden";
    }
    function over_out(obj, bg, fg) {
    if(is.ns4) {
    if(bg.indexOf("url") != -1) obj.background.src = bg.substring(4,bg.length-1)
    else obj.background.src = "", obj.bgColor = bg;
    }
    else {
    obj.style.background = bg;
    obj.style.color = fg;
    }
    }
    menuObj.prototype.clipIt = function(t,r,b,l) {
    if(!is.ns4) this.sty.clip = "rect("+t+"px, "+r+"px, "+b+"px, "+l+"px)"
    else {
    this.sty.clip.top = t;
    this.sty.clip.right = r;
    this.sty.clip.bottom = b;
    this.sty.clip.left = l;
    }
    }
    wipeMenu.prototype.buildMenu = function(x,y,spacing) {
    this.mainNum[0].sty.left = x+css_px;
    this.mainNum[0].sty.top = y+css_px;
    if(!is.ns4 && spacing == 0) var spacing = -this.mAtt.border;
    for(i = 1; i < this.mainNum.length; i++) {
    if(this.pos == "h") {
    this.mainNum[i].sty.left = this.mainNum[i-1].offX()+this.mainNum[i-1].offW()+spacing+css_px;
    this.mainNum[i].sty.top = this.mainNum[i-1].offY()+css_px;
    } else {
    this.mainNum[i].sty.left = this.mainNum[i-1].offX()+css_px;
    this.mainNum[i].sty.top = this.mainNum[i-1].offY()+this.mainNum[i-1].offH()+spacing+css_px;
    }
    }
    }
    function wipeMenu(menu,p,ma,sa) {
    this.name = menu;
    this.pos = p;
    this.mAtt = ma;
    this.sAtt = (!sa) ?ma : sa;
    this.main = [];
    this.mainNum = [];
    this.subs = [];
    }
    function preLoadMenuImages() {
    if(!img) var img = [];
    var imgs = preLoadMenuImages.arguments;
    for(i = 0; i < imgs.length; i++) {
    img[i] = new Image();
    img[i].src = imgs[i];
    }
    }
    if(document.layers) {
    var pX = innerWidth;
    var pY = innerHeight;
    onresize= function(){
    if(pX!= innerWidth || pY!= innerHeight) history.go(0);
    }
    }
    function swapIt(img, src, id) {
    if(is.ie4 || is.ns4 && !id) document.images[img].src = src;
    if(is.ns4 && id) document.layers[id].document.images[img].src = src;
    if(is.dom) document.getElementById(img).setAttribute('src', src);
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    12

    Ecco il codice, part 2

    codice:
    function initSwipeMenu() {
    menuAtt = new Array();
    menuAtt["width"] = 99;
    menuAtt["height"] = 20;
    menuAtt["align"] = "center";
    menuAtt["font"] = "Verdana";
    menuAtt["font_size"] = 10;
    menuAtt["bg_off"] = "#000000";
    menuAtt["bg_on"] = "#ffff00";
    menuAtt["fg_off"] = "white";
    menuAtt["fg_on"] = "red";
    menuAtt["border"] = 1;
    menuAtt["border_color"] = "white";
    //Menu 1
    myMenu = new wipeMenu("myMenu", "h", menuAtt);
    
    myMenu.addMain("about", true, "xxxxxxxx", "xxxxxx.html");
    myMenu.addMain("shapes", true, "xxxxxxxx", "shapes4.htm");
    myMenu.addSub("shapesSub1", "shapes", "xxxxxx", "xxxxxx.htm");
    myMenu.addSub("shapesSub2", "shapes", "xxxxxx", "corners6.htm");
    myMenu.addSub("shapesSub3", "shapes", "xxxxx", "lines7.htm");
    myMenu.addSub("shapesSub4", "shapes", "xxxxxxx", "circle8.htm");
    myMenu.addSub("shapesSub5", "shapes", "xxxxxxx", "ellipse9.htm");
    myMenu.addSub("shapesSub6", "shapes", "xxxxxxxx", "polygon10.htm");
    myMenu.addSub("shapesSub7", "shapes", "xxxxxxxxxxx", "polyline11.htm");
    myMenu.addSub("shapesSub8", "shapes", "xxxxxxxxx", "paths12.htm");
    
    myMenu.addMain("filters", true, "xxxxxx", "filters13.htm");
    
    myMenu.addMain("gradient", true, "xxxxxxxxxx", "gradients17.htm");
    
    myMenu.addMain("text", true, "xxxx xxxxx", "text20.htm");
    myMenu.addMain("pit", true, "xxxxxxx", "text20.htm");
    myMenu.addMain("text2", true, "xxxxxxxxxx", "text20.htm");
    myMenu.addMain("text3", true, "xxxxx", "text20.htm");
    myMenu.addMain("text5", true, "xxxxxx", "text20.htm");
    myMenu.addMain("text4", true, "xxxx xxxxx", "xxxxx.htm");
    myMenu.buildMenu(0,132,0);
    }
    </script>
    Questo è il codice e attraverso l' ultima riga lo piazzo
    myMenu.buildMenu(0,132,0);

    Ora la mia pagina è divisa in due: ho una testa in cui piazzo un logo lungo 1000 px e poi un body che a causa del contenuto grafico supera l agrandezza di un a pagina e quindi mi obbliga a fare lo sroll.
    Il separatore ta queste due parti e' proprio il javascript insomma il menu che purtroppo mi da il problema che non so a cosa sia dovuto.

    A poi per il tag body:
    <body onload="initSwipeMenu();" onload="if(parent.frames[0]&&parent.frames['navig'].Go)parent.frames['navig'].Go();" topmargin="0" marginheight="0" leftmargin="0">

    Aiutatemi a capire e se potete a trovare una soluzione.

    Ciao e buon Anno a tutti

    kibab

  4. #4
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    e' un po' complicato replicare il malfunzionamento,
    potrebbe dipendere da troppi fattori,
    x avere maggiori possibilita' di risposta sarebbe meglio tu lasciassi un link alla pagina in questione

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    12
    purtroppo non ho uno spazio mio in cui posso inserire il file completo della pagina ma se vuoi posso spedirtela tramite mail.

    Non so dimmi tu.

    grazie

    kibab

  6. #6
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    scusa ma il senso non era che se pubblichi io ci do un' occhiata,
    piuttosto che e' + probabile che qualcuno ci dia un' occhiata...

    apri uno spazio gratuito su altervista
    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2005
    Messaggi
    12

    Scusami

    Scusami ma non era proprio quello che volevo esprimere, accetto qualsiasi consiglio in merito.

    E poi non obbligo nessuno, solo il piacere di capire attraverso chi sa più di me.

    Sempre molte grazie per la vostra attenzione

    kibab

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.