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

    stop funzione: possibile non esista !!!

    Premessa: io a javascript non gli affiderei nemmeno il compito di fare 2+2, però purtroppo mi sono impelagato un una web application che ne fa un uso mostruoso...

    Ora, uno fra i vari miliardi di problemi che ho, è questo, che a dirla sembrerebbe il famoso "hello world" di ogni linguaggio...

    In sostanza io vorrei semplicemente interrompere l'esecuzione di una funzione.

    Questo è una "simulazione" di quello che devo fare:

    codice:
    <html>
    <script>
    function test()
    {
      FERMA_TUTTO();
      alert("Nooooo");
    }
    
    
    function FERMA_TUTTO()
    {
      alert("pluto");
      window.stop();
    }
    
    </script>
    
    <body>
     <input type="button" value="prova" onclick="test();">
    </body>
    </html>
    Niente di più semplice: quando clicco sul pulsante chiamo test, la quale chiama FERMA_TUTTO e QUI DEVO TERMINARE lo script... Mi spiegate come cavolo si fa in javascript ???


    ho provato con window.stop(); executeCommand('Stop') o qualcosa del genere, ho rivoltato internet ma niente... non posso credere che non esiste una cosa tanto stupida...

    IMPORTANTE:
    Io DEVO interrompere l'esecuzione dello script nella funzione FERMA_TUTTO quindi devo impedire che il secondo alert (quello "Nooooo") non venga eseguito.
    NON POSSO USARE RETURN NELLA FUNZIONE FERMA_TUTTO perchè questo mi costringerebbe a fare una if nella funzione test: qui l'esempio e semplice ma nella realtà lo script e di oltre 5000 righe di codice e gestire questa cosa con if e return mi allungherebbe ulteriormente la frittata...

    In soldoni io sto cercando un'istruzione tipo exit(). che anche il gwbasic di 2000 anni fa possiede...

    Help please !!!


    Scusate lo sfogo ma io e JS siamo proprio agli antipodi...
    www.mtbvolturno.it

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Non puoi.

    O strutturi le funzioni perche' facciano uso di un flag globale da testare prima/durante l'esecuzione, oppure... cambi pagina, e gli script spariranno d'incanto

    Comunque e' possibilissimo... non esiste cio' che ritieni debba obbligatoriamente esistere solo per soddisfare un tuo desiderio...

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Ciao, e grazie della risposta fulminea...

    lo so che è possibilissimo, una strada facile facile sarebbe:
    codice:
    <html>
    <script type="text/javascript">
    function test()
    {
      if( FERMA_TUTTO())
       {
        alert("Nooooo"); 
       }
      
    }
    
    
    function FERMA_TUTTO()
    {
    	
    	 alert("pluto");
       return false;
       
    }
    
    </script>
    
    <body>
     <input type="button" value="prova" onclick="test();">
    </body>
    </html>

    ma il mio problema è questo:
    al posto di alert("Nooooo") immagina di avere 5000 righe di codice (l'applicazione fa forte uso
    di ajax che richiamo degli script in perl ecc.) la cosa è abbastanza complessa da spiegare...

    Questo significa inglobale ulteriormente codice in vari if e contro if... insomma un casino...

    Ecco perchè avrei bisogno di far terminare l'esecuzione di quello script con una "EXIT"

    non mi sembra aver chiesto la luna!!! un semplice EXIT !!!

    Già bisogna combattere con i vari browser: FF, IE varie versioni, CHROME, SAFARI , ecc.. se poi ci dobbiamo pure complicare la vita oltre il dovuto...

    Comunque per la cronaca:
    in FF questa cosa si può fare così:
    codice:
    window.document.execCommand('Stop');

    che a leggere in giro sembrerebbe dover funzionare invece con IE. Fatto sta che a me con FF funziona e con IE NO...

    Ormai mi sono girato TUTTo internet... nisba
    Se hai qualche altra idea... sto già pensando a domani quando dovrò modificare pesantemente tutto lo script per adattarlo al "return false ecc "



    Ciaooo
    www.mtbvolturno.it

  4. #4
    Codice PHP:
    <script type="text/javascript">
    function 
    test()
    {
      return;
      
    alert("Nooooo");
    }
    test();



    </script> 



    Without faith, nothing is possible. With it, nothing is impossible
    http://ilwebdifabio.it

  5. #5
    Originariamente inviato da whisher
    Codice PHP:
    <script type="text/javascript">
    function 
    test()
    {
      return;
      
    alert("Nooooo");
    }
    test();



    </script> 



    Non è quello che serve a me... infatti se dopo test(); ci metto dell'altro codice (anche un semplice alert) questo viene eseguito:... cioè

    Codice PHP:
    <script type="text/javascript">
    function 
    test()
    {
      return;
      
    alert("Nooooo");
    }
    test();

    alert("continua");

    </script> 
    l'alert "continua" viene eseguito... Io invece vorrei ARRESTARE l'esecuzione dello script all'interno della funzione test (di questo esempio).

    Non so se sono stato chiaro... mi serve un semplice EXIT, che interrompa l'esecuzione dello script... Tutto qui...
    www.mtbvolturno.it

  6. #6
    Frontend samurai L'avatar di fcaldera
    Registrato dal
    Feb 2003
    Messaggi
    12,924
    secondo me il comportamento è controllabile purché tu faccia un refactoring del codice usando un pattern diverso

    ad es.
    codice:
    script type="text/javascript">
    function test()
    {
      return false;
      alert("Nooooo");
    }
    
    if (test()) {
      alert("continua");
      ...
    }
    </script>
    Vuoi aiutare la riforestazione responsabile?

    Iscriviti a Ecologi e inizia a rimuovere la tua impronta ecologica (30 alberi extra usando il referral)

  7. #7
    &Egrave; brutto, ma funziona:
    Basta generare un errore javascript, contemporaneamente stoppando la gestione degli errori, per quanto riguarda IE.
    Testato su Firefox, IE, Chrome, Safari
    Prova un po' (in rosso le aggiunte)
    codice:
    <html>
    <script>
    
    window.onerror = function(){return true;};
    
    function test()
    {
      FERMA_TUTTO();
      alert("Nooooo");
    }
    
    
    function FERMA_TUTTO()
    {
      alert("pluto");
      throw "mi fermo!";// genero un errore che, senza try/catch, stoppa l'esecuzione del javascript
    }
    
    </script>
    
    <body>
     <input type="button" value="prova" onclick="test();">
    </body>
    </html>
    HTH
    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

  8. #8
    Originariamente inviato da homezappa
    &Egrave; brutto, ma funziona:
    Basta generare un errore javascript, contemporaneamente stoppando la gestione degli errori, per quanto riguarda IE.
    Testato su Firefox, IE, Chrome, Safari
    Prova un po' (in rosso le aggiunte)
    codice:
    <html>
    <script>
    
    window.onerror = function(){return true;};
    
    function test()
    {
      FERMA_TUTTO();
      alert("Nooooo");
    }
    
    
    function FERMA_TUTTO()
    {
      alert("pluto");
      throw "mi fermo!";// genero un errore che, senza try/catch, stoppa l'esecuzione del javascript
    }
    
    </script>
    
    <body>
     <input type="button" value="prova" onclick="test();">
    </body>
    </html>
    HTH
    Zappa

    Grandiosooooooo

    non sai come ci ero andato vicino... in pratica avevo provato anche io con:
    throw "stop";
    ma mi dava un errore perchè come giustamente dici tu non avevo messo:

    window.onerror = function(){return true;};

    Si sicuramente non è elegante, ma funziona... e per ora userò questo...
    Grazie...
    Ciao...

    PS. ho un altro problemino che dovrò affrontare appena sistemo questa parte... si tratta di una selectbox che con IE non si dimensiona correttamente, per ora ho "accroccato" una cosa che non mi piace... cmq apriro un nuovo post...

    Grazie ancora...
    www.mtbvolturno.it

  9. #9

    Zappa
    [PC:Presario 2515EU][Cpu:P4@2.3GHz][Ram: 512M][HDU:80G@5400 RPM]
    [Wireless:LinkSys][OS: Ubuntu 9.04 - Jaunty Jackalope]

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.