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

    Problema con lo script Hyphenator.js

    Buongiorno,
    SOno un novellino di javascript e jquery, avrei un problema:
    sto creando una webapp di un libro per lavoro e avrei bisogno di hyphenator per la sillabazione, gli altri motori di ricerca utilizzano questo script in modo corretto, Chrome purtroppo no;
    Siccome il mio libro è suddiviso in blocchi che si caricano in append o prepend ogni volta che scrollo la pagina Hyphenator esegue all' avvio la prima volta la sillabazione correttamente, ma al blocco successivo che si carica in append riesegue lo script e ogni volta che scrollo lo esegue di nuovo, così facendo però la pagina si appesantisce e dopo due o tre volte non carica pù i blocchi e mi spunta il messaggio di
    Warning: multiple execution of Hyphenator.run() – This may slow down the script!
    Questi sono i codici di scroll della pagina e della sillabazione! Aiutooo!!!



    var deviDetect = new MobileDetect(window.navigator.userAgent);
    var device = deviceType(deviDetect);
    console.log(device);
    switch (device) {
    case "desktop":



    $(window).bind('wheel', function (e) {

    var scroll = $(window).scrollTop();
    // console.log("scroll",scroll);



    if (scroll < 1) {

    console.log("set",setTimeout);
    if ($("#genera").hasClass("SIDMode") == false)
    allBlocks.loadPrevius();

    }


    if (isScrolledIntoView($('section:last'))) {
    if ($("#genera").hasClass("SIDMode") == false)
    allBlocks.loadNext();
    //sillabare();
    }




    });


    $(window).scroll(function() {

    if ($(window).scrollTop() >= $(document).height() - $(window).height() - 10) {

    if (scroll < 1) {

    if ($("#genera").hasClass("SIDMode") == false)
    allBlocks.loadPrevius();
    }


    if (isScrolledIntoView($('section:last'))) {
    if ($("#genera").hasClass("SIDMode") == false)
    allBlocks.loadNext();

    }
    }

    });




    break;
    case "phone":

    console.log("mobile");
    var myElem = $("#genera")[0];
    var mc = new Hammer(myElem, {
    touchAction: "auto",
    });
    mc.get("pan").set({
    direction: Hammer.DIRECTION_VERTICAL,
    treshold: 10
    });
    mc.on("panup pandown", function (ev) {


    console.log(ev.type);
    if (ev.type == "panup") {
    allBlocks.loadNext();
    var viewPosY = $("section:last").offset();
    Pancounter = 0;
    } else if (ev.type == "pandown") {
    allBlocks.loadPrevius();
    }
    });
    break;
    }






    function deviceType(md) {
    var xRet = 'desktop';
    if (md.mobile()) {
    if (md.phone()) {
    xRet = 'phone';
    }
    if (md.tablet()) {
    xRet = 'tablet';
    }
    if (md.os() == 'WindowsPhoneOS') {
    xRet = 'phone';
    }
    }
    return xRet;
    }




    function isScrolledIntoView(elem) {

    var docViewTop = $(window).scrollTop();

    var docViewBottom = docViewTop + $(window).height();

    var elemTop = $(elem).offset().top;

    var elemBottom = elemTop + $(elem).height();
    return ((elemBottom >= docViewTop) == (elemTop <= docViewBottom));
    }



    function sillabare(){

    console.log("INIZIO SILLABAZIONE");

    var ultimaPos=-1;
    var eseguito=false;
    setInterval(function(){

    //console.log("inizio1",inizio);
    var currPos=scrollY;
    if(ultimaPos!= currPos){
    // Hyphenator.stopPropagation();
    console.log("entrato!");

    Hyphenator.run();

    ultimaPos=currPos;

    }





    },1000);




    }

  2. #2
    Sto provando con lo script Hyphenopoly.js ma qualcuno sa se alla creazione della pagina in append in modo dinamico c' è un modo per fare funzionare questo script e non solo la prima volta che richiami la pagina nel blocco specifico?

    pagina .html:

    codice:
    <!doctype html>
    <html lang="it">
    <head>
    <http-equiv="content-type" content="text/html; charset=UTF-8">
    	<!--Meta-->
    
    
    	<script src="htmlblocks/sezioniV2.js"></script>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
     <link rel="stylesheet" href="css/bootstrap.css"> 
      <link rel="stylesheet" href="css/boot/gm.css">  
      <link rel="stylesheet" href="css/menu.css">
        <link rel="shortcut icon" href="favicon.ico" />
    	<!--Link-->
    	<link rel="stylesheet" href="css/style.css">
    	<title>Manuale AB 2019</title>
    	
    <!--	<script src="Hyphenator.js" type="text/javascript"></script>-->
    	    <script>
            var Hyphenopoly = {
                require: {
                    "it": "agghiacciante",
    				
     
                },
                paths: {
                    patterndir: "js/Sillabazione/Hyphenopoly-master/patterns/",
                    maindir: "js/Sillabazione/Hyphenopoly-master/"
                },
                setup: {
                    selectors: {
                        ".hyphenate": {
                        }
                    }
                }
            };
    			
            </script>
    	
    <script src="js/Sillabazione/Hyphenopoly-master/Hyphenopoly_Loader.js"></script>
    
    
    
    
    
    
    	<style type="text/css">
    		
    		  .hyphenate {
                   
                    hyphens: auto;
                    -ms-hyphens: auto;
                    -moz-hyphens: auto;
                    -webkit-hyphens: auto;
                }
    		
    	</style>
       
    </head>
    
    
    <body>
    
    
    	<nav class="menu">
    		<p class="pubblicazione"><span>Manuale AB 2019</span></p>
    		<div class="frecce">
    			<img src="img/previous.ico" alt="previous" class="previous">
    			<img src="img/next.ico" alt="next" class="next">
    		</div>
    		<div class="bottone">
    			<button class="indice" id="idx_button2"><span>Indice</span></button>
    		</div>
    		<div class="bottone2">
    			<button class="text" id="botton2" ><span>Hyphenator</span></button>
    		</div>
    		<div class="ricerca">
    			<form>
    				<input class="fCerca" type="search" aria-label="Cerca" placeholder="Blocco, argomento...">
    				<img src="img/lente.png" alt="logo" class="cerca" type="submit">Cerca
    			</form>
    		</div>
    	</nav> 
    	
    	<div id="genera" class="hyphenate" lang="it" style="padding-top: 60px "></div>
    
    
    	
    </body>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
    <script src="js/jquery.js "></script>
    <script src="js/mobile-detect.min.js"></script>
    <script src="js/hammer.min.js"></script>	
    <script src="js/engineV6.js"></script>
    
    
    <!-- <script type="text/javascript" language="javascript" src="js/Sillabazione/Hyphenator-master/Hyphenator.js"></script>
     <script type="text/javascript" language="javascript" src="js/Sillabazione/Hyphenator-master/Hyphenator_Loader.js"></script>
     <script type="text/javascript" language="javascript" src="js/Sillabazione/Hyphenator/it.js"></script>-->
    	
    		
    	
    </html>

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,686
    Ciao, non conosco e non ho mai usato Hyphenator.js ma da quello che vedo ci sono un bel po' di cose nel tuo codice che stonano a livello concettuale:

    - è chiaro che per aggiornare il processo devi fare Hyphenator.run();

    - non è chiaro perché tu lo stia facendo dentro un setInterval "incontrollato" che viene eseguito ogni secondo, che già di per sé rallenta l'esecuzione dello script a prescindere dall'uso di hyphecoso

    - per "incontrollato" intendo appunto che sarebbe meglio evitare di attivare un setInterval ma, cosa più grave, lo stai facendo in modo anonimo e "ricorsivo" (o più precisamente, ogni volta che effettui lo scroll), senza mai cancellare l'istanza creata[*], così che si vanno ad attivare, man mano che esegui lo scroll, miriadi di istanze intervallo eseguite ogni secondo contemporaneamente, innescando una eccessiva esecuzione di script ridondante.
    Questo è il problema principale per cui ti salta fuori quell'avvertenza.

    [*]generalmente il setInterval o setTimeout lo si istanzia con una variabile che viene usata poi per eseguire un clearInterval() prima di attivarne altri

    Siccome il mio libro è suddiviso in blocchi che si caricano in append o prepend ogni volta che scrollo
    - chiaramente si può aggiustare la gestione degli intervalli, ma sarebbe sicuramente meglio se non ne venisse usato alcuno.
    Ho visto che hai messo una condizione per verificare che sia stato effettuato realmente uno scroll e impedire l'esecuzione dello script dentro l'intervallo, ma a questo punto non avrebbe comunque senso usare un intervallo. Sarebbe forse più appropriato un setTimeout che viene eseguito una sola volta, ma anche in questo caso penso che la soluzione più ottimale sia piuttosto quella di far eseguire Hyphenator.run() solo quando è realmente necessario, cioè quando vengono appesi i blocchi sulla pagina, non allo scroll.

    - nel tuo codice non vedo la parte in cui i blocchi vengono appesi (presumo tu l'abbia omessa) ma bisognerebbe capire se in qualche modo puoi intercettare l'evento/la funzione in cui appunto sono appesi dinamicamente i blocchi nella pagina e a quel punto inserire lì il tuo run().

    - Se non fosse possibile, potresti comunque far eseguire il run() direttamente nell'evento scroll, magari mettendo una condizione che identifichi in qualche modo la reale presenza di nuovi blocchi.

    In conclusione non vedo alcuna palese necessità nell'usare un setInterval (o setTimeout che sia) in quel modo o in qualunque altro modo.

    Cerca intanto di capire se puoi intercettare l'evento in cui vengono appesi i nuovi blocchi. Posso supporre si tratti di una qualche chiamata AJAX e quindi un qualche evento success, ma questa parte non l'hai specificata; prova a chiarire.




    EDIT: ho visto meglio il codice e ho notato ora le funzioni allBlocks.loadPrevius(); e allBlocks.loadPrevius();
    Presumo siano quelle per cui vengono appesi i blocchi; bisogna però vedere cosa ci sta dietro quelle funzioni (forse delle chiamate AJAX) e quindi capire se ci sia modo di intercettare l'evento esatto in cui i contenuti vengono appesi, così da mettere lì il run() in questione.
    Ultima modifica di KillerWorm; 26-03-2019 a 18:15
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    eCCO TUTTA LA PARTE CHE HO OMESSO, HO CAPITO COSA INTENDI MA ESSENDO TANTISSIME RIGHE DI CODICE NON SCRITTE DA ME HO PAURA DI FARE DANNI!

    codice:
      _createClass(Blocks, [{
        key: "getBlockById",
        //Ritorna il blocco corrispondente all'id fornito	
        value: function getBlockById(id) {
          for (var i = 0; i < this.blocchi.length; i++) {
            if (this.blocchi[i]["id"] == id) {
              return new Block(this.blocchi[i]);
            }
          }
        }
      }, {
        key: "getblockbyblocco",
        value: function getblockbyblocco(numeroDiBlocco) {
          for (var i = 0; i < this.blocchi.length; i++) {
            var blocco = this.blocchi[i]["blocco"].split(",", [1]);
    
    
            if (blocco == numeroDiBlocco) {
              return new Block(this.blocchi[i]);
    			
            }
          }
        } //Ritorna la posizione in base all'id nell'intenro del vettore
    
    
      }, {
        key: "getPosById",
        value: function getPosById(id) {
          var length = this.blocchi.length;
          var rt = "";
    
    
          for (var i = 0; i < length; i++) {
            if (this.blocchi[i]["id"] == id) {
              rt = i;
            }
          }
    
    
          return rt;
          console.log("gpbid:", rt);
        } //Prende il blocco dopo quello passato
    
    
      }, {
        key: "getNextBlock",
        value: function getNextBlock(currentBlock) {
          var posCurrentBlock = this.getPosById(currentBlock.id);
          var posNextBlock = posCurrentBlock + 1;
          return this.blocchi[posNextBlock];
    		
        } //Prende quello precedente a quello passato
    
    
      }, {
        key: "getPreviusBlock",
        value: function getPreviusBlock(currentBlock) {
          //debugger;
          var posCurrentBlock = this.getPosById(currentBlock.id);
          var posPreviusBlock = posCurrentBlock - 1;
          return this.blocchi[posPreviusBlock];
        } //Prende il blocco tramite la posizione del vettore
    
    
      }, {
        key: "getBlockByIndex",
        value: function getBlockByIndex(index) {
          return this.blocchi[index];
        }
      }, {
        key: "resetSezioni",
        value: function resetSezioni(xs) {
          this.sezioni = xs;
        } //Prepara i titoli nella pagina
    
    
      }, {
        key: "prepTitoli",
        value: function prepTitoli(id, retBlock) {
          console.log("ret:", retBlock);
          retBlock = undefined ? false : retBlock; //debugger;
    
    
          console.log("preptitid");
          var tmpBlock = {};
          var avalaibleTitle = [];
    
    
          for (var i = 0; i < allBlocks.size; i++) {
            tmpBlock = allBlocks.getBlockByIndex(i);
    
    
            if (tmpBlock.isTitle) {
              avalaibleTitle.push(tmpBlock);
            }
          }
    
    
          var passedBlock = allBlocks.getBlockById(id);
          var neededTitles = [];
          var titolo = "";
          console.log("blocco passato", passedBlock);
          console.log("blocco a disposizione: ", avalaibleTitle);
    
    
          do {
            for (var i = 0; i < avalaibleTitle.length; i++) {
              if (passedBlock.titolo == avalaibleTitle[i].id) {
                neededTitles.push(avalaibleTitle[i]);
                passedBlock = avalaibleTitle[i];
                titolo = passedBlock.titolo;
              }
            }
          } while (titolo != "");
    
    
          if (retBlock) {
            return neededTitles;
          } else {
            var html = "";
    
    
            for (var i = neededTitles.length - 1; i >= 0; i--) {
              $("#genera").append(neededTitles[i].contenuti);
              $("#" + neededTitles[i].id).addClass("titolo"); //console.log(neededTitles[i].contenuti);
    
    
              var idstmp = neededTitles[i].id; //console.log("primo blocco: r 212 " + firstblock);
            }
          }
        } //riempe la pagina di blocchi fino a riempirla
    
    
      }, {
        key: "fillPage",
        value: function fillPage(neededBlocks) {
          var titoli = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "no";
          //debugger;
          var html = "";
          var counter = 0;
    
    
          if (titoli == "yes") {
            counter = 0;
    
    
            while ($(document).height() <= $(window).height()) {
              if (neededBlocks[counter] != "" && neededBlocks[counter] != undefined) {
                //   console.log("blocco generato");
                //console.log(neededBlocks[counter]);
                $("#genera").append(neededBlocks[counter].contenuti);
                if (neededBlocks[counter].tipo_sez == "T") {
                  $("#" + neededBlocks[counter].id).addClass("titolo");
                }
              }
    
    
              counter++;
    
    
              if (counter >= neededBlocks.length) {
                break;
              }
            }
          } else if (titoli == "no") {
            counter = 0;
    
    
            while ($(document).height() == $(window).height()) {
              if (neededBlocks[counter] != "") {
                if (neededBlocks[counter].tipo_sez != "T") {
                  $("#genera").append(neededBlocks[counter].contenuti); //console.log(neededBlocks[counter].id);
                  //console.log(counter);
    
    
                  counter++;
                } else {
                  counter++;
                }
              }
            }
          }
        } //Carica la pagina a partire dal blocco fornito
    
    
      }, {
        key: "loadPage",
        value: function loadPage(blockid) {
          //debugger;
          console.log("loadpagecalled");
          var neededBlocks = [];
          var lastBlockID = blockid;
          var indexOfLastBlock = this.getPosById(lastBlockID);
    
    
          for (var i = indexOfLastBlock; i < allBlocks.size; i++) {
            neededBlocks.push(allBlocks.blocchi[i]);
          }
    
    
          var html = ""; //console.log("254, loadpagecalled for eseguito, titoli: "+titoli);
    
    
          if (titoli == "once" || titoli == "yes") {
            if (this.getBlockById(blockid).tipo_sez == "T") {
              console.log("tipo T");
              this.prepTitoli(lastBlockID);
              this.fillPage(neededBlocks, titoli);
            } else {
              console.log("boh");
              this.prepTitoli(lastBlockID);
              this.fillPage(neededBlocks, titoli);
            }
          } else if (titoli == "no") {
            console.log("no titoli");
            this.fillPage(neededBlocks);
          }
    
    
          console.log("needed", neededBlocks);
        } //carica il prossimo blocco partendo dall'ultimo
    
    
      }, {
        key: "loadNext",
        value: function loadNext() {
          var thisBlockid = $("section").last().attr("id");
          var thisBlock = this.getBlockById(thisBlockid);
          var nextBlock = this.getNextBlock(thisBlock);
          $("#genera").append(nextBlock.contenuti);
    	
          $("section:last").css({
            opacity: 0,
            visibility: "visible"
          }).animate({
            opacity: 1
          }, 'slow');
    		
        } //Ottiene l'index di un blocco
    
    
      }, {
        key: "getIndex",
        value: function getIndex(block) {
          for (var i = 0; i < this.size; i++) {
            if (block.id = this.blocchi[i].id) {
              return i;
            }
          }
        }
      }, {
        key: "getAlltypeBBlock",
        value: function getAlltypeBBlock(from) {
          var startingPos = this.getIndex(from);
          var ndBlocks = [];
    
    
          for (var i = startingPos; i <= this.size; i++) {
            ndBlocks.push(this.blocchi[i]);
          }
    
    
          return ndBlocks;
        } //Carica il blocco precedente 
    
    
      }, {
        key: "loadPrevius",
        value: function loadPrevius() {
          //Prendo il primo blocco che non è un titolo
          var primoBloccoNT = {};
          var noTitleBlocks = [];
          $("#genera section").each(function (numElem, Elem) {
            if (!$(Elem).hasClass("titolo")) {
              noTitleBlocks.push($(Elem)); //noTitleBlocks = vettore di selettori a tutti i blocchi senza classe titolo
            }
          });
          primoBloccoNT = noTitleBlocks[0]; //Primo blocco non titolo della pagina
    
    
          primoBloccoNT = this.getBlockById($(primoBloccoNT).attr("id"));
          var bloccoPrecedente = this.getPreviusBlock(primoBloccoNT);
          var titBloccoPrec = this.getBlockById(bloccoPrecedente.titolo);
          console.log(bloccoPrecedente);
          var quit = false;
          var tipoBlocco; //debugger;
    		
    
    
          do {
            tipoBlocco = bloccoPrecedente.tipo_sez;
    		  
            if ($("#" + bloccoPrecedente.id).length <= 0) {
              //Se il BP non è nel DOM
              if (!(titBloccoPrec === undefined) && $("#" + titBloccoPrec.id).length > 0) {
                //Se è presente il titolo del blocco precedente stampo il BP sotto il TBP ed esco dal ciclo
               $("#genera").prepend(bloccoPrecedente.contenuti);
                quit = true;
              } else {
                //Se invece non è presente il titolo del TBP stampo il BP in cima
                $("#genera").prepend(bloccoPrecedente.contenuti);
                quit = true;
              }
    
    
              switch (tipoBlocco) {
                case "T":
                  $("#" + bloccoPrecedente.id).addClass("titolo");
                  break;
    
    
                case "B":
                  $("#" + bloccoPrecedente.id).addClass("block");
                  break;
    
    
                case "I":
                  $("#" + bloccoPrecedente.id).addClass("intro");
                  break;
              }
            } else {
              bloccoPrecedente = this.getPreviusBlock(bloccoPrecedente); //Rieseguo il ciclo dando a BP il blocco che lo precede
    
    
              quit = false;
            }
          } while (quit == false); //  $("body").scrollTo("section:first");
    
    
    
    
          $("body").scrollTop = $("section:first").offset().top;
        }
      }, {
        key: "hasFather",
        value: function hasFather(block, ret) {
          if (ret != undefined && ret == "ret") {
            if (this.getBlockById(block.titolo) != undefined) {
              return this.getBlockById(block.titolo);
            } else {
              return false;
            }
          } else {
            if (this.getBlockById(block.titolo) != undefined) {
              return true;
            } else {
              return false;
            }
          }
        }
      }, {
        key: "getBlockLevel",
        value: function getBlockLevel(block) {
          var hasFatherRes = false;
          var currBlock = block;
          var levelCounter = 0;
    
    
          do {
            if (this.hasFather(currBlock)) {
              levelCounter++;
              currBlock = this.hasFather(currBlock, "res");
              hasFatherRes = true;
            } else {
              hasFatherRes = false;
            }
          } while (hasFatherRes);
    
    
          return levelCounter;
        }
      }, {
        key: "size",
        get: function get() {
          return this.blocchi.length;
        }
      }]);
    
    
      return Blocks;
    }();

  5. #5
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,686
    Beh, è già qualcosa in più, quantomeno quello script NON mi conferma quanto avevo supposto. Non vedo chiamate AJAX e, così a prima vista (analizzando i vari spezzoni di codice), non capisco come e se avvenga un qualche caricamento asincrono dei contenuti. Sembrerebbe quasi che i contenuti siano salvati in qualche variabile e vengono semplicemente appiccicati alla pagina quando si esegue lo scroll.

    Se così fosse puoi "semplicemente" richiamare Hyphenator.run() nelle varie parti (nel tuo script ne conto 6) dopo che viene eseguito allBlocks.loadPrevius() o allBlocks.loadPrevius(), quindi rimuovere in blocco la funzione sillabare(), che non ti serve.

    Purtroppo quel "semplicemente" è una parola grossa in questo caso, perché il tuo script è un bel po' pasticciato, quindi è difficile dirti con precisione cosa devi andare a modificare.

    Per la parte in cui c'è la gestione dell'evento whell potrebbe essere impostato così:
    codice:
    $(window).bind('wheel', function (e) {
       var scroll = $(window).scrollTop();
       if (scroll < 1) {
          if ($("#genera").hasClass("SIDMode") == false) {
             allBlocks.loadPrevius();
             Hyphenator.run();
          }
       }
       if (isScrolledIntoView($('section:last'))) {
          if ($("#genera").hasClass("SIDMode") == false) {
             allBlocks.loadNext();
             Hyphenator.run();
          }
       }
    });
    .
    Analogamente sarà per la funzione in cui gestisci l'evento scroll anche se in quel caso noto che hai usato una variabile scroll (per la condizione) ma in quel contesto non è valorizzata, per cui non so come e se quella roba ti funziona.

    Allo stesso modo dovrai fare per la parte in cui gestisci "panup pandown". Potrebbe essere una cosa del genere:
    codice:
    mc.on("panup pandown", function (ev) {
       if (ev.type == "panup") {
          allBlocks.loadNext();
          Hyphenator.run();
          var viewPosY = $("section:last").offset();
          Pancounter = 0;
       } else if (ev.type == "pandown") {
          allBlocks.loadPrevius();
          Hyphenator.run();
       }
    });
    Prova e vedi cosa vien fuori.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  6. #6
    Moderatore di Javascript L'avatar di ciro78
    Registrato dal
    Sep 2000
    residenza
    Napoli
    Messaggi
    8,505
    Ciao Maxilboss,
    benvenuto sul forum.

    Da quello che vedo hai iniziato ad usare il forum senza prima leggerne il regolamento. Ho visto che hai aperto discussioni in inglese e non utilizzi il tag code e usi un titolo poco pertinente. Ti invito quindi, qualora non lo avessi fatto, a leggerlo con attenzione. In questo modo sarà anche più facile darti supporto.

    Ciro Marotta - Programmatore JAVA - PHP
    Preferisco un fallimento alle mie condizioni che un successo alle condizioni altrui.


  7. #7
    No ovviamente così avevo già provato, ma se scrolli ogni volta con il tuo metodo si avvia nuovamente hyphenator e quindi avviene l'esecuzione multipla che è il problema principale!

  8. #8
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,686
    L'esecuzione multipla del run() suppongo ci possa anche stare. Il problema però stava nel fatto che tu la stavi eseguendo ogni secondo col setInterval, e forse anche di più, perché da quello che ho capito stavi istanziando multipli intervalli che chiaramente creavano un esecuzione di script a livello esponenziale.

    Bisogna capire se il sistema funziona eseguendo il run() solo quando vengono creati i nuovi blocchi (senza intervalli o altri accrocchi), come ti ho indicato di fare. Tu mi dici che hai già provato ma, non vedendo come hai effettivamente impostato la cosa e non potendo testare personalmente la pagina, qualche dubbio mi viene.

    Prova ad impostarla come ti ho indicato e magari riporta qui il codice di ciò che hai fatto, altrimenti viene difficile aiutarti.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  9. #9
    Ok niente Hyphenator non poteva funzionare, ho trovato un altro script su internet che si chiama hyphen che fa al caso mio e impostandolo un po' funziona!
    Grazie lo stesso

  10. #10
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,686
    Bene così, mi fa piacere che tu sia riuscito comunque a risolvere
    Buon proseguimento.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

Tag per questa discussione

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