layout | title | permalink |
---|---|---|
page |
Manipulation d’objets |
manipulation.html |
Objets de type BOM:
Window, Navigator, Screen, History, Location
Objets de type DOM:
DOM Document, DOM Elements, DOM Attributes, DOM Events, ...
Objets de type HTML:
<a>, <area>, <canvas>, <button>, <form>, <iframe>, <image>,
<input>, <link>, <meta>, <object>, <option>, <select>,
<table>, <td>, <th>, <tr>, <textarea>, ...
Permet de manipuler le navigateur
Tous les navigateurs (IE, Firefox, Chrome, ...) sont des logiciels qui offrent les mêmes fonctionnalités de base
Ouvrir/fermer des onglets, aller à une URL, mémoriser la liste des URL précédemment consultées, etc
Arborescence d'objets
((image))
Méthodes d'interaction avec l'utilisateur par le biais de la fenêtre du navigateur
window.alert("Bienvenue sur ce site !");
//affiche dans la console le nom de code du navigateur utilisé
console.log(window.navigator.appCodeName);
//redirige le navigateur vers une adresse quelconque
window.location = "http://www.univ-pau.fr";
//ouvre un nouvel onglet dans le navigateur
var onglet = window.open('http://www.youtube.com');
//Fais revenir une page en arrière (similaire au boutton 'Back')
window.history.back();
//Affiche dans une boite de dialogue la résolution de l'écran utilisé
window.alert(window.screen.availWidth + "x" + window.screen.availHeight);
//Ecrit de l'html directement dans le document (et supprime l'existant)
window.document.write("<b>Bienvenue à l'université de Pau</b>");
DOM: Document Object Model
Représentation d'un document x(ht)ml sous sa forme 100% objet
- Les balises sont des noeuds et leurs imbrications forment une arborescence
- Cette structure d'arbre est ensuite facile à manipuler
L'arbre DOM est chargé dans le navigateur
- L'arbre est parcouru par le moteur de rendu du navigateur afin de produire l'affichage graphique
- Chaque modification ultérieure de cet arbre force le rafraîchissement de l'affichage graphique
Document XHTML : exemple
<!DOCTYPE html>
<html>
<head>
<title>Bienvenue</title>
<script src="essai.js"></script>
</head>
<body>
<p id="intro">
Pour me contacter : <a href="mailto:moi@example.org">cliquez ici</a>
<ul>
<li>Uniquement en semaine</li>
</ul>
</p>
<h1 class="joli1">S'inscrire à la Newsletter</h1>
<form>
<input type="text" name="news_email"/>
</form>
</body>
</html>
Propriétés d'un nœud:
Popriétés | Commentaires childNodes | nœuds enfants (Array) firstChild | premier nœud enfant lastChild | dernier nœud enfant nextSibling | prochain nœud d'un type (nœud de même niveau) parentNode | nœud parent previousSibling | nœud précédent d'un type (nœud de même niveau) nodeName | nom du nœud nodeValue | valeur / contenu du nœud nodeType | type du nœud innerHTML | contenu littéral html du noeud
Navigation dans l'arbre DOM
Méthodes d'un nœud:
Méthodes | Commentaires
createElement()
| Méthode pour créer un nouvel élément HTML dans le document (div, p, span, a, form, input, etc...).
createTextNode()
| Méthode pour créer un nœud texte.
appendChild()
| Pour ajouter l'élément créé dans le document. L'élément sera ajouté comme étant le dernier nœud enfant d'un élément parent.
insertBefore()
| Pour ajouter l'élément créé avant un autre nœud.
removeChild()
| Pour supprimer un nœud.
Accès direct aux nœuds
Par la valeur de l'attribut id (si il existe)
var result = document.getElementById("intro") ;
// Renverra 0 ou 1 résultat
Par la valeur de l'attribut class (si il existe)
var result = document.getElementsByClassName("joli1") ;
// Renverra 0 ou n résultats
Par le nom de la balise (Tag en anglais)
var result = document.getElementsByTagName("input") ;
// Renverra 0 ou n résultats
Par la valeur de l'attribut name (si il existe)
var result = document.getElementsByName("news_email") ;
// Renverra 0 ou n résultats
Par les sélecteurs CSS
var result = document.querySelector("p#intro") ;
// Renverra 0 ou 1 résultat, le premier trouvé
var result = document.querySelectorAll("ul.joli > li") ;
// Renverra 0 ou n résultats
Exemple qui change les couleurs de fond de tout élément ayant la classe .example
:
var x = document.querySelectorAll(".example");
var i;
for (i = 0; i < x.length; i++) {
x[i].style.backgroundColor = "red";
}
La plus grosse amélioration que JavaScript a connue dans les navigateurs modernes est peut-être le support de la méthode
querySelectorAll
, qui nous permet d’accéder aux éléments du DOM à l’aide de sélecteurs CSS, comme nous le faisons avec jQuery ! - Scott Jehl, dans: Design web responsive et responsable, 2014
Accès par navigation dans l'arbre DOM:
<html>
<head>
<title>Bienvenue</title>
<script>
function changeColor() {
var htmlTag = document.childNodes[0];
var bodyTag = htmlTag.lastChild;
var pTag = bodyTag.firstChild;
pTag.style.color="#0000FF";
}
</script>
</head>
<body onload="changeColor();">
<p>Lorem Ipsum</p>
</body>
</html>
Accès direct, par l'attribut ID('foo'):
<html>
<head>
<title>Bienvenue</title>
<script>
function changeColor() {
var pTag = document.getElementById('foo');
pTag.style.color="#0000FF";
}
</script>
</head>
<body onload="changeColor();">
<p id="foo">Lorem Ipsum</p>
</body>
</html>
Après avoir navigué et atteint le nœud de son choix, il faut agir dessus
Pour cela, il est nécessaire de connaître sa véritable nature (son type)
nœud <body>
? nœud <h1>
?, nœud <img>
? Etc.
Principe : les attributs Html correspondent aux propriétés de l'objet (en notation CamelCase)
<img src="tux.gif" alt="Linux" id="foo"/>
var imgTag = document.getElementById('foo'); //navigation
imgTag.src = "tux2.gif"; //action !
<input type="text" value="" size="5" id="bar"/>
var inputTag = document.getElementById('bar'); //navigation
inputTag.value = "coucou"; //action !
inputTag.size = inputTag.size * 2; //action !