Aller au contenu

Sujets conseillés

Posté (modifié)

Bonjour,

suite à une discussion sur wri j'ai découvert avec "horreur" que les robots ne lisaient pas une partie de mon contenu.

La faute à un système d'onglet en javascript.

Voici un exemple de page ici, avec le texte mis en cache ici.

Le problème vient du fait que mes div sont mis par defaut sur display:none. (j'utilise aussi ce système dans mes menus, du coup les robots ne peuvent pas suivre mes liens interne non plus)

Bref la solution serai d'utiliser la balise noscript comme ceci:

				  <script>
document.write("<div id='inscript' style='display:none'>");
</script>
<noscript>
<div id="inscript">
</noscript>

De cette façon tout les div sont visible pour les robots.

Mais il parrait que cette balise n'est pas très bien vu par les robots ?

Qu'en pensez vous?

Modifié par sparh
Posté (modifié)

Les scripts ne sont pas interprétés par tous :

- http://blog.alsacreations.com/2006/01/24/2...-pas-javascript

Ils ne doivent donc pas être imposés aux utilisateurs.

Tous tes contenus doivent être structurés en HTML, mis en forme en CSS et seules les interactions doivent être implémentées en JS.

Il faut donc externalisé, des documents HTML, le CSS et le JS.

Pour le JS, c'est entre autre faisable par le biais des frameworks JS (JQuery, Protoype, etc.) mais je préfère utiliser la méthode addEvent (QuirksMode) :

http://www.quirksmode.org/blog/archives/20...e_winner_1.html

http://www.css4design.com/blog/index.php/2...pt-non-intrusif

A lire :

http://www.journaldunet.com/developpeur/tu...-intrusif.shtml

http://css.alsacreations.com/Tutoriels-Jav...ques-javascript

De ce fait, ton contenu sera "accessible" à tous donc aux moteurs de recherche et la balise <noscript> n'aura plus lieu d'être.

Modifié par yep
Posté

Merci pour ces bon liens.

Le truc c'est que là ça m'obblige à re-coder une grosse partie de mon site!

J'ai vérifié, il y a moins de 2% de mes utilisateurs qui n'on pas le javascript activé, (c'est plus que ce que je pensais) et en effet, ces visiteurs quittent immédiatement le site (normal, beaucoup de fonctionnalitées sont inaccessibles sans javascript).

C'est sur mes prochains codes prendront en compte l'accessibilité mais là ça demande beaucoup trop de travail!

Donc revenons à la question initiale: pensez vous que la balise noscript utilisée dans ce cas précis puisse nuire à mon référencement ? (alors que je la met justement pour que les moteurs puissent lire mon contenu).

--> Pensez vous que Google et autres risquent de pénaliser mon site en pensant que je cloake (ce qui n'est pas le cas)?

Posté (modifié)
Donc revenons à la question initiale: pensez vous que la balise noscript utilisée dans ce cas précis puisse nuire à mon référencement ? (alors que je la met justement pour que les moteurs puissent lire mon contenu).

Je vois mal comment ça pourrait être pénalisé dans ce cas précis.

C'est une solution techniquement un peu bricolée, mais RAS côté problèmes de référencement (à ma connaissance).

Mais si tu n'es pas à l'aise avec cette technique, tu peux simplifier un peu avec un petit script JS externe ou dans le head de ta page, du type:

window.onload = function() {
if (!document.getElementById) return false;
if (!document.getElementById("inscript")) return false;
document.getElementById("inscript").style.display = "none";
}

(Normalement c'est juste mais je suis nul en Javascript, faut vérifier que ça marche...).

Le but est de cacher le bloc (enfin, de le passer en display: none) une fois que la page est chargée.

Par contre, si tu utilises déjà Javascript sur tes pages il est probable que tu aies déjà un script lancé lors de l'évènement window.onload. Utiliser une fonction telle que addLoadEvent serait une bonne chose:

function addLoadEvent(func) {
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function() {
oldonload();
func();
}
}
}

// Ici le reste de tes fonctions JS, et si l'une d'entre elles utilise window.onload il faudra passer par la fonction addLoadEvent à la place.

addLoadEvent(function() {
if (!document.getElementById) return false;
if (!document.getElementById("inscript")) return false;
document.getElementById("inscript").style.display = "none";
});

Modifié par Florent V.
Posté

Je plussois avec Florent V

Les balises <noscripts>. sont lu et suivis par GG. Et tant qu'elles ne presentent pas de liens externes au site elle ne posent aucun probleme cote referencement - il n'y a en tout cas aucune penalite automatiques.

Posté (modifié)

moi je ne plussois pas Florent, les deux méthodes qui sont proposées fonctionnent mais pas partout, d'où ma référence au addEvent réalisé après un concours sur QuirksMode qui est bien plus stable et ne se limite pas au chargement de page.

Petit exemple :

function addEvent( obj, type, fn )
{
if (obj.addEventListener)
obj.addEventListener( type, fn, false );
else if (obj.attachEvent)
{
obj["e"+type+fn] = fn;
obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
obj.attachEvent( "on"+type, obj[type+fn] );
}
}

function main()
{
// Instructions à placer dans cette fonction lancée au chargement de la page
}

// Au chargement ('load') complet de la fenêtre (window), on lance la fonction 'main'
addEvent(window,'load',main);

// window peut également être remplacé par tout autre objet DOM
// 'load' peut également être remplacé pour du 'mouseover', 'mouseout', etc.

http://www.quirksmode.org/blog/archives/20...e_winner_1.html

Modifié par yep

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...