Accueil > Forum > > > > Javascript unobtrusive
Javascript unobtrusive
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"> </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"> </div>
|
|
mercredi 19 novembre 2008 à 17:20:54 |
Re : Javascript unobtrusive

PetoleTeam
|
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
|
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
|
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
|
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...
|
|
Cette discussion est classée 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.
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|