11486 sujets

JavaScript, DOM et API Web HTML5

Hello tout le monde,

Comme le suggère le sujet de ce topic, j'aimerais connaître les différentes méthodes permettant de référencer un contenu injecté en JavaScript.

Pour faire bref, je boss sur un site ou j'ai plusieurs sections de la même structure avec pour chacune un titre, un texte et un lien qui redirige vers un site externe. A partir de ces sections je crée dynamiquement en Javascript/JQuery (donc coté client) un menu avec le nom et le lien de chaque section. Pour le coup je n'ai pas vraiment besoin de référencer mon menu, mais il se peut que dans un contexte similaire j'ai à le faire !

Voila, en espérant que quelqu'un prendra un petit peu de son temps pour me répondre.

Bonne journée à tous Smiley cligne
Modifié par Mathou_du_web (10 Oct 2017 - 13:02)
Modérateur
Bonjour,

cela dépend de la cible. Pour Google la solution est simple: ne rien faire, Google gère cela très bien (Google s'intéresse plus au DOM qu'au code source).

Pour le reste c'est plus gênant.
kustolovic a écrit :
Pour Google la solution est simple: ne rien faire, Google gère cela très bien (Google s'intéresse plus au DOM qu'au code source).

C'est un peu plus compliqué que ça, si j'en juge d'après mon expérience.

J'ai un site qui est essentiellement géré en Javascript, c'est à dire que l'auteur du contenu écrit des choses très simples en HTML avec des snippets qui génèrent des appels de scripts.
Lors du chargement de la page, les scripts s'exécutent et modifient le DOM.
Parmi les modifications su DOM, il y a des choses qui se trouvent dans la balise <head> du genre date de mise à jour, liens entre les pages françaises et anglaises et autres trucs qui peuvent être générés automatiquement sans compliquer la vie de l'auteur.
Je constate que Google envoie parfois des erreurs, du genre
<link rel="alternate" hreflang="en" href="...">

erroné ou tout simplement absent.

Cela doit vouloir dire que Google fait bien l'analyse du DOM, et pas seulement du source, mais le moment où il fait cette analyse doit être juste après le chargement complet de la page: si certains des scripts s'exécutent sur "onload", ils n'ont pas eu le temps d'être exécutés au moment ou Google fait son analyse. J'ai du reste déplacé la génération de ces liens en amont dans le fonctionnement des scripts pour éviter ces problèmes.

Ma recommandation est donc de faire en sorte que ce qu'on veut faire référencer soit généré le plus tôt possible. Les modifications du DOM après chargement de la page ne sont pas toujours pris en compte
.... mais ils le sont parfois, ce qui m'a posé certains problèmes sur un autre site.

Cet autre site est essentiellement composé d'images avec très peu de texte. Or Google fait le référencement à partir du texte, donc un site d'images est souvent mal référencé.
De plus les images sont montrées par un carrousel, donc on n'en voit qu'une seule à la fois, et il faut cliquer dessus pour voir le texte qui s'y rapporte, donc au chargement de la page il y a bien une image (et une seule) affichée, mais sans texte.
J'ai commencé par mettre du texte à la fin de la page dans une <div> avec display:none;
J'ai arrêté, car Google ne prend pas en compte les textes cachés.
J'ai ensuite mis les textes en "visible" mais hors de l'écran et cachés sur onload: très mauvais et contre-productif, on risque un bannissement pour tentative de trucage.
J'ai finalement créé des pages qui contiennent du texte visible, sont atteignables par des liens pas très évidents sur la page, sont tout de même esthétiquement acceptables si l'utilisateur y va, puisque Google va renvoyer sur ces pages ... bref un sérieux bazar.
Modérateur
a écrit :
Cela doit vouloir dire que Google fait bien l'analyse du DOM, et pas seulement du source, mais le moment où il fait cette analyse doit être juste après le chargement complet de la page: si certains des scripts s'exécutent sur "onload", ils n'ont pas eu le temps d'être exécutés au moment ou Google fait son analyse.

Pas tout à fait. Google attend bien pour indexer la page, par contre il récupère apparemment directement et au fur et à mesure les liens vers les autres ressources sans attendre: Les test effectués ici: https://searchengineland.com/tested-googlebot-crawls-javascript-heres-learned-220157 le montrent bien: ajouter un nofollow sur un lien n'est pas pris en compte alors que tout le reste si.
kustolovic a écrit :

Pas tout à fait. Google attend bien pour indexer la page, par contre il récupère apparemment directement et au fur et à mesure les liens vers les autres ressources sans attendre.

Apparemment il récupère aussi les "non liens".
Il me dit que le lien n'existe pas alors qu'il est parfaitement visible dans la page par les outils de développement de Chrome ou FF.
C'est donc bien qu'à un certain moment, il ne prend plus les modifications en cause dans <head>.
Mon sentiment, mais ce n'est qu'un sentiment, c'est que une fois </head> atteint il ne cherche plus.