11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour
J'ai vu qu'il fallait mettre ses scripts en fin de code html.
j'ai donc mon code
<html>...
<body>....
<script src="Scripts/monscript.js">
alert('ça marche');
</script>
</body>
</html>

mais ça ne marche pas alors que



<html>...
<body>....
<script>
alert('ça marche');
</script>
</body>
</html>

fonctionne

j'ai au début pensé à une erreur dans le script externe, alors je l'ai vidé pour n'avoir qu'une petite ligne d'où l'erreur ne peut provenir
function f() {return 0;}
mais pourtant mettre src empêche le script de s'appeler.
Comment faire ?
Il y a bien un body onload="..." que je pourrais faire mais j'ai envie de regrouper les choses dans l'élément script pour un code plus clair. et j'ai aussi envie de comprendre pourquoi ça ne fonctionne pas ! Smiley smile
Merci
Thomas
Bonjour,

tu nous a donné le rendu final ( la source de ta page html ) et non ton code initial...
le code suivant :

Fichier index.html :

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
	<head>
		<title></title>
		<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
	</head>
	<body>
blablabla truc marchin bidule
		<script type="text/javascript" src="Scripts/monscript.js" ></script>
	</body>
</html>


Fichier monscript.js :

alert('ça marche');


devrait fonctionner.

Peux-tu nous donner les sources de ton code ( et pas le rendu après affichage dans le navigateur ) pour que nous puissions t'aider à comprendre ?
Modifié par n3k0 (07 May 2011 - 12:22)
Merci pour ta réponse, mais non, j'ai bien donné le code initial
dans un cas je mets <script>alert('ca marche');</script> et ça fonctionne
dans l'autre je mets <script src="Scripts/....js"> alert('ça marche pas');</script> et ça ne fonctionne pas
et le fichier .js est un fichier avec ce qu'on veut dedans, juste alert('fichier monscript.js'); par exemple

bref il y a l'alerte dans un cas et pas dans l'autre
En fait le but de la manœuvre est de pouvoir appeler des fonctions sur le script que l'on charge, le tout en fin de page quand les éléments DOM sont là.

<html>...
<body>...
<script src="...js">
init_toto();
lancer_superanimation();
</script>
</body>
</html>

on peut le faire dans le onload="" de body mais si l'on a plusieurs lignes ce n'est pas commode, d'autre part on ne sait pas trop à quel fichier ça fait référence
cependant, pour une raison que j'ignore, le code que j'écris n'est pas appelé
ThomasJJ a écrit :
Merci pour ta réponse, mais non, j'ai bien donné le code initial
dans un cas je mets &lt;script&gt;alert('ca marche');&lt;/script&gt; et ça fonctionne
dans l'autre je mets &lt;script src=&quot;Scripts/....js&quot;&gt; alert('ça marche pas');&lt;/script&gt; et ça ne fonctionne pas
et le fichier .js est un fichier avec ce qu'on veut dedans, juste alert('fichier monscript.js'); par exemple

bref il y a l'alerte dans un cas et pas dans l'autre


c'est normal... tu mets du contenu dans ta balise <script> alors que tu lui renseignes une URL source... il ne sait pas quoi faire.
Crée un repertoire "Scripts" à l'interieur duquel tu crées un fichier "monscript.js" et mets ton contenu "alert('ca marche');" dans ce fichier.
Quand tu spécifies l'attribut " src " à la balise script, cela veut dire que le navigateur va charger un fichier distant. Il ne faut rien mettre dans le contenu de la balise, tout doit se trouver dans le fichier distant.
Mets " <script src="Scripts/monfichier.js"></script> " au lieu de " <script src="Scripts/monfichier.js">alert('ça marche pas');</script> " et ça devrait renter
Modifié par n3k0 (08 May 2011 - 21:52)
Merci pour cette réponse. J'aurai du me renseigner sur ce que faisait la balise <script> !
Je pensais que src = dire où est le fichier (si c'est une bibliothèque de fonctions), puis qu'il fallait appeler les fonctions dans le même script

pour résumer :
<script src="Scripts/monscript.js"></script>
<script>
appeler ici des fonctions de monscript.js
</script>

fonctionne, et d'ailleurs j'espère que c'est une norme que le navigateur doive attendre de charger le script avant d'exécuter le second (?)