Javascript
Par PlaceOweb le mercredi, mai 7 2008, 00:00 - Javascript - Lien permanent
Globalement, le JavaScript qui n'était pas actif sur tous les navigateurs, l'est désormais majoritairement depuis les nouvelles version d'IE, FIREFOX et CHROME ce qui a amplifié le WEB 2.0
Evolution du WEB 1.0 (avec de navigateurs au javascript bloqué) vers le WEB 2.0 (javascript optimisé pour les navigateurs)
Puisque la majorité des navigateurs clients web sont compatibles Javascript, on peut passer au WEB 2.0
On retrouve de bonnes bases fondamentales :
- Javascript, chapitre 1 : le grand nettoyage !
- Jamais, au grand jamais, vous ne devez insérer de Javascript directement dans le document
- Le Javascript permet d'améliorer l'expérience de l'utilisateur, ce n'est cependant pas une fonctionnalité fiable à 100%
- Vérifiez qu'un objet est disponible avant de le manipuler
- Écrivez du Javascript, et pas un dialecte particulier à un navigateur
- N'utilisez pas des variables qui ne vous appartiennent pas
- Ne soyez pas dépendant de la souris !
Les fonctions et attributs que nous pouvons utiliser pour parcourir l'arbre d'un document, et comment sauter d'un élément à l'autre. Fonctions servant à atteindre un élément dans une page
getElementById('elementID') renvoie l'élément dont l'id est elementID, en tant qu'object (un objet en Javascript). getElementsByTagName('tag') renvoie tous les éléments dont la balise est tag, en tant qu'array (un tableau en Javascript).
Bien sûr vous pouvez panacher les deux. Par exemple :
document.getElementById('navigation').getElementsByTagName('a')[3]; renvoie le quatrième lien à l'intérieur de l'élément dont l'id est 'navigation'. document.getElementsByTagName('div')[2].getElementsByTagName('p')[0]; renvoie le premier paragraphe à l'intérieur de la troisième div du document.
- Javascript, chapitre 3 : créer du contenu et le détruire
- Créer du nouveau contenu
- Modifier le contenu existant
- Et innerHTML, alors ?
- Javascript, chapitre 4 : l'appel des scripts de la forêt
- Javascript, chapitre 5 : un exemple de formulaire amélioré en Javascript
Quelques astuces Javascript
Positionner le visuel de l'écran là où on le souhaite, remonter tout en haut de la page
void window.scrollTo(Integer x, Integer y)
Description : Positionne les ascenseurs avec un scrolling de x pixels en horizontal et de y pixels en vertical. Voir aussi scrollBy() pour déplacer les ascenceurs
window.scrollTo(0,0); // Tout en haut de la page et à gauche
void window.scrollBy(Integer x, Integer y)
Description : Active l'ascenseur horizontal de x pixels et l'ascenseur vertical de y pixels. Voir aussi scrollTo() pour fixer une position aux ascenseurs.
window.scrollBy(0,100);
Déplacer le visuel de l'écran vers une ancre nommée
Avec la balise ancre suivante : <a name="nameAnchor"></a>
Pour aller sur l'ancre :
window.location.hash=nameAnchor; /
Touche shift ascii javascript, détecter l'événement de click sur une touche (spéciale telle que SHIFT, CRTL, ALT, ALT-GR, ...)
- Event.shiftKey
HTML DOM Event Object
- Event Handlers
- onkeydown A keyboard key is pressed
- onkeypressA keyboard key is pressed or held down
- onkeyup A keyboard key is released
- Mouse / Keyboard Attributes
KeyEvent
Liste des codes ASCII : Key code
- TAB : 9
- ENTER : 14
L'ordre des événements des clés (key events) : Il y a les événements keydown, keypress et les keyup.
Attention, keyPress semble ne fonctionner qu'avec Firefox, il ne fonctionne pas avec IE 6, Chrome ! Utilisez donc plutôt keydown ou keyup selon vos besoins. Voir :
- keydown, keypress, keyup
- Chrome doesn't work with "keypress" event and arrow keys.
- jQuery Event Keypress: Which key was pressed?
- .keypress()
Because of this distinction, when catching special keystrokes such as arrow keys, .keydown() or .keyup() is a better choice.
- .keypress()
Détecter la touche Shift ?
ETAT de la touche SHIFT ( dans la page avec et sans enfoncer SHIFT au préalable) : A vous de cliquer...
function detection(e) { var elt = document.getElementById('resultClick'); e = e || event; elt.innerHTML = e.shiftKey ? 'AVEC' : 'SANS'; return true; }
Reconnaitre touche tapée
(avec/sans touche Alt)
(avec/sans touche Control)
(avec/sans touche Shift)
function shiftKeyPressed(evt) { return (evt && evt.shiftKey); }
typeof
- typeof
- Type Result
- Undefined "undefined"
- Null "object"
- Boolean "boolean"
- Number "number"
- String "string"
- Host object (provided by the JS environment) Implementation-dependent
- Function object (implements [[Call]] in ECMA-262 terms) "function"
- E4X XML object "xml"
- E4X XMLList object "xml"
- Any other object "object"
- Opérateurs pour déterminer le type
- boolean (variable OUI/NON),
- string (variable de chaîne de caractères),
- number (variable numérique),
- function (fonction),
- object (objet),
- undefined (type indéterminé).
cast ou parsing
String to Float
parseFloat("4.333");
String to Int
parseInt("100.5", 10);
javascript arrondir 2 décimal
- toFixed() impose un certain nombre de chiffres après la virgule.
- JavaScript toFixed() Method formats a number to use a specified number of trailing decimals.
- Arrondir à 2 décimales (avec puissances et prototype)
var num = new Number(13.3714); num.toFixed(2);
Try catch finally javascript
- mozilla.org
La spécification JavaScript 1.5 définie six type d'erreur primaire (devshed.com - JavaScript-Exception-Handling):
- EvalError - raised when the eval() functions is used in an incorrect manner;
- RangeError - raised when a numeric variable exceeds its allowed range;
- ReferenceError - raised when an invalid reference is used;
- SyntaxError - raised when a syntax error occurs while parsing JavaScript code;
- TypeError - raised when the type of a variable is not as expected;
- URIError - raised when the encodeURI() or decodeURI() functions are used in an incorrect manner;
try { // Le mauvais code }catch (e) { if (e instanceof TypeError) { } alert(e); alert("Exception.name: " + e.name + " Exception.message: " + e.message); } // Optionnellement le bloc finaly finally { // Action a faire dans tous les cas }
Parcourir un objet en Javascript
for ( var cle in t ) { // cle contient le nom de la clé // on peut obtenir la valeur via t[cle] alert( cle+':'+t[cle] ); }
Écrire dans la console javascript du navigateur
Console.WriteLine("OK BOY");
Console is not defined [Break on this error] Console.WriteLine("OK BOY");
- Utilisez la console JavaScript des navigateurs
- Envoyer des messages vers la console ?
- Débogage JavaScript dans Internet Explorer et Safari
- Console d'erreurs La console d'erreur, disponible dans la plupart des applications basées sous Mozilla, est un outil permettant de suivre le rapport des erreurs de l'application chrome et des pages Web ouvertes par l'utilisateur. Elle affiche les erreurs relatives au JavaScript, les erreurs CSS, et les messages arbitraires du code chrome.
- L'API Console de Firebug
console.log("OK BOY"); // (Test IE6 à 9 sans le déboguer (Outils de développement F12) : Erreur : fait planter le script en cours. Contrairement à Firefox, Chrome, Opera, Safari : OK)
Pour remédier à ce problème de console.log sous IE, on peut rajouter l'objet et sa fonction :
if(!window.console){ // alert("!window.console"); // IE var console = { log:function(o){ // alert(o); } }; }
Ou utiliser : Simulating a Firebug, Safari or Opera debugging console in Microsoft Internet Explorer with Faux Console
Pour Firefox
Pour Internet Explorer, jetez un œil sur :
Plus générique encore
- Firebug Lite : IE6+, Firefox, Opera, Safari and Chrome
Pour la console.log() avec jQuery, voyez les possibilités dans la section jQuery
Vérifier la qualité du code .js avec avec JSLINT
- The JavaScript Code Quality Tool : JSLint
Réduire la taille de son code javascript et l'offusquer (le rendre illisible)
- Closure Compiler de Google
Ressources
- Wikipédia
- Wikibooks
- JavaScript/DOM
- Tout JavaScript.com Scripts, Tutoriaux, ...
- siteduzero.com, tutoriels
- Dynamisez vos sites web avec Javascript !
- Les événements
- Polyfills
- Un Polyfill est un script qui a pour but de fournir une technologie à tous les navigateurs existants, si la méthode n'est pas native au navigateur, on la rajoute.
- Wrapper (au delà de prototype), une méthode supplémentaire pour certains objets natifs du JavaScript.
- Dynamisez vos sites web avec Javascript !
- javascript.developpez.com
- Cours de JavaScript Variables, Objets, Types et Valeurs, Expressions et Opérateurs, Les instructions, Les objets, Les tableaux, Les chaînes de caractères, Les expressions régulières
- Les meilleurs cours et tutoriels JavaScript
- Introduction à JavaScript
- Généralités
- Programmation objet
- Références
- POO JS
- Publications de Thierry Templier
- Javascript Orienté Objet : syntaxe de base des classes JavaScript à l'intention des développeurs PHP Le coût en performances des closures vient du fait que les fonctions sont redéfinies à chaque fois que l'on crée un objet, alors qu'avec prototype, la définition n'était faite qu'une seule fois.
- jsFiddle.net - Online Editor for the Web (JavaScript, MooTools, jQuery, Prototype, YUI, Glow and Dojo, HTML, CSS