Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Javascript unobtrusive [ JavaScript et le navigateur / Problème de compatibilité ] (duterte)

mercredi 19 novembre 2008 à 13:07:19 | Javascript unobtrusive

duterte

Bonjour, Débutant en javascript, j'ai créé un script très utile pour afficher du contenu dynamique dans plusieurs div à la demande. Je souhaiterais rendre ce script unobtrusive, afin de le rendre compatible avec les navigateurs ayant désactivé javascript. D'autre part, je ne suis pas sûr qu'il soit obtimisé. Quelqu'un peut-il m'aider ? Ma page 1
 
Ma page 2
 

mercredi 19 novembre 2008 à 13:31:49 | Re : Javascript unobtrusive

duterte

Petit problème lors de la saisie du message

Dans le head :

<

script type="text/javascript" language="javascript">
function ouverture(url,id)
{
var xhr_object = null;
var position = id;
if(window.XMLHttpRequest)
{ xhr_object = new XMLHttpRequest(); }
else if(window.ActiveXObject)
{ xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); }
else
{ alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); }

// On ouvre la requete vers la page désirée
xhr_object.open("GET", url, true);
xhr_object.onreadystatechange = function()
{
if ( xhr_object.readyState == 4 )
{
if(xhr_object.status  != 200)
{
document.getElementById(position).innerHTML ="Erreur " + xhr_object.status;
} else
{
// j'affiche ou je cache dans la DIV spécifiées le contenu retourné par le fichier

if (document.getElementById)
{
if (document.getElementById(position).style.display == "block")
{ document.getElementById(position).style.display = 'none'; }
else if (document.getElementById(position).style.display == "none")
{ document.getElementById(position).style.display = 'block'; }
else { document.getElementById(id).style.display = 'none'; }
}
document.getElementById(position).innerHTML = xhr_object.responseText;
}
} else { document.getElementById(position).innerHTML = '<p style="text-align:center">Chargement des données en cours...</p>'; }
}
// dans le cas du get
xhr_object.send(null);
};
</script>

Dans le body :

<

a href="./page1.html" onclick="ouverture(this.getAttribute('href'),'page'); return false;">Ma page 1</a>
<div id="page" style="display:none; width:300px; height:300px; border:1px dashed #ccc; overflow:auto">&nbsp;</div>
<

a href="./page2.html" onclick="ouverture(this.getAttribute('href'),'page2'); return false;">Ma page 2</a>
<div id="page2" style="display:none; width:300px; height:300px; border:1px dashed #ccc; overflow:auto">&nbsp;</div>

mercredi 19 novembre 2008 à 17:20:54 | Re : Javascript unobtrusive

PetoleTeam

Membre Club
Bonjour,
J'aurais au moins appris un mot aujourdh'ui! unobtrusive
mais
...le rendre compatible avec les navigateurs ayant désactivé javascript
est un non sens, me semble t-il si j'ai tout bien compris...

Toujours si j'ai bien compris le sens du mot, ton soucis et qu'il te faut passer par une class déclarée dans les balises concernées.
exemple :
<a href="page_1.html" class="ouverture_auto">Voir la page 1</a>
<a href="page_2.html" class="ouverture_auto">Voir la page 2</a>


dans ton fichier js externe, pour être unobtrusive, il te faut mettre une fonction sur le onload du document qui va récupérer les liens ayant la class ouverture_auto et leur assigner la fonction qui va bien sur l'événement onclick de ceux ci.

Pour ce faire...
à partir de la collection document.links, qui contient les liens de ta page, tu testes si le lien à la bonne classe, avec className, et tu lui affecte la fonction grace à addEventListener ou attachEvent pour IE.

Mais ai je bien percuté !!!!!!
;O)

mercredi 19 novembre 2008 à 17:39:30 | Re : Javascript unobtrusive

duterte

Bien dit,
Je cherche à retirer les instructions javascript inline.
Seulement, grand débutant, je n'arrive pas à écrire les événements onclick et surtout récupérer la variable qui va afficher le contenu de ma page1.html dans la div de destination...

mercredi 19 novembre 2008 à 18:16:27 | Re : Javascript unobtrusive

PetoleTeam

Membre Club
Juste pour une approche e ce que l'on peut faire...
<html>
<head>
<script type="text/javascript">
//------------------
function Init_Page(){
  var Nbr = document.links.length;
  for( i=0; i < Nbr; i++){
    alert( document.links[i].className);
  }
}
</script>
</head>
<body onload="Init_Page();">
<a href="page_1.html" class="ouverture_auto">Voir la page 1</a><br>
<a href="page_2.html" class="ouverture_auto">Voir la page 2</a><br>
<a href="page_3.html" >Voir la page 3</a>
</body>
</html>

;O)

mercredi 19 novembre 2008 à 18:40:57 | Re : Javascript unobtrusive

duterte

Merci
Par contre, je ne sais pas comment instancier le fait qu'un clic doit renvoyer la page vers une div spécifique...

mercredi 19 novembre 2008 à 18:55:08 | Re : Javascript unobtrusive

PetoleTeam

Membre Club
Il te suffit de récupérer l'id du DIV de destination fonction du lien en cours, en lui mettant une id par exemple...
Cela peut donner ceci...
<html>
<head>
<style type="text/css">
div {
  height : 50px;
  width : 400px;
  border : 1px solid gray;
}
</style>
<script type="text/javascript">
//------------------
function Init_Page(){
  var Nbr = document.links.length;
  for( i=0; i < Nbr; i++){
    var O_Lien = document.links[i];              // Recup l'objet Lien
    var szID = 'D' + O_Lien.id;                  // Affecte l'ID de destination
    var O_Dest = document.getElementById( szID); // Recup le DIV destinataire
// alert( O_Lien.className);
    O_Dest.innerHTML = O_Lien.href;              // Ecriture dans DIV correspondant
  }
}
</script>
</head>
<body onload="Init_Page();">
<a id="A_1" href="page_1.html" class="ouverture_auto">Voir la page 1</a><br>
<a id="A_2" href="page_2.html" class="ouverture_auto">Voir la page 2</a><br>
<a id="A_3" href="page_3.html" >Voir la page 3</a>
<div id="DA_1"></div>
<div id="DA_2"></div>
<div id="DA_3"></div>
</body>
</html>

;O)

mercredi 19 novembre 2008 à 21:03:37 | Re : Javascript unobtrusive

duterte

D'accord pour la boucle links.
Par contre la requete onclick n'apparaît pas.
Je crois que je vais rester sur ma version obtrusive...
Merci à toi !

mercredi 19 novembre 2008 à 21:16:39 | Re : Javascript unobtrusive

PetoleTeam

Membre Club
OUPS ! pas bien lu ton dernier envoi...la fatigue ou le blanc ?

<html>
<head>
<style type="text/css">
div {
  height : 50px;
  width : 400px;
  border : 1px solid gray;
}
</style>
<script type="text/javascript">
//----------------------
function Affiche( this_){
  var szID = 'D' + this_.id;                   // Affecte l'ID de destination
  var O_Dest = document.getElementById( szID); // Recup le DIV destinataire
  O_Dest.innerHTML += this_.href;
  return( false);                              // Stop propagation IMPORTANT
}
//------------------
function Init_Page(){
  var Nbr = document.links.length;
  for( i=0; i < Nbr; i++){
    var O_Lien = document.links[i];            // Recup l'obet Lien
    //-- Test si la classe est la bonne
    if( O_Lien.className.indexOf( 'ouverture_auto') > -1){
      O_Lien.onclick = function(){
          return( Affiche( this));             // la fonction sur le onclick
      }
    }
  }
}
</script>
</head>
<body onload="Init_Page();">
<a id="A_1" href="page_1.html" class="ouverture_auto">Voir la page 1</a><br>
<a id="A_2" href="page_2.html" class="ouverture_auto">Voir la page 2</a><br>
<a id="A_3" href="page_3.html" >Voir la page 3</a>
<div id="DA_1">DIV DA_1<br></div>
<div id="DA_2">DIV DA_2<br></div>
</body>
</html>

ceci n'est qu'un exemple de procédure bien sur...
;O)

jeudi 20 novembre 2008 à 09:00:25 | Re : Javascript unobtrusive

duterte

Merci à toi,
Si j'ai bien compris, je dois ensuite placer mon script en l'adaptant en lieu et place de function Affiche( this_);
Car ta fonction affiche le résultat du lien, mais pas le contenu sur le test que j'ai fait...



1 2

Cette discussion est classé dans : script, javascript, page, rendre, unobtrusive


Répondre à ce message

Sujets en rapport avec ce message

appeller une script [ par poitierjohan ] Bonjour,Est-il possible d'appeller un script (écrit en JavaScript) qui est en dehors de ma page hmtl??Autrement dis, que ma page web dans laquelle je javascript et html [ par droyan ] bonjour, j'aimerais avoir un renseignement : j'ai sur une page web un script javascript que l'on m'a donné. Lorsque j'affiche la source de cette page Appel de page php [ par cedriclomb ] Bonjour, Je cherche a faire un script javascript qui appellerai une page php Pourquoi ne pas faire du php direct vous allez me dire ? Et bien c'est to demande de script [ par nikki113 ] bonsoir,je me permets de vous demander un script car je ne connais rien au javascript. Actuellement j apprends le PHP et cela n est pas encore le top. Redirection de page [ par clementio ] Bonjour à tous,D'habitude je "traîne" sur VBFrance mais là je viens vous posez une petite question sur JavaScript.Voilà le problème:Lorque l'on ouvre Recharger une page [ par onzeshow ] Bonjour, je sais que ce script existe je l'ai déjà vu mais ca fait une semaine que je le recherche et impossible de remettre la main dessus...il s'agi executer un script en fin de chargement de la page [ par HackPac ] Lu all !Je possède un système d'échange de bannière. Les membres mettent un code sur leurs page pour afficher aléatoirement les bannières des autres s Mozilla et javascript [ par Zebra1928 ] bonjour à tous !!j'ai la portion de code suivante de la page " mapage.html ": New document<meta http-equiv="Content-Type" content="text/html; charset= Recherche (automatique ou non) de script dans une page [ par luciolis ] Bonjour,Je suis un hébergeur gratuit ayant pas mal de succès, et dans une de mes offres, l'utilisateur doit entrer un code javascript dans sa page ind Problème chargement image javascript [ par Travailleuuse06 ] Bonjour,je suis devant un très gros problème que je n'arrive pas à résoudre. J'ai une page html où j'ai un Dans ma partie javascript, j'ai document.


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.