Quelles sont les différences et les conséquences (bonnes et mauvaises) d’utiliser _ data-src
ou src
attribut de img
tag? Puis-je obtenir les mêmes résultats en utilisant les deux? Si oui, quand faut-il utiliser chacun d'eux?
Les attributs src
et data-src
n'ont rien en commun, sauf qu'ils sont tous deux autorisés par HTML5 CR et qu'ils contiennent tous deux les lettres src
. Tout le reste est différent.
L'attribut src
est défini dans les spécifications HTML et a une signification fonctionnelle.
Le data-src
attribut est juste l’un des infinis ensembles de data-*
attributs, qui n'ont pas de signification définie mais peuvent être utilisés pour inclure des données invisibles dans un élément, pour une utilisation dans les scripts (ou les styles).
Si vous voulez que l'image charge et affiche une image particulière, utilisez .src
pour charger cette URL d'image.
Si vous voulez une métadonnée (sur n’importe quelle balise) pouvant contenir une URL, utilisez data-src
ou n'importe quel data-xxx
que vous voulez sélectionner.
Documentation MDN sur les attributs data-xxxx: https://developer.mozilla.org/en-US/docs/DOM/element.dataset
Exemple de src
sur une balise d'image où l'image charge le JPEG pour vous et l'affiche:
<img id="myImage" src="http://mydomain.com/foo.jpg">
<script>
var imageUrl = document.getElementById("myImage").src;
</script>
Exemple de 'data-src' sur une balise non-image où l'image n'est pas encore chargée - il ne s'agit que d'une métadonnée sur la balise div:
<div id="myDiv" data-src="http://mydomain.com/foo.jpg">
<script>
// in all browsers
var imageUrl = document.getElementById("myDiv").getAttribute("data-src");
// or in modern browsers
var imageUrl = document.getElementById("myDiv").dataset.src;
</script>
Exemple de data-src
sur une balise d’image utilisée comme emplacement pour stocker l’URL d’une autre image:
<img id="myImage" src="http://mydomain.com/foo.jpg" data-src="http://mydomain.com/foo.jpg">
<script>
var item = document.getElementById("myImage");
// switch the image to the URL specified in data-src
item.src = item.dataset.src;
</script>
l'attribut data-src fait partie de la collection d'attributs data- * introduite en HTML5. data-src nous permet de stocker des données supplémentaires qui n'ont aucune signification pour le navigateur, mais qui peuvent être utilisées avec le code Javascript ou les règles CSS.
La première <img />
n'est pas valide - src
est un attribut requis. data-src
est un attribut qui peut être exploité, par exemple, par JavaScript, mais n’a aucune signification de présentation.