Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Javascript - Problemi script
Forum - Javascript - Problemi script

Avatar
Pammachio (Normal User)
Rookie


Messaggi: 56
Iscritto: 16/04/2008

Segnala al moderatore
Postato alle 16:29
Venerdì, 08/08/2014
Ciao a tutti,
sto provando a far funzionare jquery in modalità asincrona e seguendo questa guida seoblog.giorgiotave.it/caricamento-asincrono-jquery/3798 ci sono quasi riuscito, se non fosse che va su chrome e non su firefox.

Così funziona dappertutto (ma è sincrono):
Codice sorgente - presumibilmente Plain Text

  1. Codice sorgente - presumibilmente Plain Text

    <script type="text/javascript" src="js/jquery.min.js"></script>
  2.  
  3. <script async src="js/jquery.cycle.all.js"></script>
  4. <script type="text/javascript">
  5. $(document).ready(function() {
  6.     $('.slideshow').cycle({
  7.     fx:      'blindZ',
  8.  });
  9. });
  10. </script>




E questo asincrono invece non va su firefox:
Codice sorgente - presumibilmente Javascript

  1. Codice sorgente - presumibilmente Javascript

    <script type="text/javascript">
  2. var jQl={q:[],dq:[],dMap:[],dLoaded:0,gs:[],ready:function(e){if(typeof e=="function"){jQl.q.push(e)}return jQl},getScript:function(e,t){jQl.gs.push([e,t])},unq:function(){for(var e=0;e<jQl.q.length;e++)jQl.q[e]();jQl.q=[]},ungs:function(){for(var e=0;e<jQl.gs.length;e++)jQuery.getScript(jQl.gs[e][0],jQl.gs[e][1]);jQl.gs=[]},bId:null,boot:function(e){if(typeof window.jQuery.fn=="undefined"){if(!jQl.bId){jQl.bId=setInterval(function(){jQl.boot(e)},25)}return}if(!window.jQuery.isReady){return;}if(jQl.bId){clearInterval(jQl.bId)}jQl.bId=0;jQl.testFinished();jQl.ungs();jQuery(jQl.unq());if(typeof e=="function")e()},booted:function(){return jQl.bId===0},testFinished:function(){if(typeof window.jQuery.fn=="undefined"){setTimeout(jQl.testFinished,10);return}if(jQl.dLoaded!=jQl.dMap.length){setTimeout(jQl.testFinished,10);return}jQl.unqjQdep(true);$(jQl.unq())},loadjQ:function(e,t){setTimeout(function(){var t=document.createElement("script");t.src=e;document.getElementsByTagName("head")[0].appendChild(t)},1);jQl.boot(t)},loadjQdep:function(e){jQl.dMap.push(e);jQl.loadxhr(e,jQl.qdep);jQl.dCount++},qdep:function(e,t){if(e){jQl.dLoaded++;jQl.dq[t]=e}},unqjQdep:function(e){if(typeof e!="undefined"&&typeof window.jQuery.fn=="undefined"){setTimeout(jQl.unqjQdep,50);return}for(var t=0;t<jQl.dMap.length;t++)jQl.rs(jQl.dq[jQl.dMap[t]]);jQl.dq=[];jQl.dMap=[]},rs:function(e,t){var n=document.createElement("script");document.getElementsByTagName("head")[0].appendChild(n);n.text=e},loadxhr:function(e,t){var n;n=jQl.getxo();n.onreadystatechange=function(){if(n.readyState!=4||200!=n.status)return;t(n.responseText,e)};try{n.open("GET",e,true);n.send("")}catch(r){}},getxo:function(){var e=false;try{e=new XMLHttpRequest}catch(t){var n=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];for(var r=0;r<n.length;++r){try{e=new ActiveXObject(n[r])}catch(t){continue}break}}finally{return e}},pageIsLoaded:false,setIsLoaded:function(){jQl.pageIsLoaded=true;}};if(typeof window.jQuery=="undefined"){var $=jQl.ready,jQuery=$;$.getScript=jQl.getScript};if (window.attachEvent){window.attachEvent('onload',jQl.setIsLoaded);}else if(window.addEventListener){window.addEventListener('load',jQl.setIsLoaded,false);}else{document.addEventListener('load',jQl.setIsLoaded,false);}
  3.  
  4. jQl.loadjQ('//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js');
  5. jQl.loadjQdep('js/jquery.cycle.all.js');
  6. </script>
  7.  
  8. <script type="text/javascript">
  9.     $(document).ready(function () {
  10.         $(".slideshow").cycle({
  11.             fx:      'blindZ',
  12.         });
  13.     });
  14. </script>




L'esempio del secondo codice è visibile su coursesenligne.eu
Qualcuno capisce perchè non va?
Un grazie in anticipo per ogni consiglio


__________________
Prova ed inserisci annunci gratis anche con video https://www.guardaffari.it/inserisci.php

PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 16:56
Venerdì, 08/08/2014
Innanzitutto spiegaci cosa vuoi fare. Cosa deve eseguire il browser in modo asincrono? Un animazione? Un caricamento Ajax?
Che risultato ottieni nel primo caso? Cosa vorresti modificare? Le parole tecniche servono ma solo se vengono usate in un contesto completo ed esplicativo.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:18
Venerdì, 08/08/2014
Non fare affidamento su async per impostare l'ordine in cui vengono eseguiti gli script. E' semplicemente un'ottimizzazione per velocizzare il caricamento di una pagina.

Non funziona perche' l'evento onload può essere eseguito prima che gli script vengano caricati.

Ultima modifica effettuata da pierotofy il 08/08/2014 alle 17:19


Il mio blog: https://piero.dev
PM Quote
Avatar
Bonny (Member)
Expert


Messaggi: 437
Iscritto: 24/04/2009

Segnala al moderatore
Postato alle 17:54
Venerdì, 08/08/2014
Ti consiglio di usare RequireJS è una libreria che ti permette ti caricare i moduli js quando ne hai il bisogno.
Ho scritto un articolo introduttivo  a riguardo, un esempio d'uso:
http://www.lucabonaldo.it/alcune-librerie-aiutano/

PM Quote
Avatar
Pammachio (Normal User)
Rookie


Messaggi: 56
Iscritto: 16/04/2008

Segnala al moderatore
Postato alle 17:19
Sabato, 09/08/2014
Testo quotato

Postato originariamente da Roby94:

Innanzitutto spiegaci cosa vuoi fare. Cosa deve eseguire il browser in modo asincrono? Un animazione? Un caricamento Ajax?
Che risultato ottieni nel primo caso? Cosa vorresti modificare? Le parole tecniche servono ma solo se vengono usate in un contesto completo ed esplicativo.



deve eseguire jquery, che poi fa eseguire lo slide di immagini

PM Quote
Avatar
Pammachio (Normal User)
Rookie


Messaggi: 56
Iscritto: 16/04/2008

Segnala al moderatore
Postato alle 17:20
Sabato, 09/08/2014
Testo quotato

Postato originariamente da pierotofy:

Non fare affidamento su async per impostare l'ordine in cui vengono eseguiti gli script. E' semplicemente un'ottimizzazione per velocizzare il caricamento di una pagina.

Non funziona perche' l'evento onload può essere eseguito prima che gli script vengano caricati.




scusa, ma su chrome ed explorer va tutto però, è solo firefox che da problemi
non si riesce a correggere quell'evento onload?
grazie

PM Quote
Avatar
Pammachio (Normal User)
Rookie


Messaggi: 56
Iscritto: 16/04/2008

Segnala al moderatore
Postato alle 17:21
Sabato, 09/08/2014
Testo quotato

Postato originariamente da Bonny:

Ti consiglio di usare RequireJS è una libreria che ti permette ti caricare i moduli js quando ne hai il bisogno.
Ho scritto un articolo introduttivo  a riguardo, un esempio d'uso:
http://www.lucabonaldo.it/alcune-librerie-aiutano/



ci ho dato un'occhiata ma è un po complicatuccio: non sai aiutarmi per caso, per applicarlo a questo caso?
grazie

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 21:29
Sabato, 09/08/2014
Testo quotato

Postato originariamente da Pammachio:
scusa, ma su chrome ed explorer va tutto però, è solo firefox che da problemi
non si riesce a correggere quell'evento onload?



No. Non c'e' niente di sbagliato nell'evento onload. Il fatto che funzioni su Chrome ed Explorer e' una pura coincidenza che potrebbe cambiare in una versione futura.

Sposterei questo:

Codice sorgente - presumibilmente Plain Text

  1. $('.slideshow').cycle({
  2.     fx:      'blindZ',
  3.  });



All'interno di js/jquery.cycle.all.js (in fondo).


Il mio blog: https://piero.dev
PM Quote