Bonjour,
Comment fonctionne le complément de Firefox nommé " l'ardoise javascript" ?
Car il affiche des messages d'erreur assez abscons sans donner les numeros de ligne où se situent les erreurs de syntaxe.
Version imprimable
Bonjour,
Comment fonctionne le complément de Firefox nommé " l'ardoise javascript" ?
Car il affiche des messages d'erreur assez abscons sans donner les numeros de ligne où se situent les erreurs de syntaxe.
Bonjour,
si je saisie dans l'ardoise ce code
l’affichage de l'erreur seraCode:
1
2
3 var i = 15; var total = i * b; console.log( total);
difficile de dire que cela est abscons, la variable b est non définie à la ligne 2Code:
1
2
3
4 /* Exception: b is not defined @Scratchpad:2 */
:fleche: Ardoise JavaScript.
Bonjour,
En entrant dans l'ardoise un exemple basique de code JS suivant (tout à fait conforme)
La fonction Examiner de l'Ardoise me renvoie le message suivantCode:
1
2
3
4
5
6
7 <script type='text/javascript' language="javascript"> var chaine01="bonjour chers lecteurs"; var chaine02=""; chaine02=chaine01.substring(8,13); document.write(chaine01+"<br>"); document.write(chaine02); </script>
Sinon en supprimant les balises <script>Code:
1
2
3 /* Exception: SyntaxError: expected expression, got '<' @Scratchpad/1:1
j'ai cet autre message d'erreurCode:
1
2
3
4
5 var chaine01="bonjour chers lecteurs"; var chaine02=""; chaine02=chaine01.substring(8,13); document.write(chaine01+"<br>"); document.write(chaine02);
Je ne comprends toujours pas la signification des messages d'erreurs renvoyés !Code:
1
2 Exception: InvalidStateError: An attempt was made to use an object that is not, or is no longer, usable @Scratchpad/3:13:0
<script> est du HTML, ça n'a rien à faire dans une console JavaScript.
et document.write() écrit sur un document en état ouvert. Une fois la page chargée, le document est fermé et document.write n'est plus utilisable. Je te conseille d'ailleurs de ne plus jamais utiliser cette fonction et de toujours préférer les méthodes de manipulation du DOM, voir : http://blog.developpez.com/web/p1065..._en_javascript
Le problème c'est que parmi les dizaines de bouquins parus et destinés à initier les débutants en javascript, la première méthode qu'ils donnent dans les exemples ....c'est l'affichage sur la page avec write().
Difficile ensuite de dire, on s'est trompé, il ne faut plus utiliser write().
C'est un peu comme les frames en HTML; tout le monde trouvait ça génial mais aujoursd'hui c'est banni.
Des bouquins vieux de plus de dix ans j'imagine. Le Web n'a que 25 ans, il a pourtant bien changé en si peu de temps. Pour s'assurer de suivre les bonnes pratiques, pas le choix, il faut une veille technique constante. J'ai moi-même publié un bouquin technique il y a 18 mois et je voudrais bien pouvoir actualiser certaines sections...
Encore une fois, il s'agit là d'une confusion commune.
L'ardoise JavaScript, bien que très proche de l'implémentation dans un navigateur, est légèrement différente.
Par exemple un navigateur attend une description HTML pour construire un DOM. Dans ce DOM s'il y a un élément de type script il appelle l'interprète JavaScript pour exécuter le code JS.
L'ardoise, elle, a déjà un DOM défini. Elle attend donc du code JavaScript et pas du HTML.
De plus contrairement au chargement d'une description HTML le DOM est fermé.
Plus précisément lorsque le moteur HTML du navigateur interprète la description HTML, il crée un objet DOM Document qui est ouvert. Tant que l'interprétation de la description HTML n'est pas finie, le document reste ouvert. Si à ce moment-là, il rencontre une balise script, le code JS est interprété DOM ouvert.
Cette caractéristique permet d'exécuter du code JavaScript avant la fermeture. C’est a dire pendant l'interprétation de la description HTML. (c'est un résidu de la préhistoire qui ne devrait plus être utilisé, mais qui est maintenu, car la pub par exemple, en fait un usage intensif)
Il est ensuite fermé. À partir de là, le code JavaScript s'exécute DOM fermé.
Alors qu'avec l'ardoise le DOM est créé et fermé. Ensuite seulement le code JS est interprété.
A+JYT