11548 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

J'ai une fonction AJAX qui lorsque je clique sur un lien :

1/. Charge un fichier XML
2/. Charge un fichier XSL
3/. Transforme le XML en XHTML grâce au XSL et affiche le résultat dans un div à la place du contenu du div qu'il y avait avant.

En gros, elle me permet de changer de contenu lors du clik sur un lien sans recharger la page.

Avec FF, aucun problème mais IE lui bug. Smiley lol En effet, vu que mon lien sert juste à appeler la fonction, je ne lui mais pas de "href" et du coup IE ne le reconnait pas en tant que lien.
Cependant, si je met un href, IE m'envoit vers une page et ma fonction ne sert à rien.


Y a t-il un moyen qui permet de faire considérer à IE que ma balise est un lien même si elle ne possède pas de href ?

Merci à ce qui m'aideront,
LoK.
Si tu utilises cette syntaxe :
<a onclick="...">...</a>

pour une fois, j'approuverais Microsoft : ce n'est pas un lien. Par définition, un lien possède un attribut href qui le met en relation avec la page visée.

Tu peux corriger cela de plusieurs manières :
<a href="javascript:....">...</a>

ou
<a href="#" onclick=".... return false;">...</a>

Le return false est très important car sans lui, la page se recharge ou tout au moins cela fait remonter les ascenceurs.

Sachant qu'aucune des deux solutions n'est meilleure que l'autre.
Euh...

tu as une alternative au cas où JS soit inactif ? au cas où XHR soit inutilisable sur le poste client ?

La façon dont tu décris ça laisse présager que non...

Procéder comme suit serait plus sûr et réglerais ton problème par la même :

<a href="lavraiepagehtmlaucasou.html" id="changepage">blabla</a>
[code]
[code]
function bidul()
{
  var truc = document.getElementById('changepage');
  if (truc) {
   // ta tambouill au onclick
   truc.onclick = function()
   {
      // bla bla
      return false; // pour désactiver l'effet du href
   };
  }
}

window.onload = function()
{
bidul();
};


Externalisation du code JS, optionalité du code JS, propreté du code HTML...
Modifié par Olivier (26 Apr 2006 - 17:50)
Merci cela marche parfaitement. Smiley smile

a écrit :
tu as une alternative au cas où JS soit inactif ? au cas où XHR soit inutilisable sur le poste client ?

La façon dont tu décris ça laisse présager que non...

Je vais me faire tapper sur les doigts si je réponds. Smiley confused En fait, j'impose l'utilisation du JS et des cookies (c'est toutefois dans un contexte particulier puisque mon site est un MMORPG).

Tu peux m'en dire un peu plus sur ta technique que je voit si je peux l'appliquer (ca serait tout de même mieux) ?
Bah, dans tous les cas tu fais ton traitement XML+XSL->xHTML côté serveur (si j'ai tout suivi), donc hop hop, tu fais une page qui fait ça et t'es content.

Soit JS et XHR sont dispo, et là tu recharges pas la page mais tu récupères ce que ta moulinette XML+XSL te sors et tu la recraches sur le page. Soit le lien fonctionne classiquement et ouvre la page souhaitée avec un système d'include par exemple qui inclu le résultat de la moulinette XML+XSL là où il faut.

Pour la partie interaction JS, c'est ce que je t'ai donné au dessus.

Avec le fonctionnement AJAX etc, c'est pareil, sinon ça fait une page classique ce qui n'est pas si archaïque que ça finalement quand on y pense Smiley cligne et permet à tous de l'utiliser.

Après, à toi de voir tes choix et besoins, perso quand je peux offrir une alternative, je ne m'en prive pas.
A toi de voir aussi si l'utilisation d'AJAX est ici réellement nécessaire (confort d'utilisation réel -> rechargement fréquent ? ...) ou si ça tient du gadget un peu hype même si bien rigolo pour le webmestre Smiley cligne
Je crois qu'une fois mes pages créees, je vais faire des tests avec les différents navigateurs pour voir lesquels supportent l'objet XMLHttpRequest (normalement aucun problème pour Mozilla, IE, FF, NT et ca sera intégré je crois dans la prochaine version de Opéra) et en fonction du résultat, j'adapterais.

Pour le JS, je m'arrangerait pour prévenir l'utilsateur chez qui le JS ne marche pas afin qu'il ne se retrouve pas juste avec une erreur 404.

Quant à l'utilisation d'AJAX, je ne pense pas que ce soit un luxe : le serveur va suffisament travaillé pour d'autre chose.

Je garde ta réponse en mémoire. Smiley smile