FAQ JavaScriptConsultez toutes les FAQ

Nombre d'auteurs : 43, nombre de questions : 176, dernière mise à jour : 19 décembre 2013 

 
OuvrirSommaireIntroduction

JavaScript (à ne pas confondre avec Java) est un langage interprété à objet orienté prototype.
Il est principalement utilisé sur le Web côté client. C'est-à-dire que c'est le navigateur qui exécute le code. Au contraire des langages de requêtes du style PHP ou ASP qui eux sont exécutés côté serveur : le code que le serveur renvoie au navigateur n'est que du (X)HTML simple. Par conséquent, le JavaScript est utile pour tout ce qui concerne les interactions du client sur la page Web. Il permet ainsi d'améliorer la présentation et l'interactivité des pages Web.

Mais il peut aussi être utilisé côté serveur. Il existe plusieurs déclinaisons du langage qui permettent de l'utiliser dans de nombreux domaines.

Mis à jour le 29 octobre 2011  par sekaijin, simone.51, gwinyam

Lien : À quoi sert le JavaScript ?

JavaScript est ECMAScript ou presque.

Un peu d'histoire ne fait pas de mal : Brendan Eich développe initialement un langage de script côté serveur, appelé LiveScript, pour le compte de Mosaic Communications Corporation.
Le National Center for Supercomputing Applications propriétaire du nom Mosaic force Mosaic Communications Corporation à changer de nom. Ainsi naîtra Netscape. À cette époque Netscape et SUN collaborent pour porter LiveScript sur le navigateur. Ainsi sort en 1995 une nouvelle version du langage, la première à être largement diffusée qui est alors baptisée JavaScript.

Netscape soumet son langage à Ecma International pour en faire un standard. Des premières drafts du standard, Microsoft sort JScript. Adobe s'en empare et crée ActionScript. Le Standard se nomme ECMAScript. Il traite du langage en lui-même.
JavaScript, comme toutes les déclinaisons nées avant le standard, ont été depuis révisées pour s'y conformer. JavaScript est donc une implémentation de ECMAScript .

Créé le 1er mars 2011  par sekaijin

JavaScript, dans son implémentation dans un navigateur, permet d'accéder aux éléments de celui-ci. Mais aussi et surtout au contenu d'une page (X)HTML.
Pour cela, un ensemble de méthodes et d'objets sont intégrés au langage. La norme régissant cette relation est gérée par le W3C. Elle fait partie de l'ensemble de normes régissant le DOM.

Créé le 1er mars 2011  par sekaijin
  • Dans le navigateur, JavaScript est très utilisé pour traiter les événements occasionnés par un internaute sur une page Web, ainsi que pour faire des contrôles sur les formulaires. De plus en plus, on l'utilise pour créer ou modifier l'interface utilisateur d'une page.
  • Sur un serveur Web, il permet d'interagir avec les composants du serveur comme les fichiers, les sockets, les bases de données.
  • Sur un système d'exploitation, il peut être utilisé comme Shell, ou encore pour automatiser certaines tâches d'administration. C'est, entre autres, le cas sous Windows avec l'utilisation de WindowsHostScript.
  • Dans un lecteur SVG, il permet de gérer des animations. De même, ActionScript©, la déclinaison d'Adobe permet d'interagir avec Flash.
Mis à jour le 29 octobre 2011  par sekaijin, simone.51

JAVA et JavaScript sont deux langages totalement différents :

  • JAVA est un langage beaucoup plus complexe que JavaScript (notions de classes, d'héritage, de threads, et encore, vous n'avez rien vu…) ; ;
  • le code source de JAVA est compilé avant son exécution ce qui assure notamment la confidentialité du code (on n'accède pas au code en faisant clic droit > Afficher la source) ;
  • JAVA est de loin plus performant que JavaScript. En JAVA, on peut "quasi" tout faire. Cependant, JavaScript évolue constamment. Le noyau est mis à jour avec de nouvelles fonctionnalités et les frameworks JavaScript ajoutent chacun leur panel de méthodes en tout genre ;
  • JAVA est plus compliqué à mettre en place (besoin d'une machine virtuelle, d'un compilateur…) que JavaScript. Pour faire du JavaScript, il suffit d'un éditeur et d'un navigateur.
Mis à jour le 29 octobre 2011  par simone.51, vermine, gwinyam

1. Avec un script externe (recommandé).

 
Sélectionnez
<script type="text/javascript" src="chemin/vers/script/script.js"></script>

Dans ce cas, la balise doit être vide (de toute façon, si ce n'est pas le cas, son contenu ne sera pas interprété).
L'attribut src doit pointer vers un fichier JavaScript (le plus souvent un fichier .js). Celui-ci ne doit contenir que du code JavaScript.
Une erreur souvent commise est de mettre des balises <script> dans le fichier JavaScript, ce qui provoque une erreur.

Le plus souvent, le fichier appelé sera un fichier .js. Néanmoins, n'importe quelle extension est possible si le serveur lui associe des entêtes HTTP précisant que son contenu est du JavaScript.
Il est donc possible, par exemple, de créer un fichier JavaScript en PHP (ou tout autre langage serveur) :
script.php
Sélectionnez
<?php
header('Content-type: text/javascript; charset=iso-8859-1');
header('Accept-Encoding: gzip, deflate');
if(!empty($_GET['infoScript'])){
	echo "alert('".$_GET['infoScript']."');";
]
else{
	echo "alert('Pas de message à afficher...');";
}
?>
 
Sélectionnez
<script type="text/javascript" src="script.php?infoScript=HelloWorld"></script>

2. Avec un script intégré dans le code HTML.

 
Sélectionnez
<script type="text/javascript">
	// Code JavaScript
</script>

Vous pouvez aussi écrire directement le code JavaScript à l'intérieur de la balise <script> sans préciser l'attribut src. Cela permet d'éviter de faire une requête HTTP supplémentaire, mais rend votre code moins modulaire et ne permet pas de mettre en cache le script.

3. Avec un attribut d'événement.

 
Sélectionnez
<p onclick="this.style.backgroundColor = 'orange';">
Cliquez sur moi, je deviendrais orange !
</p>

Cette dernière méthode est généralement déconseillée, notamment car elle va à l'encontre de la séparation des couches (HTML pour le contenu, CSS pour la mise en forme et JavaScript pour le comportement) rendant ainsi la maintenance du code plus compliquée.

En HTML5, l'attribut type, requis dans les versions précédentes, devient optionnel, il est donc désormais possible d'écrire simplement

 
Sélectionnez
<script>
    // Code JavaScript
</script>
Mis à jour le 6 novembre 2013  par Bovino, SylvainPV

Lien : Comprendre la balise script
Lien : Où placer les scripts dans la page HTML ?

Attribut Rôle Remarques
type Indique le type MIME correspondant au script Le plus souvent, sa valeur est "text/javascript".
Optionnel en HTML5, requis dans les autres versions.
src Indique l'adresse où récupérer le script. Si l'attribut est présent, la balise <script> doit être vide (son contenu ne sera pas exécuté de toute façon).
defer Indique que le script doit être exécuté une fois que le document a été complètement créé. N'agit que sur les scripts externes (présence de l'attribut src).
Tous les navigateurs ne reconnaissent pas cet attribut ou l'interprètent différemment de sa spécification (notamment IE9 et inférieurs et Opera).
async Indique que le script doit être chargé de façon asynchrone permettant de continuer l'interprétation du document pendant le chargement. N'agit que sur les scripts externes (présence de l'attribut src).
IE9 et inférieurs et Opera ne reconnaissent pas cet attribut.
charset Indique l'encodage d'un script externe. N'agit que sur les scripts externes (présence de l'attribut src).
language Indique quel langage de script est utilisé. Même si on le rencontre encore trop souvent, cet attribut est obsolète et ne devrait plus être utilisé !

L'attribut language n'est évoqué ici que pour indiquer qu'il ne faut plus l'utiliser !

Créé le 6 novembre 2013  par Bovino

Lien : Comprendre la balise script

Il s'agit là d'un vaste débat !

Pendant longtemps, il était recommandé de placer les scripts dans la partie <head> de la page. Mais cette façon de procéder pose divers problèmes :

  • un script étant susceptible de créer du contenu dans la page via document.write(), il est nécessaire de garantir à quel endroit de la page ce contenu sera inséré, de ce fait, les scripts sont chargés de façon asynchrone, bloquant ainsi l'interprétation de la page pendant leur chargement et leur exécution ; placer les scripts dans le <head> réduit ainsi la vitesse d'affichage de la page ;
  • en règle générale, les scripts agissent sur les éléments présents dans le document, or lorsque les scripts sont exécutés depuis le <head>, les éléments sur lesquels ils doivent agir n'existent pas encore, il faut donc attendre le chargement complet via un événement pour lancer les fonctions utiles.

Une technique communément acceptée consiste donc à placer les scripts en fin de page, juste avant la fermeture du <body>, pour pallier ces deux inconvénients :

  • l'essentiel du contenu étant déjà affiché (à l'exception des contenus dits remplacés : images, cadres intégrés, animations, …), le visiteur y a accès plus rapidement ;
  • à la fermeture du <body>, toutes les balises existent dans le document et peuvent ainsi être utilisées par JavaScript.
Créé le 6 novembre 2013  par SylvainPV, Bovino

Pour appeler un objet, il y a plusieurs solutions.
Prenons un exemple :

 
Sélectionnez
<form name="exemple">
<table border="0" summary="">
    <tr>
        <td>coucou&lt;/td>
        <td>&lt;img name="name_test" id="test" />&lt;/td>
    </tr>
    <tr>
        <td> &lt;input type="button" name="bouton_changer" id="changer" value="Changer" />&lt;/td>
        <td>&lt;/td>
    </tr>
</table>
</form>

Nous allons donc appeler l'image présente dans la première ligne, deuxième colonne.

  1. document.getElementById('test').propprop est une propriété ou une méthode ;
  2. document.exemple.name_test.propprop est une propriété ou une méthode ;
  3. document.forms['exemple'].elements['name_test'].propprop est une propriété ou une méthode.

Ces trois solutions sont les trois solutions les plus utilisées. La première solution est la solution normalisée, qui doit donc être préconisée.

IE 6 et inférieurs ne font pas la différence entre l'attribut name et l'attribut id. Par conséquent, si vous utilisez la fonction getElementById, n'oubliez pas l'attribut id. Les versions supérieures et les autres navigateurs n'ont pas ce problème.
De plus, IE 9 ne distingue pas les attributs id et name en mode Quircks (pas de doctype dans le document).

Mis à jour le 29 octobre 2011  par simone.51, gwinyam, Auteur

Lien : Informations sur le doctype

On considère actuellement que le pourcentage d'internautes qui n'ont pas JavaScript activé dans leur navigateur est de plus en plus faible. Pour prévenir ces utilisateurs, vous pouvez utiliser les balises HTML :

utilisation des balises noscript
Sélectionnez
<noscript></noscript>
Mis à jour le 29 octobre 2011  par BrYs, gwinyam

Lien : PHP : Comment détecter si JavaScript est activé ou non?

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2004 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.