Partage
  • Partager sur Facebook
  • Partager sur Twitter

insertion de fichiers ".js" externes

Internet Explorer et Safari en gréve du JavaScript!

Sujet résolu
    21 juillet 2010 à 18:52:38

    Salut tout le monde,

    Je commence cette semaine la création de mon prochain site et c'est pour moi la première occasion d'user de JavaScript depuis que j'ai lu le tutoriel. Et là, c'est le drame :p

    premier jour de création donc et j'écris quelques lignes de code directement dans le fichier XHTML (dans un balise script bien sur!) quand tout d'un coup, je me dis que, vu l'ampleur et le nombre des codes que je risque de devoir créer, dans un souci de clarté, je ferais mieux de mettre le javascript dans un fichier externe. Donc je sort toutes mes lignes pour les mettre dans le fameux fichier externe et, dans le fichier XHTML, j'utilise l'attribut "src" de la balise <script> pour spécifier où se trouve le code... Et je teste tout ça en locale:
    Ça fonctionne! Sauf sous Internet Explorer et Safari!

    Y a-t-il une raison que cela ne marche pas sous ces navigateurs??? Y a-t-il un moyen d'utiliser des fichier ".js" malgré tout?
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      21 juillet 2010 à 19:52:46

      donnes la ligne avec laquelle tu as inclus ton script. On peut pas deviner ce qui marche pas :p
      • Partager sur Facebook
      • Partager sur Twitter
        21 juillet 2010 à 20:10:18

        <script type="text/javascript" src=site/resolsearch.js"></script>
        


        Et resolsearch.js contient simplement:
        alert('ca marche!');
        

        pour le test.

        je ne pense pas qu'il y ai d'erreur puisque ça marche sur FireFox Chrome et Opera (mais pas sur Ie ni sur Safari...)
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          21 juillet 2010 à 20:13:55

          Tout ce que je peux dire c'est qu'il faut arrêter de penser et commencer à lire.

          Comment tu définis un attribut en HTML déjà ?


          ^^
          • Partager sur Facebook
          • Partager sur Twitter
            21 juillet 2010 à 22:07:44

            Salut,

            Mets des guillemets après ton = au src.



            <script type="text/javascript" src="site/resolsearch.js"></script>
            


            Warec ^^
            • Partager sur Facebook
            • Partager sur Twitter
              21 juillet 2010 à 22:40:29

              Désolé, j'ai fait une faute de frappe en recopiant mais tout les guillemets sont bien à leurs place dans le fichier...
              • Partager sur Facebook
              • Partager sur Twitter
                21 juillet 2010 à 22:56:35

                Normalement un petit
                head.innerHTML .= '<script type="text/javascript" src="site/resolsearch.js"></script>';
                

                Devrait suffire, dit nous comment tu inclues ton code !

                Sinon une autre méthode (plus populaire si je ne m'abuses) consiste à utiliser de l'ajax.
                • Partager sur Facebook
                • Partager sur Twitter
                Venez sur Zeste de Savoir, on est bien :-) . Mon tuto PHPSpec.
                  21 juillet 2010 à 23:45:55

                  C'est bon, j'ai trouvé d'où venait le problème.

                  En faite, apparemment, FireFox et les autres exécute le Javascript et s'arrête dés qu'il rencontre une erreur, alors que Internet Explorer vérifie la totalité du code avant d'en exécuter ne serai-ce qu'un ligne (ce que j' ignorai)!


                  Du coup, comme j'avais fait une erreur à la dernière ligne (j'ai écrit "d\utiliser" au lieu de "d\'utiliser"), il n'exécutai même pas la première ligne (celle qui me servait de test)!

                  Par contre, n'existe-t-il pas un moyen de savoir à quelle ligne on a fait une faute en Javascript?(comme sous PHP, java, etc...)
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    21 juillet 2010 à 23:54:17

                    la console d'erreurs sous FF, la console d'erreurs sous chrome, la console d'erreurs de IE8.

                    T'as le choix.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      22 juillet 2010 à 0:22:10

                      Salut,
                      je rencontre exactement le même problème en ce moment, le JavaScript dans un fichier externe ne fonctionne pas.

                      la ligne avec laquelle le script est inclus
                      <script type="text/javascript" src="js/lib.js"></script>
                      


                      le code en question
                      // JavaScript Document
                      
                      var last_news_id = "#news_0"; 
                      var hidetime=400, showtime=600;
                      if($("#a_la_une > div").length>1){
                      
                      	$(".carrousel_slide").click(function(){
                      		clearTimeout(time);
                      		$(".slideshowpause").attr("src","images/play.png");
                      		$("#playpause").attr("class","slideshowplay");
                      		var h=1;
                      		var k=$(this).attr("id").split("_");
                      		var f=k.length;
                      		var e=last_news_id.split("_");
                      		var j=e.length;
                      		var g=parseInt($("#a_la_une > div").length)-h;
                      		if(last_news_id=="#news_0"){
                      			$("#news_"+g).hide(1,function(){
                      				for(var l=0;l<=g;l++){
                      					$("#news_"+l).hide();
                      					$("#cpt_news_"+l).css("background-color","transparent")
                      				}
                      				$("#news_"+(parseInt(k[f-1]))).fadeIn(showtime);
                      				$("#cpt_news_"+(parseInt(k[f-1]))).css("background-color","#ddd");
                      				$("#titre_a_la_une").html($("#title_"+(parseInt(k[f-1]))).html())
                      			})
                      		}
                      		else{
                      			$("#news_"+parseInt(e[j-1])).hide(1,function(){
                      				for(var l=0;l<=g;l++){
                      					$("#news_"+l).hide();
                      					$("#cpt_news_"+l).css("background-color","transparent")
                      				}
                      				$("#news_"+(parseInt(k[f-1]))).fadeIn(showtime);
                      				$("#cpt_news_"+(parseInt(k[f-1]))).css("background-color","#ddd");
                      				$("#titre_a_la_une").html($("#title_"+(parseInt(k[f-1]))).html())
                      			}
                      		)}
                      		last_news_id=(parseInt(k[f-1])==g)?"#news_0":"#news_"+(parseInt(k[f-1]));
                      		return false
                      	});
                      
                      
                      	if(parseInt($("#auto_slide").attr("value"))>0){
                      		$(".bloc_foot_right_home").append('<img src="images/pause.png" class="slideshowpause" id="playpause">');
                      		time=setInterval(slideSwitch,parseInt($("#auto_slide").attr("value"))+hidetime+showtime)
                      	}
                      	else{
                      	$(".bloc_foot_right_home").append('<img src="images/play.png" class="slideshowplay" id="playpause">')
                      	}
                      	$("#playpause").click(function(){
                      		if($("#playpause").attr("class")=="slideshowpause"){
                      			clearTimeout(time);
                      			$(".slideshowpause").attr("src","images/play.png");
                      			$(".slideshowpause").attr("class","slideshowplay")
                      		}
                      		else{
                      			if($("#playpause").attr("class")=="slideshowplay"){
                      				$(".slideshowplay").attr("src","images/pause.png");
                      				$(".slideshowplay").attr("class","slideshowpause");
                      				slideSwitch();
                      				time=setInterval(slideSwitch,parseInt($("#auto_slide").attr("value"))+hidetime+showtime)
                      			}
                      		}
                      	});
                      	
                      	$(".contenu_a_la_une").click(function(){
                      		if($(".slideshowpause").attr("class")=="slideshowpause"){
                      			clearTimeout(time);
                      			$(".slideshowpause").attr("src","images/play.png");
                      			$("#playpause").attr("class","slideshowplay")
                      		}
                      	})
                      }
                      
                      
                      
                       
                      
                      function slideSwitch(){
                      	var c=1;
                      	var a=last_news_id.split("_");
                      	var e=a.length;
                      	var b=parseInt($("#a_la_une > div").length)-c;
                      	var d=(parseInt(a[e-1])+1);
                      	if(last_news_id=="#news_0"){
                      		$("#news_"+b).fadeOut(hidetime,function(){
                      			$("#news_"+d).fadeIn(showtime);
                      			$("#cpt_news_"+b).css("background-color","transparent");
                      			$("#cpt_news_"+d).css("background-color","#ddd");$("#titre_a_la_une").html($("#title_"+d).html())
                      		})
                      	}
                      	else{
                      		$("#news_"+parseInt(a[e-1])).fadeOut(hidetime,function(){
                      			$("#news_"+d).fadeIn(showtime);
                      			$("#cpt_news_"+parseInt(a[e-1])).css("background-color","transparent");
                      			$("#cpt_news_"+d).css("background-color","#ddd");
                      			$("#titre_a_la_une").html($("#title_"+d).html())
                      		})
                      	}
                      	last_news_id=(parseInt(a[e-1])+1==b)?"#news_0":"#news_"+d;
                      	return false
                      	
                      }
                      


                      J’ai essayé avec
                      head.innerHTML .= '<script type="text/javascript" src="site/resolsearch.js"></script>';
                      


                      Mais head.innerHTML apparait dans le navigateur
                      • Partager sur Facebook
                      • Partager sur Twitter
                        22 juillet 2010 à 0:37:57

                        var hidetime=400, showtime=600;/ 
                        if($("#a_la_une > div").length>1){
                        /
                        


                        Les "/" ne sont-ils pas de trop? Il y a aussi des endroits, juste avant les "}", où tu ne met pas de ";", je ne sais pas si ça peut poser problème mais tant qu'à faire, autant les mettre non? Je n'ai pas regardé le code plus en détail, donc il y a peut etre d'autre erreures(d'autant que tu utilises des trucs que je ne connais pas encore)...

                        Merci nod_, je n'y avais effectivement pas pensé...

                        Edit: tout compte fait, je n'ais pas trouvé de consoles d'erreurs sur internet explorer et Safari, et les consoles des autres programmes ne tiquent pas pour l'erreur qui pose problème a Safari et Ie...
                        • Partager sur Facebook
                        • Partager sur Twitter
                          22 juillet 2010 à 0:45:25

                          Le « / » était pour le commentaire que j’ai oublié de supprimé
                          • Partager sur Facebook
                          • Partager sur Twitter
                            22 juillet 2010 à 10:16:18

                            Citation : Maxuel

                            J’ai essayé avec

                            head.innerHTML .= '<script type="text/javascript" src="site/resolsearch.js"></script>';
                            



                            Mais head.innerHTML apparait dans le navigateur



                            head.innerHTML += '<script type="text/javascript" src="site/resolsearch.js"></script>';
                            

                            ...

                            [edit] Et, de façon précise, qu'est-ce que tu cherche à faire, au final ?
                            • Partager sur Facebook
                            • Partager sur Twitter

                            insertion de fichiers ".js" externes

                            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                            • Editeur
                            • Markdown