Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    é possibile cortocircuitare gli if esle?

    Ciao a tutti
    leggo in giro che è possubile cortocircuitare gli if else snellendo il codice.

    potreste fami capire meglio come si fa per esempio in relazione a questa funzione?


    function posmouse(e,pagina)
    {
    var evt = e || window.event;
    if (evt.pageX || evt.pageY)
    {
    posx=evt.pageX;
    posy=evt.pageY;
    }
    else if (evt.clientX || evt.clientY)
    {
    posx=evt.clientX+document.documentElement.scrollLe ft+document.body.scrollLeft;
    posy=evt.clientY+document.documentElement.scrollTo p+document.body.scrollTop;
    }
    return pagina+"();"
    }

    grazie

  2. #2
    che intendi per "cortocircuitare"?
    I DON'T Double Click!

  3. #3
    Originariamente inviato da artorius
    che intendi per "cortocircuitare"?
    Leggi qui
    troverai quello che ho trovato io mentre cercavo sul web spunti per una funzione crossbrowser sulla posizione del mouse sulla pagina:

    http://www.lascialatraccia.com/forum...opic=12488&hl=

  4. #4
    cortocircuitare non è proprio la parola che avrei usato io...

    Sostanzialmente, devi capire una cosa:

    evt.pageX è una cosa che ha solo Firefox (mi sembra...) il discorso è:

    In tutti i browser si può usare:

    posx=evt.clientX+document.documentElement.scrollLe ft+document.body.scrollLeft;
    posy=evt.clientY+document.documentElement.scrollTo p+document.body.scrollTop;

    ma in firefox si può usare:

    posx=evt.pageX;
    posy=evt.pageY;

    Allora, si fa un discorso del tipo:
    codice:
    Calcolo
    posx=evt.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;
    posy=evt.clientY+document.documentElement.scrollTop+document.body.scrollTop;
    
    Ma, se è valido evt.pageX o evt.pageY, allora Calcolo
    posx=evt.pageX;
    posy=evt.pageY;
    Scritto in termini di codice diventa:

    codice:
    function posmouse(e,pagina)
    {
       var evt = e || window.event;
       var posx=evt.clientX+document.documentElement.scrollLeft+document.body.scrollLeft;
       var posy=evt.clientY+document.documentElement.scrollTop+document.body.scrollTop;
    
       if (evt.pageX || evt.pageY)
       {
          posx=evt.pageX;
          posy=evt.pageY;
       }
    
       return pagina+"();"
    }
    I DON'T Double Click!

  5. #5
    OK grazie tutto chiaro

    solo una cosa ancora da chiedere a proposito della funzione
    L'autore passa alla funzione l'evento e il nome di una funzione che chiama alla fine
    con return pagina+"();"
    ma a me questa chiamata non funziona su nessun browser

  6. #6
    non hai tutti i torti, quella è una pisquanata di non poco conto...

    la fine deve essere:

    eval("return "+pagina+"();");
    I DON'T Double Click!

  7. #7
    la fine deve essere:

    eval("return "+pagina+"();");
    allora
    ho provato come dici tu ma il log degli errori mi risponde istruzione return estranea alla funzione pur non essendo fuori daLLA FUNZIONE

    se provo a togliere il return funziona tutto bene ma nanca il return che secondo me ci vorrebbe

  8. #8
    mmm prova a fare:

    var ret = null;

    eval("ret = "+pagina+"();");

    return ret;
    I DON'T Double Click!

  9. #9
    Originariamente inviato da artorius
    mmm prova a fare:

    var ret = null;

    eval("ret = "+pagina+"();");

    return ret;
    Si!
    infatti
    return eval(pagina+"();");

    funziona perfettamente

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 © 2026 vBulletin Solutions, Inc. All rights reserved.