Amélioration du balisage structurel avec JavaScript
Points clés
- Le balise structurée améliorée avec JavaScript peut considérablement améliorer l'accessibilité et la maintenabilité du contenu de la page Web tout en réduisant la taille du fichier.
- JavaScript peut être utilisé efficacement pour ajouter dynamiquement la fonctionnalité aux éléments HTML, tels que l'insertion automatique des liens de référence en références de blocs à l'aide de l'attribut
- .
cite
L'intégration de JavaScript avec des balises structurées vous permet de créer des interfaces utilisateur dynamiques, telles que des panneaux d'onglet sans rafraîchissement de page. - Il est crucial de s'assurer que les améliorations JavaScript ne gênent pas la fonctionnalité de base des pages Web; même si JavaScript est désactivé, la page doit rester fonctionnelle.
- Les technologies JavaScript avancées telles que la gestion des événements et les opérations DOM peuvent être utilisées sans interférer avec les scripts existants ou les paramètres de navigateur, assurer la compatibilité et améliorer l'expérience utilisateur.
Référence du bloc
Pour notre premier exemple, jetons un coup d'œil aux éléments de référence en blocs. Cet élément est souvent confondu avec l'application de l'indentation, mais son utilisation correcte est que les références de marquage qui devraient être visuellement séparées du texte environnant. La balise de référence de bloc de démarrage peut avoir un attribut CITE en option qui doit contenir l'URL de la page source de citation. Le seul problème avec la propriété CITE est que le navigateur l'ignore complètement. Les puristes de tag peuvent l'apprécier, mais d'un point de vue purement pratique, l'utilisation n'a pas d'avantages au-delà de la satisfaction de l'utilisation de la bonne marque. C'est là que JavaScript entre en jeu. En utilisant DOM, vous pouvez ajouter un lien à la source de la citation au bas de n'importe quelle référence de bloc avec l'attribut CITE. Voici le code de fonction qui fait ceci:
function extractBlockquoteCitations() { var quotes = document.getElementsByTagName('blockquote'); for (var i = 0; i < quotes.length; i++) { var cite = quotes[i].getAttribute('cite'); if (cite) { var a = document.createElement('a'); a.setAttribute('href', cite); a.setAttribute('title', cite); a.appendChild(document.createTextNode('Source')); var p = document.createElement('p'); p.className = 'blockquotesource'; p.appendChild(a); quotes[i].appendChild(p); } } }
var quotes = document.getElementsByTagName('blockquote');
Cette ligne de code utilise la méthode DOM getElementsByTagName
pour trouver tous les éléments de référence de bloc dans la page actuelle et les attribuer à un tableau nommé quotes
(en fait htmlcollection, mais c'est une structure de données qui se comporte comme un tableau).
for (var i = 0; i < quotes.length; i ) { ... }
Maintenant, nous traversons le nœud de référence du bloc collecté. Chaque fois que nous boucons, nous utilisons la méthode getAttribute
pour récupérer l'attribut cite de l'élément. Si la propriété CITE est définie, nous passerons à la partie intéressante: créer un lien "source" au bas de la citation.
var a = document.createElement('a'); a.setAttribute('href', cite); a.setAttribute('title', cite);
Lorsque nous voulons ajouter dynamiquement de nouveaux éléments HTML à la page à l'aide du DOM, la bonne façon de le faire est de créer ces éléments par programme à l'aide de la méthode createElement
. Les lignes ci-dessus créent un nouvel élément «A» et l'attribuent les attributs HREF et Title, qui sont tous deux définis comme URL de la citation.
a.appendChild(document.createTextNode('Source'));
Nous voulons que l'élément de lien contienne un texte que les utilisateurs peuvent cliquer pour activer le lien. Le nœud de texte d'origine est créé à l'aide de la méthode createTextNode
. DOM traite les éléments HTML comme composant un arbre, donc pour ajouter du texte à notre lien nouvellement créé, nous devons appeler sa méthode appendChild
.
var p = document.createElement('p'); p.className = 'blockquotesource'; p.appendChild(a);
Pour nous permettre de styliser de nouveaux liens de manière flexible à l'aide de CSS, nous pouvons l'envelopper dans un élément de paragraphe. Le code ci-dessus crée un tel élément, définit sa classe sur "Blockquotesource" pour fournir un crochet CSS, puis ajoute le lien à lui en utilisant appendChild
. À ce stade, le nouveau fragment de document que nous avons construit est équivalent à la HTML suivante:
<code><p> <a href="https://www.php.cn/link/a725c77dfdec0a53250d0709ed36e1fe" title="https://www.php.cn/link/a725c77dfdec0a53250d0709ed36e1fe">Source</a> </p>
À l'heure actuelle, notre extrait est toujours invisible car bien que nous l'ayons créé en mémoire, nous ne l'avons pas encore attachée à notre documentation. C'est ce que fait la dernière ligne de la fonction:
quotes[i].appendChild(p);
quotes[i]
appendChild
est l'élément de référence de bloc sur lequel nous travaillons actuellement.
Il y a deux étapes supplémentaires. Tout d'abord, nous devons exécuter la fonction ci-dessus lorsque la page est chargée pour la première fois. Il existe de nombreuses façons d'y parvenir. Le moyen le plus simple est d'ajouter un appel à la fonction à la propriété Onload de l'élément corporel du document:
Cela fonctionne bien, mais nous pouvons le faire mieux. Étant donné que nos fonctions JavaScript seront hébergées dans des fichiers externes, ne serait-il pas plus significatif pour que les fichiers externes entraînent l'exécution des fonctions? L'approche naïve consiste à utiliser le code JavaScript suivant:
window.onload = extractBlockquoteCitations;
//
Notez que nous fournissons le nom de la fonction, mais ignorez le () à la fin, ce qui entraînera l'exécution de la fonction. JavaScript prend en charge le style de programmation fonctionnelle, ce qui signifie que les fonctions peuvent être transmises sous forme de paramètres, stockées dans des structures de données, et peuvent même être renvoyées à partir d'autres fonctions comme tout autre objet de données. Je vais discuter de ce sujet davantage dans les prochains articles, mais le résultat est que l'attribution de la fonction à window.onload
le fera exécuter après le chargement de la page.
Cependant, cette solution présente également un inconvénient. Si vous souhaitez utiliser plusieurs scripts exécutés une fois la charge de page terminée sur une page donnée, le dernier script qui s'inscrit à window.onload
sera le seul script qui s'exécute. Ce qui est vraiment nécessaire, c'est un moyen de fixer notre fonction au gestionnaire Onload de l'objet Window sans écraser ce qui est déjà là. Malheureusement, Internet Explorer et d'autres navigateurs diffèrent dans la façon de gérer de telles pièces jointes dynamiques; Ce qui suit est la fonction:
function extractBlockquoteCitations() { var quotes = document.getElementsByTagName('blockquote'); for (var i = 0; i < quotes.length; i++) { var cite = quotes[i].getAttribute('cite'); if (cite) { var a = document.createElement('a'); a.setAttribute('href', cite); a.setAttribute('title', cite); a.appendChild(document.createTextNode('Source')); var p = document.createElement('p'); p.className = 'blockquotesource'; p.appendChild(a); quotes[i].appendChild(p); } } }
Ce qui suit est le code pour ajouter notre fonction BlockQuotes à l'événement de charge de l'objet de fenêtre:
addEvent(window, 'load', extractBlockquoteCitations);
La dernière étape consiste à coiffer la citation avec CSS. Voici un extrait de code CSS relativement simple qui gère les références de blocs:
function addEvent(obj, evType, fn){ if (obj.addEventListener){ obj.addEventListener(evType, fn, false); return true; } else if (obj.attachEvent){ var r = obj.attachEvent("on"+evType, fn); return r; } else { return false; } }
Le produit fini peut être consulté ici.
Commutateur de panneau
Maintenant, considérons un effet dynamique plus avancé - le commutateur de panneau. L'objectif ici est de placer plusieurs panneaux sur la page (en utilisant des balises Div) et d'afficher un seul panneau à la fois. Un ensemble de liens toujours visibles peut être utilisé pour sélectionner le panneau actuellement affiché. Ceci est utile pour créer des interfaces à onglets pour parcourir une gamme d'écrans associés sans rafraîchir la page à chaque fois que vous sélectionnez un onglet.
Chaque fois que vous utilisez JavaScript pour améliorer votre page, vous devez vous souvenir d'une bonne règle selon laquelle la page doit toujours être disponible même si JavaScript est désactivé. Dans ce cas, cela signifie que la solution idéale devrait fonctionner comme annoncé lorsque JavaScript est activé, mais dans un environnement non javascript, tous les panneaux doivent être affichés sur la page, chaque lien se liant directement au panneau pertinent et en utilisant des extraits URL.
Alors, c'est la marque la plus simple qui puisse fonctionner:
Étonnamment, ce qui précède est presque tout le balisage dont nous avons besoin pour accrocher un javascript pour créer l'effet souhaité. Nous pouvons continuer avec le code ci-dessus, mais ajoutons une classe au lien pour indiquer clairement que nous voulons effectuer des opérations spéciales sur eux:
<a href="https://www.php.cn/link/65dfa16ba6de9bdb34ea435c9fe2a425" class="toggle">Panel 1</a> | <a href="https://www.php.cn/link/379d08c7a38df48c777c07ea990a3bcf" class="toggle">Panel 2</a>
//
Ce qui suit est de savoir comment fonctionne JavaScript. Lorsque la page se charge, le script analysera tous les liens sur la page pour tous les liens qui contiennent "basculer" dans sa classe. Pour tous les liens trouvés, l'attribut HREF est vérifié et l'élément spécifié est positionné et ajouté au tableau d'élément cible. Tous les autres éléments sauf le premier élément seront "fermés", donc lorsque la page se chargera, seul le premier panneau restera visible. Le lien lui-même attachera un gestionnaire d'événements JavaScript de sorte que lorsqu'ils sont activés, leurs panneaux correspondants peuvent être affichés.
Le script complet peut être consulté ici. Ce qui suit est une explication étape par étape du fonctionnement du code.
var et_toggleElements = [];
La première ligne crée un tableau mondial vide qui enregistrera des références aux éléments du panneau sur la page. Parce que ce script a des variables globales et de nombreuses fonctions, nous préfixons chaque fonction avec "ET_" (pour "Toggle facile") - ce qui réduit la possibilité que notre fonction aura des conflits de nom avec d'autres scripts chargés sur la même page.
/* Initialisation */ function et_init() { var i, link, id, target, first; first = true; for (i = 0; (link = document.links[i]); i ) { ... }
Jusqu'à présent, nous avons initialisé certaines variables, réglé le premier drapeau sur true et commencé à itération de tous les liens du document. La déclaration des variables utilisant var
est très importante car elle garantit que la variable est locale à la fonction. Sans cette étape, ils seront accessibles à l'échelle mondiale et pourront interférer avec d'autres scripts.
if (/btoggleb/.exec(link.className)) { ... }
Cette condition vérifie si la classe actuellement liée contient "bascule". Nous utilisons des expressions régulières au lieu de simplement vérifier link.className == 'toggle'
, car les propriétés de classe peuvent contenir plusieurs classes, séparées par des espaces. /btoggleb/
est une expression régulière; b
correspond partiellement à la "limite du mot", qui peut être le début ou la fin d'un espace ou d'une chaîne.
id = link.href.split('#')[1];
Si la liste de classe liée contient une bascule, nous supposons que la cible de la liaison est un extrait d'URL.
link.href.split('#')
Divisez le lien href sur la balise # - nous savons que la partie qui nous intéresse est après #, nous indexons donc directement le tableau de résultat à l'aide de [1]
pour extraire l'ID cible.
target = document.getElementById(id); et_toggleElements[et_toggleElements.length] = target;
Ici, nous faisons une autre supposition que le lien indique que l'élément existe. Nous utilisons la méthode getElementById()
pour obtenir l'élément, puis l'ajoutons à notre tableau d'éléments en l'attribuant à un indice de tableau égal à la longueur actuelle du tableau. Cela fonctionne parce que le tableau commence à indexer à partir de 0, mais la longueur du tableau compte de 1; donc, la longueur du tableau est également l'indice de la fente vide suivante dans le tableau.
if (first) { first = false; } else { target.style.display = 'none'; }
C'est là que le premier logo que nous avons défini plus tôt entre en jeu. Nous voulons que le premier panneau sur le site Web reste visible, tandis que les autres sont cachés en utilisant JavaScript équivalent à "Afficher: aucun" dans CSS. Ce drapeau nous permet de le faire.
link.onclick = et_toggle;
Enfin, nous attribuons la fonction et_toggle
à l'événement lié onclick
, ce qui fait que la fonction est appelée chaque fois que le lien est activé. L'étape suivante consiste à définir la fonction.
function extractBlockquoteCitations() { var quotes = document.getElementsByTagName('blockquote'); for (var i = 0; i < quotes.length; i++) { var cite = quotes[i].getAttribute('cite'); if (cite) { var a = document.createElement('a'); a.setAttribute('href', cite); a.setAttribute('title', cite); a.appendChild(document.createTextNode('Source')); var p = document.createElement('p'); p.className = 'blockquotesource'; p.appendChild(a); quotes[i].appendChild(p); } } }
Encore une fois, nous utilisons la méthode split
pour extraire l'ID du lien.
Maintenant que nous savons quel panneau afficher, nous pouvons parcourir notre tableau d'éléments et fermer tous les autres éléments, sauf celui dont l'ID correspond à l'ID du panneau souhaité.
En retournant Faux, nous empêchons le lien de suivre réellement lorsqu'il est activé, ce qui peut provoquer des sauts indésirables sur les pages visionnées dans le navigateur.
La dernière étape consiste à enregistrer la fonction addEvent
à l'événement de charge de la fenêtre en utilisant la fonction et_init
décrite précédemment.
addEvent(window, 'load', et_init);
Vous pouvez afficher le code d'achèvement en cours d'exécution ici.
Conclusion
Dans cet article, nous voyons deux façons que les marqueurs bien structurés peuvent être utilisés avec JavaScript et DOM W3C pour des effets utiles. J'espère que ce post vous inspire à trouver de nouvelles façons d'utiliser JavaScript et le tagging intelligent.
lecture plus approfondie
Il existe de nombreux autres excellents exemples d'effets JavaScript basés sur des balises structurées. Voici quelques exemples qui valent la peine d'être prêts à faire attention:
- Aaron Boodman's Labels.js
- beaux titres de Stuart Langridge
- Aqlists de Stuart Langridge
- STUART LANGRIDGE'S SORTTtable
- Table des matières de Peter Paul-Koch
Des questions fréquemment posées sur les balises structurées en javascript
Que sont les balises structurées dans JavaScript?
Les balises structurées en JavaScript sont l'utilisation d'éléments HTML pour décrire le contenu et la structure d'un document Web. Ces éléments comprennent des titres, des paragraphes, des listes, etc. JavaScript peut manipuler ces éléments pour créer des pages Web dynamiques et interactives. Par exemple, JavaScript peut modifier le contenu d'un élément HTML, modifier le style (CSS) d'un élément HTML et même ajouter de nouveaux éléments HTML.
Comment JavaScript interagit-il avec les éléments HTML?
JavaScript interagit avec les éléments HTML via le modèle d'objet de document (DOM). DOM représente la structure d'une page Web, que JavaScript peut fonctionner. Par exemple, JavaScript peut utiliser la méthode document.createTextNode()
pour créer un nouveau nœud de texte, puis l'ajouter à un élément HTML existant.
Quels sont les nœuds de texte en javascript?
Un nœud de texte dans JavaScript est un type de nœud qui représente le contenu texte d'un élément ou d'un attribut. Il peut être créé à l'aide de la méthode document.createTextNode()
. Cette méthode crée un nouveau nœud de texte qui peut être attaché à un élément HTML existant, vous permettant d'ajouter dynamiquement du texte à la page Web.
Comment ajouter JavaScript à HTML?
JavaScript peut être ajouté à HTML de plusieurs manières. Vous pouvez utiliser la balise <script></script>
pour l'inclure directement dans un fichier html, ou vous pouvez utiliser l'attribut <script></script>
de la balise src
pour lier vers un fichier javascript externe. Vous pouvez également utiliser des propriétés d'événements telles que onclick
ou onload
pour exécuter du code JavaScript lorsqu'un événement spécifique se produit.
Comment utiliser la méthode document.createTextNode()
?
La méthode document.createTextNode()
est utilisée pour créer un nouveau nœud de texte. Appelez d'abord cette méthode avec le texte que vous souhaitez ajouter en tant que paramètre. Cela renvoie un nouveau nœud de texte, qui peut ensuite être attaché à un élément HTML existant à l'aide de la méthode appendChild()
.
Quel est le modèle d'objet de document (DOM)?
Document Object Model (DOM) est l'interface de programmation pour les documents HTML et XML. Il représente la structure d'un document en tant qu'arbre d'objets, chaque objet représentant une partie du document. JavaScript peut interagir avec le DOM pour manipuler le contenu et la structure d'une page Web.
Comment modifier le contenu des éléments HTML à l'aide de JavaScript?
Vous pouvez modifier le contenu d'un élément HTML à l'aide de l'attribut innerHTML
dans JavaScript. Cette propriété peut être utilisée pour obtenir ou définir le contenu HTML d'un élément. Par exemple, s'il y a un élément avec ID "Myelement", il peut être modifié comme ceci: document.getElementById('myElement').innerHTML = 'New content';
.
Comment changer le style des éléments HTML à l'aide de JavaScript?
Vous pouvez modifier le style des éléments HTML à l'aide de l'attribut style
dans JavaScript. Cette propriété est un objet qui contient toutes les propriétés CSS de l'élément. Par exemple, s'il y a un élément avec ID "Myelement", il peut être modifié comme ceci: document.getElementById('myElement').style.color = 'red';
.
Comment ajouter de nouveaux éléments HTML à l'aide de JavaScript?
Vous pouvez ajouter de nouveaux éléments HTML à l'aide de la méthode createElement()
dans JavaScript. Cette méthode crée un nouvel élément, qui peut ensuite être attaché à un élément existant en utilisant la méthode appendChild()
. Par exemple, vous pouvez créer un nouveau paragraphe et l'ajouter au corps du document comme suit: var p = document.createElement('p'); document.body.appendChild(p);
.
Quelles sont les propriétés de l'événement en JavaScript?
L'attribut d'événement dans JavaScript est utilisé pour définir le code JavaScript à exécuter lorsqu'un événement spécifique se produit. Ces événements peuvent inclure de cliquer sur un bouton (onclick
), de charger une page (onload
) ou de déplacer la souris sur un élément (onmouseover
), etc. Le code de l'événement est défini directement dans les propriétés de l'élément HTML.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

Explorez la mise en œuvre de la fonction de glisser et de réglage du panneau de type VScode dans le frontal. Dans le développement frontal, comment implémenter un VScode comme ...
