Lien href OU ajax
1992clement
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Voilà, je monte un site web, et pour améliorer le temps de chargement des pages du site, je souhaite mettre tous mes liens en Ajax.
Seulement, d'après ce que j'ai pu lire, si je met uniquement des liens Ajax, ça va complètement casser le référencement du site.
J'ai trouvé un début de solution sur ce site :
http://devlint.fr/blog/jquery-inclure-page-en-ajax
L'idée est la suivante :
- Si l'utilisateur n'utilise pas le Javascript, on utilisera le lien html normal avec href et on chargera la page complète. Le script Ajax ne sera pas exécuté du coup.
- Si l'utilisateur utilise Javascript, on stoppe l'exécution du href avec du javascript et on lance le script Ajax.
La fonction sensée stopper le href et charger le contenu :
Mon problème :
Le script marche bien, le contenu est inséré en Ajax avec le javascript, et la page complète est rechargée quand je le désactive.
MAIS, avec le javascript, une fois que le contenu Ajax est chargé, mon navigateur commence à charger une nouvelle page (j'imagine que c'est le href qui se lance quand même), et mouline à l'infini. En gros, j'ai une page blanche, avec
"Transfert des données depuis t3590.trafiz.net" dans la barre d'état.
Question : comment éviter que ça se produise ?
Merci.
Voilà, je monte un site web, et pour améliorer le temps de chargement des pages du site, je souhaite mettre tous mes liens en Ajax.
Seulement, d'après ce que j'ai pu lire, si je met uniquement des liens Ajax, ça va complètement casser le référencement du site.
J'ai trouvé un début de solution sur ce site :
http://devlint.fr/blog/jquery-inclure-page-en-ajax
L'idée est la suivante :
- Si l'utilisateur n'utilise pas le Javascript, on utilisera le lien html normal avec href et on chargera la page complète. Le script Ajax ne sera pas exécuté du coup.
- Si l'utilisateur utilise Javascript, on stoppe l'exécution du href avec du javascript et on lance le script Ajax.
La fonction sensée stopper le href et charger le contenu :
$(document).ready(function(){ $('a').click(function(){ var url = $(this).attr('href'); $('#ContenuAjax').load(url); return false; }); });
Mon problème :
Le script marche bien, le contenu est inséré en Ajax avec le javascript, et la page complète est rechargée quand je le désactive.
MAIS, avec le javascript, une fois que le contenu Ajax est chargé, mon navigateur commence à charger une nouvelle page (j'imagine que c'est le href qui se lance quand même), et mouline à l'infini. En gros, j'ai une page blanche, avec
"Transfert des données depuis t3590.trafiz.net" dans la barre d'état.
Question : comment éviter que ça se produise ?
Merci.
A voir également:
- Lien href OU ajax
- Lien url - Guide
- Créer un lien pour partager des photos - Guide
- Verificateur de lien - Guide
- Lien copié - Forum Mobile
- Lien mega ✓ - Forum Webmastering
6 réponses
Oki merci ! :)
J'ai fini par résoudre le problème, mais j'ai tellement torturé le code que je ne sais plus ce qui a modifié quoi >_>
Par contre, j'ai une autre question qui touche plus au référencement :
Est-ce que le nombre de liens pointant vers une page a une influence sur la manière dont elle est référencée, (classement des pages), ou est-ce qu'un seul lien suffit pour qu'elle soit référencée, et que le classement ne tient qu'au contenu ? =)
J'ai fini par résoudre le problème, mais j'ai tellement torturé le code que je ne sais plus ce qui a modifié quoi >_>
Par contre, j'ai une autre question qui touche plus au référencement :
Est-ce que le nombre de liens pointant vers une page a une influence sur la manière dont elle est référencée, (classement des pages), ou est-ce qu'un seul lien suffit pour qu'elle soit référencée, et que le classement ne tient qu'au contenu ? =)
Bon, finalement, je suis revenu à la méthode précédente.
Au final, faut faire comme ça :
Le truc, c'est de faire l'appel à la fonction et le return false avant le href.
Maintenant, j'ai un autre problème :
Dans le fichier "mapage.php", j'ai de nouveau un lien du même style :
Or ce lien là ne marche pas si le contenu a été chargé via Ajax.
En gros :
Index.php charge mapage.php en ajax, qui elle même contient un lien ajax vers mapage2.php. Ce dernier lien ne fonctionne pas alors que le premier, si.
Une solution ? =)
Au final, faut faire comme ça :
<a onclick='ajax("mapage.php"); return false;' href="mapage.php">
Le truc, c'est de faire l'appel à la fonction et le return false avant le href.
Maintenant, j'ai un autre problème :
Dans le fichier "mapage.php", j'ai de nouveau un lien du même style :
<a onclick='ajax("mapage2.php"); return false;' href="mapage2.php">
Or ce lien là ne marche pas si le contenu a été chargé via Ajax.
En gros :
Index.php charge mapage.php en ajax, qui elle même contient un lien ajax vers mapage2.php. Ce dernier lien ne fonctionne pas alors que le premier, si.
Une solution ? =)
C'est bizarre en effet, car ton code est correct... Essaie peut-être de mettre un onclick="return false;" dans ta balise <a>, je ne sais pas si ça changera quelque chose mais ça changera quelque chose mais ça ne coûte rien d'essayer.
Sinon si cela peut te rassurer, Google s'est nettement amélioré et son moteur doit maintenant prendre en charge les liens javascript également dans son référencement... Mais si tu ne veux pas prendre de risques, une alternative à ta solution serait de créer un plan de site avec tes liens ;)
Sinon si cela peut te rassurer, Google s'est nettement amélioré et son moteur doit maintenant prendre en charge les liens javascript également dans son référencement... Mais si tu ne veux pas prendre de risques, une alternative à ta solution serait de créer un plan de site avec tes liens ;)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
si javascript desactivé ça ne marche pas, mais si un internaute désactive son JS, il ne pourra pas naviguer sur beaucoup de sites.
et dans ton cas Ajax ne marchera pas, donc appel de la page .php sans l'effet escompté
et dans ton cas Ajax ne marchera pas, donc appel de la page .php sans l'effet escompté
Le truc, c'est justement de permettre à un utilisateur sans javascript de pouvoir quand même suivre le lien. C'est vrai qu'il n'y a plus beaucoup de personnes dans ce cas, en revanche, je ne suis pas certain que les moteurs de recherche soient à la page. Donc si tu veux que ton site soit référencé, t'as intérêt à prévoir une navigation dégradée.
Sinon, au niveau de ma fonction Ajax(), voilà tout ce qu'elle contient :
On charge le fichier passé en parametre (url) dans la div qu'on veux (divAjax).
Le code fonctionne très bien et permet la navigation dégradée.
Le return false; sert à éviter d'envoyer une requette "normale" à cause du href. Ce qui rechargerait la page comme un lien normal et Ajax n'aurais plus aucune utilité.
Sinon, au niveau de ma fonction Ajax(), voilà tout ce qu'elle contient :
function Ajax(url){ $('#divAjax').load(url); return false; };
On charge le fichier passé en parametre (url) dans la div qu'on veux (divAjax).
Le code fonctionne très bien et permet la navigation dégradée.
Le return false; sert à éviter d'envoyer une requette "normale" à cause du href. Ce qui rechargerait la page comme un lien normal et Ajax n'aurais plus aucune utilité.