begin process at 2010 03 21 00:38:28
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Menu & Co

 > ONGLETS REPOSANT SUR DES DIV ET DU CSS

ONGLETS REPOSANT SUR DES DIV ET DU CSS


 Information sur la source

Note :
6,6 / 10 - par 5 personnes
6,60 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Menu & Co Classé sous :onglet, css, prototype Niveau :Initié Date de création :03/07/2007 Date de mise à jour :23/07/2007 21:20:55 Vu / téléchargé :19 602 / 3 070

Auteur : daynos

Ecrire un message privé
Site perso
Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

 Description

Bonjour,

Il existe déjà pas mal de scripts pour générer des onglets, notamment celui de Wonesek repris par Djoad. Malheureusement, son utilisation ne convenait pas à mes besoins. J'ai donc développé ce script, qui utilise non pas un tableau et des bouts d'HTML dans le script, mais des DIV et des CSS. Si vous n'êtes pas familier avec la mise en page de DIV au moyen de CSS, je vous déconseille l'utilisation de ce code. Sans CSS, ça ne ressemble à rien ;)

Cette toute première version gère des onglets TEXTE, HTML, URL chargés dans une iframe, et du contenu chargé avec un peu d'Ajax.

NB : ce script repose sur le framework Prototype version 1.5.1.1 (http://www.prototypejs.org/). Le framework est fournit dans le zip. Ici encore, une petite mise en garde : si vous n'avez jamais mis le nez dans Prototype, vous allez avoir du mal à comprendre mon script.


Je ne suis pas un expert en javascript (je suis plus à l'aise avec PHP et l'actionscript). N'hésitez pas à remonter des bugs ou des optimisations possibles. Merci de votre indulgence ;)

Source

  • /*
  • * Auteur : Daynos <devjs@daynos.net>
  • *
  • * Class Onglet - version 0.1.20070703
  • *
  • * /!\/!\/!\/!\/!\/!\/!\/!\/!\
  • * REQUIERT LE FRAMEWORK JAVASCRIPT "PROTOTYPE"
  • * Prototype JavaScript framework, version 1.5.1.1
  • * (c) 2005-2007 Sam Stephenson
  • * http://www.prototypejs.org/
  • * /!\/!\/!\/!\/!\/!\/!\/!\/!\
  • */
  • Onglet = Class.create ();
  • Onglet.prototype = {
  • Version : '0.2.20070723',
  • element : null, /* calque attribué au gestionnaire d'onglet */
  • initialize: function (element, cssId){
  • this.element = $(element);
  • Object.extend (this.element, __OngletElement);
  • this.element.initialize (cssId);
  • },
  • // Ajouter un onglet de type TEXTE : charge du texte dans le div
  • addOngletTexte: function (titre, contenu) {
  • return this.element.addOnglet (0, titre, contenu);
  • },
  • // Ajouter un onglet de type HTML : charge du code html dans le div
  • addOngletHtml: function (titre, contenu) {
  • return this.element.addOnglet (1, titre, contenu);
  • },
  • // Ajouter un onglet de type URL : charge une page html dans une iframe
  • addOngletUrl: function (titre, contenu) {
  • return this.element.addOnglet (2, titre, contenu);
  • },
  • // Ajouter un onglet de type AJAX : charge une contenu dynamique dans le div
  • addOngletAjax: function (titre, contenu) {
  • return this.element.addOnglet (3, titre, contenu);
  • },
  • // Ajouter un onglet de type CALQUE : récupère le contenu d'un div existant et le place dans un onglet
  • addOngletCalque: function (titre, contenu) {
  • return this.element.addOnglet (4, titre, contenu);
  • },
  • // Affiche l'onglet n°...
  • setFocus: function (n) {
  • this.element.setFocus (n);
  • }
  • }
  • __OngletElement = {
  • oMenu : null, /* calque contenant les boutons du menu */
  • oConteneur : null, /* calque contenant les contenus des onglets */
  • nOnglets : 0, /* nombre d'onglets liés */
  • cssId : null, /* préfixe des css à utiliser */
  • initialize: function (cssId) {
  • this.cssId = cssId;
  • // Ajouter le CSS
  • this.addClassName (this.cssId);
  • // Créer le calque qui contiendra les boutons du menu
  • var menuDiv = document.createElement('div');
  • menuDiv.id = this.id + "_m";
  • this.appendChild (menuDiv);
  • this.oMenu = $(menuDiv.id);
  • Object.extend (this.oMenu, __MenuOnglet);
  • this.oMenu.initialize (cssId);
  • // Créer le calque qui contiendra l'ensemble des onglets
  • var conteneurDiv = document.createElement('div');
  • conteneurDiv.id = this.id + "_c";
  • this.appendChild (conteneurDiv);
  • this.oConteneur = $(conteneurDiv.id);
  • Object.extend (this.oConteneur, __ConteneurOnglet);
  • this.oConteneur.initialize (cssId);
  • },
  • // Ajouter un onglet, retourne l'id du calque "contenu"
  • addOnglet: function (type, titre, contenu) {
  • this.nOnglets++;
  • // créer un bouton pour l'onglet
  • this.oMenu.addBouton (this.nOnglets, titre, this.cssId);
  • // créer un calque pour accueillir le contenu de l'onglet
  • return this.oConteneur.addContenu (this.nOnglets, type, contenu, this.cssId);
  • },
  • setFocus: function (newFocusId) {
  • var contenu = this.oConteneur.getElementId (newFocusId);
  • var bouton = this.oMenu.getElementId (newFocusId);
  • // Cacher tous les contenus
  • this.oConteneur.immediateDescendants().each(Element.hide);
  • // Griser tous les onglets
  • this.oMenu.immediateDescendants().each(__BoutonOnglet.setInactive);
  • // Afficher le contenu de l'onglet désiré
  • $(contenu).show ();
  • // Afficher le bouton de l'onglet désiré
  • $(bouton).setActive (bouton);
  • }
  • }
  • __MenuOnglet = {
  • initialize: function () {
  • this.addClassName (this.up(0).cssId + "_menu");
  • },
  • addBouton: function (ongletId, texte) {
  • // Créer le calque du bouton
  • var nouveauDiv = document.createElement('div');
  • nouveauDiv.id = this.getElementId (ongletId);
  • nouveauDiv.ongletId = ongletId;
  • this.appendChild (nouveauDiv);
  • Object.extend ($(nouveauDiv.id), __BoutonOnglet);
  • $(nouveauDiv.id).initialize (texte);
  • },
  • getElementId: function (n) {
  • return this.id + "_b" + n;
  • }
  • }
  • __ConteneurOnglet = {
  • initialize: function (cssId) {
  • this.addClassName (cssId + "_conteneur");
  • },
  • addContenu: function (ongletId, type, contenu, cssId) {
  • // Créer le calque du contenu
  • var nouveauDiv = document.createElement('div');
  • nouveauDiv.id = this.getElementId (ongletId);
  • this.appendChild (nouveauDiv);
  • Object.extend ($(nouveauDiv.id), __ContenuOnglet);
  • $(nouveauDiv.id).initialize (type, contenu, cssId);
  • return nouveauDiv.id;
  • },
  • getElementId: function (n){
  • return this.id + "_c" + n;
  • }
  • }
  • __BoutonOnglet = {
  • initialize: function (texte) {
  • this.appendChild (document.createTextNode(texte));
  • this.setInactive ();
  • // Surveiller les click sur le bouton
  • this.observe ('click', function(event){
  • var elm = Event.element(event);
  • $(elm).up(1).setFocus ($(elm).ongletId);
  • });
  • },
  • setActive: function (element) {
  • if (!element) {element = this;}
  • var cssId = $(element).up(1).cssId;
  • if ($(element).hasClassName (cssId + "_bouton_off")) {
  • $(element).removeClassName (cssId + "_bouton_off");
  • }
  • $(element).addClassName (cssId + "_bouton");
  • },
  • setInactive: function (element) {
  • if (!element) {element = this;}
  • var cssId = $(element).up(1).cssId;
  • if ($(element).hasClassName (cssId + "_bouton")) {
  • $(element).removeClassName (cssId + "_bouton");
  • }
  • $(element).addClassName (cssId + "_bouton_off");
  • }
  • }
  • __ContenuOnglet = {
  • initialize: function (type, valeur, cssId) {
  • // gérer le contenu du div selon son type
  • switch (type) {
  • case 0:
  • // mode texte
  • this.appendChild (document.createTextNode(valeur));
  • break;
  • case 1:
  • // mode html
  • this.update(valeur);
  • break;
  • case 2:
  • // mode url
  • if (Prototype.Browser.IE)
  • {
  • // IE n'aime pas les iframe créé via createElement. Alors il faut lui dédier un bout de code...
  • var html = "<iframe id='" + this.id + "_i'"
  • + " src='" + valeur + "'"
  • + " scrolling='1'"
  • + " frameborder='0'"
  • + "></iframe>";
  • this.update (html);
  • } else {
  • var iframe = document.createElement ('iframe');
  • iframe.id = this.id+"_i";
  • iframe.src = valeur;
  • iframe.scrolling = true;
  • iframe.frameborder = "0";
  • this.appendChild (iframe);
  • }
  • // Appliquer le style css des iframes
  • $(this.id+"_i").addClassName (this.up(1).cssId + "_iframe");
  • break;
  • case 3 :
  • // mode ajax
  • var element = this;
  • new Ajax.Request (valeur, {
  • method: 'get',
  • onSuccess: function (transport) {
  • element.update(transport.responseText);
  • }
  • });
  • break;
  • case 4 :
  • // mode calque
  • this.update ($(valeur).remove ().innerHTML);
  • break;
  • default:
  • this.appendChild (document.createTextNode(valeur));
  • break;
  • }
  • // par défaut, tous les onglets sont invisibles. Utiliser setFocus pour déterminer l'onglet à afficher par défaut.
  • this.hide ();
  • // appliquer le style css au calque
  • this.addClassName (cssId + "_contenu");
  • }
  • }
/*
 *  Auteur : Daynos <devjs@daynos.net> 
 *  
 *  Class Onglet - version 0.1.20070703
 *  
 *  /!\/!\/!\/!\/!\/!\/!\/!\/!\
 *  REQUIERT LE FRAMEWORK JAVASCRIPT "PROTOTYPE"
 *  Prototype JavaScript framework, version 1.5.1.1
 *  (c) 2005-2007 Sam Stephenson
 *  http://www.prototypejs.org/
 *  /!\/!\/!\/!\/!\/!\/!\/!\/!\
*/


Onglet = Class.create ();
Onglet.prototype = {
	Version				: '0.2.20070723',
	element				: null,				/* calque attribué au gestionnaire d'onglet */
	
	initialize: function (element, cssId){
		this.element = $(element);
		Object.extend (this.element, __OngletElement);
		this.element.initialize (cssId);
	},
	
	// Ajouter un onglet de type TEXTE : charge du texte dans le div
	addOngletTexte: function (titre, contenu) {
		return this.element.addOnglet (0, titre, contenu);
	},

	// Ajouter un onglet de type HTML : charge du code html dans le div
	addOngletHtml: function (titre, contenu) {
		return this.element.addOnglet (1, titre, contenu);
	},

	// Ajouter un onglet de type URL : charge une page html dans une iframe
	addOngletUrl: function (titre, contenu) {
		return this.element.addOnglet (2, titre, contenu);
	},
	
	// Ajouter un onglet de type AJAX : charge une contenu dynamique dans le div
	addOngletAjax: function (titre, contenu) {
		return this.element.addOnglet (3, titre, contenu);
	},
	
	// Ajouter un onglet de type CALQUE : récupère le contenu d'un div existant et le place dans un onglet
	addOngletCalque: function (titre, contenu) {
		return this.element.addOnglet (4, titre, contenu);
	},
	
	// Affiche l'onglet n°...
	setFocus: function (n) {
		this.element.setFocus (n);
	}
}

__OngletElement = {
	oMenu				: null,				/* calque contenant les boutons du menu */
	oConteneur			: null,				/* calque contenant les contenus des onglets */
	nOnglets			: 0,				/* nombre d'onglets liés */
	cssId				: null,				/* préfixe des css à utiliser */

	initialize: function (cssId) {
		this.cssId 		= cssId;
		
		// Ajouter le CSS
		this.addClassName (this.cssId);
		
		// Créer le calque qui contiendra les boutons du menu
		var menuDiv = document.createElement('div');
		menuDiv.id = this.id + "_m";
		this.appendChild (menuDiv);
		this.oMenu = $(menuDiv.id);
		Object.extend (this.oMenu, __MenuOnglet);
		this.oMenu.initialize (cssId);
		
		// Créer le calque qui contiendra l'ensemble des onglets
		var conteneurDiv = document.createElement('div');
		conteneurDiv.id = this.id + "_c";
		this.appendChild (conteneurDiv);
		this.oConteneur = $(conteneurDiv.id);
		Object.extend (this.oConteneur, __ConteneurOnglet);
		this.oConteneur.initialize (cssId);
	},
	
	// Ajouter un onglet, retourne l'id du calque "contenu"
	addOnglet: function (type, titre, contenu) {
		this.nOnglets++;
		// créer un bouton pour l'onglet
		this.oMenu.addBouton (this.nOnglets, titre, this.cssId);
		// créer un calque pour accueillir le contenu de l'onglet
		return this.oConteneur.addContenu (this.nOnglets, type, contenu, this.cssId);
	},
	
	setFocus: function (newFocusId) {
		var contenu = this.oConteneur.getElementId (newFocusId);
		var bouton = this.oMenu.getElementId (newFocusId);
		// Cacher tous les contenus
		this.oConteneur.immediateDescendants().each(Element.hide);
		// Griser tous les onglets
		this.oMenu.immediateDescendants().each(__BoutonOnglet.setInactive);
		// Afficher le contenu de l'onglet désiré
		$(contenu).show ();
		// Afficher le bouton de l'onglet désiré
		$(bouton).setActive (bouton);
	}
}

__MenuOnglet = {
	initialize: function () {
		this.addClassName (this.up(0).cssId + "_menu");
	},
	
	addBouton: function (ongletId, texte) {
		// Créer le calque du bouton
		var nouveauDiv = document.createElement('div');
		nouveauDiv.id = this.getElementId (ongletId);
		nouveauDiv.ongletId = ongletId;
		this.appendChild (nouveauDiv);
		Object.extend ($(nouveauDiv.id), __BoutonOnglet);
		$(nouveauDiv.id).initialize (texte);
	},
	
	getElementId: function (n) {
		return this.id + "_b" + n;
	}
	
}

__ConteneurOnglet = {
	initialize: function (cssId) {
		this.addClassName (cssId + "_conteneur");
	},
	
	addContenu: function (ongletId, type, contenu, cssId) {
		// Créer le calque du contenu
		var nouveauDiv = document.createElement('div');
		nouveauDiv.id = this.getElementId (ongletId);
		this.appendChild (nouveauDiv);
		Object.extend ($(nouveauDiv.id), __ContenuOnglet);
		$(nouveauDiv.id).initialize (type, contenu, cssId);
		return nouveauDiv.id;
	},
	
	getElementId: function (n){
		return this.id + "_c" + n;
	}
}

__BoutonOnglet = {
	initialize: function (texte) {
		this.appendChild (document.createTextNode(texte));
		this.setInactive ();
		// Surveiller les click sur le bouton
		this.observe ('click', function(event){
			var elm = Event.element(event);
			$(elm).up(1).setFocus ($(elm).ongletId);
		});
	},
	
	setActive: function (element) {
		if (!element) {element = this;}
		var cssId = $(element).up(1).cssId;
		if ($(element).hasClassName (cssId + "_bouton_off")) {
			$(element).removeClassName (cssId + "_bouton_off");
		}
		$(element).addClassName (cssId + "_bouton");
	},
	
	setInactive: function (element) {
		if (!element) {element = this;}
		var cssId = $(element).up(1).cssId;
		if ($(element).hasClassName (cssId + "_bouton")) {
			$(element).removeClassName (cssId + "_bouton");
		}
		$(element).addClassName (cssId + "_bouton_off");
	}
}

__ContenuOnglet = {
	initialize: function (type, valeur, cssId) {
		// gérer le contenu du div selon son type
		switch (type) {
			case 0:
				// mode texte
				this.appendChild (document.createTextNode(valeur));
				break;
			case 1:
				// mode html
				this.update(valeur);
				break;
			case 2:
				// mode url
				if (Prototype.Browser.IE)
				{
					// IE n'aime pas les iframe créé via createElement. Alors il faut lui dédier un bout de code...
					var html = "<iframe id='" + this.id + "_i'"
							+ " src='" + valeur + "'"
							+ " scrolling='1'"
							+ " frameborder='0'"
							+ "></iframe>";
					this.update (html);
				} else {
					var iframe = document.createElement ('iframe');
					iframe.id			= this.id+"_i";
					iframe.src			= valeur;
					iframe.scrolling	= true;
					iframe.frameborder	= "0";
					this.appendChild (iframe);
				}
				// Appliquer le style css des iframes
				$(this.id+"_i").addClassName (this.up(1).cssId + "_iframe");
				break;
			case 3 :
				// mode ajax
				var element = this;
				new Ajax.Request (valeur, {
					method: 'get',
					onSuccess: function (transport) {
						element.update(transport.responseText);
					}
				});
				break;
			case 4 :
				// mode calque
				this.update ($(valeur).remove ().innerHTML);
				break;
			default:
				this.appendChild (document.createTextNode(valeur));
				break;
		}
		// par défaut, tous les onglets sont invisibles. Utiliser setFocus pour déterminer l'onglet à afficher par défaut.
		this.hide ();
		// appliquer le style css au calque
		this.addClassName (cssId + "_contenu");
		
	}
}

 Conclusion

Je tâcherai de mettre à jour au fur et à mesure des remarques (s'il y en a :p)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

03 juillet 2007 12:56:19 :
- Orthographe -
03 juillet 2007 13:59:34 :
Remplacement des pages php par des pages html, puisqu'elles ne contenaient aucune code php. On doit appeler ça le réflexe du développeur PHP ;) Au passage léger embellissement du css par défaut.
23 juillet 2007 21:20:55 :
## MAJ 23/07/2007 ## - ajout de la méthode addOngletCalque (titre_de_l_onglet, id_du_calque_a_copier) : elle permet de "mettre en onglet" un calqué déjà existant sur la page HTML. Le principal intérêt est que l'on peut gérer deux types d'affichage selon que javascript soit activé ou pas. Si javascript est activé, le contenu des calques de la page que vous souhaitez mettre en onglet est transferré dans un onglet. Si javascript est désactivé, les calques vont se succéder normalement les uns derrière les autres. Vous pouvez bien sur mixer avec les autres types d'ajout d'onglet déjà existant (HTML, Texte, Ajax, URL), ces derniers n'étant visibles que si javascript est activé. Cf index2.html du nouveau zip pour un exemple basique.

 Sources de la même categorie

Source avec Zip Source avec une capture MENU VERTICALE GAUCHE ET DROIT DEROULANT par kazma
Source avec Zip Source avec une capture MENU VERTICALE EN TRANSPARENCE par dlvains
Source avec Zip Source avec une capture MENU DÉROULANT EN IMAGES par dlvains
Source avec Zip TBFRAME: TAB BROWSING FRAME par triumphs
Source avec Zip Source avec une capture MENU PRINCIPAL par ali1987

 Sources en rapport avec celle ci

MODIFIER SES FEUILLES DE STYLES .CSS À LA VOLÉE AVEC JAVASCR... par Phildepantin
DÉTECTER SI CSS EST ACTIVÉ par jdmcreator
TRIM, REMOVESPACE, PATTERN MAIL, PATTERN TÉLÉPHONE, PATTERN ... par labotemplates
Source avec Zip Source avec une capture JVSMENU : MENUS CLASSIQUES ET CONTEXTUELS AVANCÉS EN JAVASCR... par emericv
Source avec Zip Source avec une capture [MEC] MENUS EN CSS par Bul3

Commentaires et avis

Commentaire de moaleboss le 09/07/2007 09:05:15

Code propre, et simple.
Exemple clair aussi.
Dommage que ton code ne soit pas Full XHTML valid ^^

C'est du bon boulot ;-)

Commentaire de daynos le 09/07/2007 09:56:49

Merci ;)
A dire vrai, je n'ai même pas pensé à vérifier ce point. J'y penserai lors d'une future mise à jour :)

Commentaire de moaleboss le 09/07/2007 14:01:00

Pour info, ya pas grand chose à modifier pour etre Full XHTML ^^
Juste un petit coup de nettoyage du coté du javascript de la page HTML, et le tour est joué ;-)

Commentaire de meh le 09/07/2007 17:04:32

Super ! J'attends la prochaine mise à jour pour le xhtml plein pot ;-)

Commentaire de Mamoune2005 le 09/07/2007 18:03:57

Dommage que sans javascript, on ait vraiment rien de visible.
Un javascript n'est bon que s'il apporte quelque chose, ici il ajoute quelque chose, c'est trop.

Sinon c'est beau.

Commentaire de daynos le 23/07/2007 21:29:36

Concernant le full XHTML, je viens de tester l'index sur validator.w3c.org, il me dit que c'est bon. Si vous voyez un truc en particulier à corriger, prévenez-moi.

J'ai eu du mal à comprendre ce que Mamoune2005 voulait dire. Dans le doute, j'ai ajouté une méthode :

addOngletCalque (titre, id_calque)

Elle permet de mettre en onglet un calque préexistant sur la page. Ainsi si javascript est désactivé, les calques préexistants se succèdent naturellement, les un derrières les autres. Si javascript est activé, on les retrouve sous forme d'onglet.
Ce qui n'empêche pas d'utiliser en même temps les autres méthodes (Texte, HTML,URL, AJAX), qui eux requièrent un javascript activé pour fonctionner.

Commentaire de moaleboss le 24/07/2007 08:21:38

Salut,

En Javascript, quand tu met du code HTML, et que tu ferme une balise, il faut que les '/' soit précédés du caractère d'échappement '\'
Exemple :
oOnglet.addOngletHtml ("Onglet HTML", "<h1>Pour tester</h1>");
Devient :
oOnglet.addOngletHtml ("Onglet HTML", "<h1>Pour tester<\/h1>");

Au passage, le validateur de code HTML du W3C  ne corrige pas les erreurs Javascript ;-)

Bonne prog

Commentaire de Mamoune2005 le 24/07/2007 10:00:46

Je suis un peu de l'école qui est exposée dans l'article suivant :
http://pompage.net/pompe/separation/
et donc javascript, oui, mais seulement pour modifier (en améliorant, bien sur) le comportement.

Donc s'il y a bien des calques fonctionnels quand le javascript n'est pas actif, tu as entièrement comblé ma critique. Je n'ai pas le temps de regarder maintenant.

Même remarque que Moaleboss, le validateur HTML ne valide que le HTML, ..., donc si ton javascript est bien dans ces balises, c'est valide.

Commentaire de daynos le 24/07/2007 15:37:49

Article très intéressant, et je partage amplement cette vision.

Je n'ai jamais été favorable à l'utilisation massive de javascript. En fait je pense pouvoir dire que j'ai longtemps été de ces "anti-javacript parce que c'est pas activé partout". Je me remets en cause sur ce point de vue, parce que comme tout le monde, j'aime visiter des sites plaisant à consulter.

Je me suis donc mis dernièrement à javascript. Pas trop difficile en soit, il obéit aux mêmes normes que l'actionscript de Flash que je maîtrise assez bien. Par ailleurs, j'avais un travail à faire dans un cadre précis : des formulaires de consultation et de saisie à ajouter dans l'intranet de ma boite. C'est à dire un parc informatique "maîtrisé", où l'on sait comment son paramétrés toutes les machines, la version des navigateurs, la taille des écrans, les compétences du personnel, etc.
Sachant que javascript était correctement installé et interprété sur toutes les machines, et que le serveur était en local sur un réseau 100mbps (côté client), ça m'ôtait quand même pas mal de soucis.

Pour des soucis "d'ergonomie du produit final", une présentation en onglet était préférée. A cela s'ajoutait un autre impératif : on devait pouvoir passer d'un onglet à l'autre sans que les modifications apportées au contenu d'un onglet soient perdues, ni écrasent le contenu de la base avant que l'ensemble des modifications ait été validé.

J'avais bien sûr l'option des sessions, de la mise en "base de donnée temporaire", mais bon, j'ai opté pour des onglets utilisant la balise "DIV" et du javascript. Ca me smeblait être la solution la plus simple. Et puis j'avais envi de faire du javascript pour ma culture personnelle :D. Ce dernier point n'est pas à négliger, je dois l'avouer, j'avais envie de profiter de ce développement relativement libre pour tester les possibilités actuelles de javascript. Je pense en particulier à tout ce qui tourne autour du terme "AJAX". Ce terme existe depuis quelques années déjà, mais je n'avais jamais eu l'occasion de me pencher sérieusement sur le sujet jusque là.




Bref c'est donc dans un environnement 100% compatible javascript et super rapide que j'ai conçu la première version de ce script. Ce qui explique que je ne me sois pas vraiment préoccupé du rendu avec javascript désactivé, ni du poids total du script (enfin du framework qu'il requiert ;)).

Commentaire de dlimouzin le 12/05/2008 15:23:57 9/10

Très intéressant.
Je me pose une question cependant.
Ayant à gérer une page très volumineuse (600Ko)
je voudrais savoir s'il était possible de gérer le chargement des onglets juste au click sur celui-ci de façon à réduire le temps d'attente initial.
Cordialement

Commentaire de daynos le 18/05/2008 18:17:43

Bonjour,

Là comme ça le script n'a pas été prévu pour. Mais avec quelques modifications, ça doit être parfaitement faisable.

Par contre je suis désolé, mais je n'ai pas franchement le temps de m'y pencher moi-même pour l'instant. Si quelqu'un peut le faire, qu'il n'hésite pas à me tenir au courant, je mettrai à jour le script (sans oublier de le citer bien évidemment).

En tout cas merci pour ton commentaire ;).

PS en passant : j'ai supprimé mon adresse email "devjs@daynos.net", trop de spam ;  c'est de ma faute, j'aurais pas du la mettre aussi lisible dans le code. Pour la nouvele adresse, mettez 'devfr' à la place de 'devjs'.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

creer des onglet sans utiliser css [ par amaila ] boujour à tous.je veux faire ajouter des onglets en javascript sans uitliser CSS.est il possible?si oui vous pouvez m'aider de trouver des exemples si Afficher texte avec X et Y [ par bshaka ] Bonjour à tous,j'ai trouvé sur le web cette fonction qui affiche date et heure à une position x et y, pour l'appeler, je fais :InitHorloge(265,56,"fon CSS : Bug de positionnement ie6 [ par leejunfan ] Bonjour, j'ai un petit soucis avec ie6 que je dois pourtant certifier (le site s'affiche bien dans ie7 et firefox)Voila mon problème :J'ai une page di probleme avec le plugin facebox de jquery [ par aquewel ] bonjour a tous, c'est la premiere fois que je viens demander de l'aide sur ce forum... et pour la premiere un probleme serieux dans lequel peut etre q prototype.js --> bindAsEventListener [ par alexflex25 ] var obj = { name: 'A nice demo' };function handler(e)< alias de méthode [ par sapakus ] Bonjour,1°) je tente de réduire un code trop imposant2°) je suis une bille en pooMon idée est de créer des "synonymes" de méthodes utilisées de manièr CSS débloque totalement sur saisie de onmousemove avec IE7 [ par adoxe ] En fait, toute version de IE débloque...pour comprendre, comparer http://fccf.x10hosting.com/ avec Firefox et MSIE...Tout roule perfecto avec Firefox. nouvelle fenêtre / nouvelle onglet [ par inaden ] Bonjour,existe-t-il un moyen de différencier et/ou de forcer l'ouverture en nouvelle fenêtre lorsqu'un navigateur ouvre a priori une nouvelle fenêtre Le drag n drop de PROTOTYPE ne fonction pas sous IE : Voici la solution [ par banbanfr ] Bonjour à tous,après plusieurs heures de combat acharné contre le fameux IE (que j'adore) et bien j'ai enfin réussi à trouvé une solution, du moins j' demande d'aide sur une découpe CSS [ par chabgyver ] Bonjour,Je suis en train de travailler à la création d'un site : http://balistiq.free.fr/0000/J'ai fais le design mais j'avoue ne pas être super à l'a


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,312 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales