Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, questions/réponses pour les FAQ, sources et autres ressources pour la rubrique Web ainsi que ses sous-rubriques.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/11/2006, 17h43   #1
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Par défaut [POO] [ADAPTABLE][SRC]Gestion de la POO en JavaScript

Citation:
Voici un systeme de gestion de la POO en Javascript

auteur : FremyCompany

Télécharger le code complet

Utilisation :
Code javascript :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
// Ajout d'un sous espace de nom à System
            with(System.addNameSpace("My")) {
                // Ajoute d'une classe
                with(addClass("MyClass", /* Constructeur, argument facultatif */ function() {
                    /* Cet appel est requis par le Designer de classe */
                    this.getType().New(this);
 
                    /* Vous pouvez ajouter ici tout autre appel prévu par votre fonction */
                    // Utilisation d'un Evenement (créé ici par la propriété)
                    this.onFieldChange.addHandler(function(sender, e) {
                        sender.Field=sender.getField();
                    });
                })) {
                    addProperty("Field"); // Ajoute une propriété public à la classe (n'a aucun rapport avec le champ Field, le rapport officieux est effectué ligne 11)
                    addSub("resetField", function() { this.setField(null); }) // Ajoute une fonction à la classe
                    /*
                        addEvent("X") // Ajoute l'evenement onX à la classe
                        addClass("subClass") // Ajoute une sous classe
                    */
                }
            }
 
            // Instanciation de la classe
            var MCI=new System.My.MyClass();
 
            // Invocation d'une propriété (get/setP)
            MCI.setField("value");
 
            // Création d'un délégué
            var getMCIField=CreateDelegate(MCI.getField, MCI);
 
            // Utilisation du délégué, le lien avec l'objet est fait par JavaScript
            alert("getMCIField:"+getMCIField());
 
            // Invocation d'une fonction (F)
            MCI.resetField();
            alert("MCI.getType().getPath():"+MCI.getType().getPath());
 
            // Destruction partielle de l'objet (pour prendre de vitesse le Garbage Collector)
            // MCI.dispose();
 
            // Test de getType()
            try { alert("document.getType():" + document.getType().getPath()); } catch (ex) {} //(IE:Erreur; FF:System.Object)
            alert("getTypeOf(document):" + Object.getTypeOf(document).getPath()) //(IE:System.XMLNode; FF:Idem)
            alert("getTypeOf(document.firstNode):" + Object.getTypeOf(document.firstNode).getPath()) //(IE:System.Undefined; FF:Idem) ((PS::document.firstNode doesn't exist))
            alert("getTypeOf(null):" + Object.getTypeOf(null).getPath()) //(IE:System.Undefined; FF:Idem)
            alert("getTypeOf(Function):"+getTypeOf(function() {}).getPath());
 
            // Test de isSubClassOf
            with(System.addClass("TestEventArgs")) {
                inherits(System.EventArgs);
            }
            with(System.addClass("TestEventArgs2")) {
                inherits(System.TestEventArgs);
            }
            var T=new System.TestEventArgs2();
            alert("SubClassOf(T,EventArgs&Object):"+isSubClassOf(T, System.EventArgs) + "&" + isSubClassOf(T, System.Object))
            alert("InstanceOf(T,TestEventArgs2):"+isInstanceOf(T, System.TestEventArgs2))
            alert("InstanceOf(T,TestEventArgs):"+isInstanceOf(T, System.TestEventArgs))
            alert("SubClassOf(T,Event):"+isInstanceOf(T, System.Event))
            alert("SubClassOf(3,Number):"+isSubClassOf(3, System.Number))
            alert("SubClassOf(false,Boolean):"+isSubClassOf(false, System.Boolean))
            alert("SubClassOf(Type,Function):"+isSubClassOf(T.getType(), System.Function))
            // Test forEach
            var t1={"value":true,"value2":false}
            alert("forEach: all")
            t1.forEach(function(o,k) { alert (k) })
            alert("forEach: ownPropertiesOnly")
            t1.forEach(function(o,k) { alert (k) }, true)
            t1=["value","value2"];
            alert("Array; forEach: all")
            t1.forEach(function(o,k) { alert (k) })

Remarques :
Ce code n'en est qu'à ses débuts. Il gère IE+FF+Opéra.
Il gère actuellement :
- Espaces de noms
--- Importation
--- Sub NameSpace
- Classes
--- Création simple
--- Propriétés (r/w) avec champs privés
--- Gestion poussées des evenements
--- Héritages
--- Réflection (Début)
- Add-ins et interfaces (déjà implémenté, mais pas d'exemple)
- Meilleurs performances du code
- Fonctions de base implémentées (returnNull, returnFalse, emptyConstructor)
- Création de délégués (lier une fonction à un objet)
- ...
Dans le futur, je projète de pouvoir ajouter du commentaire à une fonction (ou propriété). Je vais aussi faire un exemple pour ce qui est de l'utilisation d'Add-In ou d'interface
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/11/2006, 19h03   #2
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Petite mise à jour (2 --> 2.1) [AJOUT: 2.1-->2.4]
- Amélioration de la réflection :
--- getType().name ==> getType().objectName;
--- getType().parent ==> renvoie l'objet parent dans l'arborescence (System pour System.Class1)
--- getType().parentType renvoie "namespace" ou "class" selon les cas ==> decrapted, utilisation déconseillée, mieux vaut utilier parent.getType().objectName ("Type" ou "NameSpace")
--- getType().getPath() ==> renvoie l'arborescence de la classe (System.MyClass);
--- getType().getType() renvoie System.Type ou System.NameSpace;
--- Les objets créés autrement que par le framework sont automatiquement considérés comme des System.Object et sont donc pris en charge
PS1 : Sous IE, les objets comme window et document N'héritent PAS de System.Object mais bien de System.ActiveXObject et ne possèdent pas les fonctions de réflections normales
PS2 : les objets par valeurs (nombres, boolean, ...) sont pris en charge artificiellement par le framework via System.Number, System.Boolean et System.Undefined. Néamoins, ils restent des objets par valeur. Prière donc d'utiliser getTypeOf pour en objtenir le type managé.

--- Ajout de getTypeOf, isInstanceOf et isSubClassOf comme méthodes assurées de réflection
- Corrections de qques bugs

Up : 2.4.1
- Correction de qques bugs
- Ajout de Throw() pour utiliser la console FF
Fichiers attachés
Type de fichier : zip JavaScript POO Framework v2.4.1.zip (7,8 Ko, 6 affichages)
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 11h49   #3
Expert Confirmé Sénior
 
Avatar de denisC
 
Inscription : février 2005
Messages : 4 069
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2005
Messages : 4 069
Points : 4 698
Points : 4 698
Oui, alors là, c'est .... adaptable

Franchement, c'est une bonne idée, mais c'est vraiment très vaste comme champ. A mon avis, ça vaut largement le coup d'en faire un article. Ca te dit de passer redac, Fremy
denisC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/11/2006, 16h41   #4
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Citation:
Envoyé par denisC
Oui, alors là, c'est .... adaptable
lol, si je te le dis, c'est que ca a du vrai
Citation:
Franchement, c'est une bonne idée, mais c'est vraiment très vaste comme champ. A mon avis, ça vaut largement le coup d'en faire un article. Ca te dit de passer redac, Fremy
Ben oui si j'arrive à avoir le temps de m'y mettre (vive les vacances de noël!)... Ben pk pas... d'un autre coté, je ne vois pas pk je devrais changer de statut pour écrire un tutoriel...
Je resterait tjrs Fremy, et ce avec une deux ou trois étoiles

Lol, allez, moi je file, j'ai un CS en Géographie demain !
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 14h25   #5
Expert Confirmé Sénior
 
Avatar de denisC
 
Inscription : février 2005
Messages : 4 069
Détails du profil
Informations personnelles :
Âge : 32
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : février 2005
Messages : 4 069
Points : 4 698
Points : 4 698
Citation:
Envoyé par FremyCompany
Je resterait tjrs Fremy, et ce avec une deux ou trois étoiles
Pas d'étoiles pour les auteurs. Tu auras juste des plumes Jaunes. Et effectivement, ça ne changera rien d'autre.

C'est pas le fait que j'ai plein de plumes rouges et d'étoiles qui change qui je suis : toujours assez irresponsable
denisC est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/11/2006, 20h03   #6
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Citation:
Envoyé par denisC
Pas d'étoiles pour les auteurs. Tu auras juste des plumes Jaunes...
Mouais, t'auras compris ce que je voulais dire
Citation:
C'est pas le fait que j'ai plein de plumes rouges et d'étoiles qui change qui je suis : toujours assez irresponsable
Mdrr
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/11/2006, 18h52   #7
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Lol, je dois dire que je n'ai aucune idée par rapport à comment on fait/rédige un tutoriel, une documentation (et encore plus pour js)...

Je sèche un peu...
Vous pouriez donner votre avis sur les textes suivants ?

Documentation/Tutoriel :
Citation:
Documentation Alpha 2 (basée sur la version 2.1.1 du Framework)
--------------------

Qu'est-ce que la POO ?
La POO est la gestion des classes et des objets.
De nos jours, la majorité des langages sont construit sur le modèle de la POO.
Parmis eux, citons bien sûr les célèbres languages .Net et le portable Java ainsi que l'archaïque C.

Par défaut, JavaScript n'est pas prévu pour fonctionner avec des classes.
Il récupére en effet les objets qu'il utilse de langages de programmation compatible POO et se contente de les manipuler.
Cependant, il existe des astuces pour simuler la POO en JavaScript.
Microsoft en a déjà tiré parti grâce à son framework : Microsoft AJAX

Voici les choses qu'il faut savoir pour commencer :

Creer une classe :
Code JS :
1
2
3
 
    function MyClass() {}
    var MCI /* for MyClassInstance */ = new MyClass();

Tous les objets créés dépuis le code javascript (sans recours direct à window ou document) hérite de Object
Ici, MCI n'a rien de plus qu'un simple objet.

Ajouter un champ (field) à la classe :
Code JS :
1
2
3
4
5
6
 
    function MyClass() {
        this.aField="value";
    }
    var MCI = new MyClass();
    alert(MCI.aField)

Un objet javascript est extensible. Cela veut dire que l'on peut à sa guise modifier toutes les propriétés d'un objet (champs, fonctions, ...).
Ajouter un champ dans le constructeur n'a donc d'interêt que si le champ a une valeur de départ (ou dépend d'un paramètre du constructeur)
Code JS :
1
2
3
4
5
6
7
 
    function MyClass() {
        this.aField="value";
    }
    var MCI = new MyClass();
    MCI.aSecondField="an other value";
    alert(MCI.aSecondField)

Ajouter une fonction à une classe :
Code JS :
1
2
3
4
5
6
 
    function MyClass() {
        this.alert(text) = function() { alert(text); };
    }
    var MCI=new MyClass();
    MCI.alert("Message");

Cependant, cela pose un problème de performance : à chaque fois qu'un objet est crée, la fonction alert est recréée...
Alors, pour palier à ce problème, on a imaginé la propriété prototype.
Chaque nouvelle instance possède toutes les fonctions définies sur prototype.
Code JS :
1
2
3
 
    function MyClass() {}
    MyClass.prototype.alert=function() { alert(text); }

Seulement, ce n'est pas très clair, ni très concis.
Avec l'utilisation de nombreuses classes et de nombreuses fonctions par classe, cela s'empire davantage.

Avec cela, pensez-vous, vous avez fait le tour de la POO avec Javascript... Et bien non!

L'héritage :
Comment faire hériter une classe :
Code JS :
1
2
3
4
5
6
7
8
 
    function MyClass(argument1) { /*...*/ }
    MyClass.prototype.x=function() { /*...*/ }
    function MySecondClass { 
        MyClass.call(this, "A value for the first argument")
        /*...*/
    }
    MySeccondClass.prototype=new MyClass()

Cela n'est évidemment pas le must point de vue performance... vu qu'il faut crée une nouvelle instance de MyClass, avec tous les problèmes que cela peut poser (arguments, ...)
De plus, tous les champs ajouté par le constructeur de MyClass seront ajouté automatiquement à MySecondClass...
Pour palier le problème, et il faut une copie d'objet.
Code JS :
1
2
3
4
 
    // Recopier toutes les propriétés et fonction d'un objet (source) vers un autre (destination)
    // Cette fonction est définie dans le FrameWork
    AddTo(MyClass.prototype, MySecondClass.prototype);

L'héritage multiple devient alors permis !
Code JS :
1
2
3
4
5
6
7
 
    // Soit C1 et C2 des Classes différentes n'ayant aucun lien d'héritage
    function C3() {
        C1.call(this)
        C2.call(this)
    }
    AddTo(C1, C3); AddTo(C2, C3);

Vous avez là un apercu de ce que propose JavaScript du point de vue POO.

Qu'apporte le Framework ?
Il permet l'utilsation d'espaces de nom et simplifie la création de classe et offre des fonctions de rélexion.
Les évènements deviennent de véritable entité comme en .Net.
On peut créer des propriétes avec accesseurs get, set, et un event déclangé après set.
Remarque : Il est IMPOSSIBLE de changer la valeur de la propriété sans passer par le set !
...

Nous allons ici créer un classe et l'utiliser, vous verrez, tout est clair, si on sait que System est un espace de nom.
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 
    // with permet de sous entendre qu'on utilise toujours la valeur retournée par System.addClass(...)
    with (System.addClass("MyClass")) {
        addSub("alert", function(t) { alert(t); }) // Ajouter un fonction à la classe
        addProperty("Property") // Ajoute get/setProperty et l'event onPropertyChange à la classe
        addEvent("Testing") // Ajoute l'event onTesting à la classe...
    }
    var MCI = new System.MyClass();
    MCI.alert("");
    MCI.onPropertyChange.addHandler(function(sender, e) {
        // sender:: l'objet qui a déclanché l'event
        // e:: EventArgs, objet envoyé à chaque fonction de l'event en vue du partage de donnée, généralement inutile
        sender.alert("La propriété a changé !")
    })
    alert(MCI.getProperty()) // null
    MCI.setProperty("Value"); // Alert grâce à l'event
    alert(MCI.getProperty()); // "Value"
    // On execute ici l'event 'pour le plaisir'
    MCI.onPropertyChange.raise(MCI, System.EventArgs.empty) // Alert grâce à l'event
Et avec une notion d'héritage :
Code JS :
1
2
3
4
5
6
7
 
    // Si vous avez défini un constructeur personalisé (voir plus loin) à la classe héritée, vous devez définir le constructeur avec un appel à MyClass.call
    with (System.addClass("C2")) {
        inherits(System.MyClass)
    }
    var C2I = new System.C2();
    C2I.alert("text");
Ajout de sous-espace de noms et définition de constructeur personalisés
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 
    with(System.addNameSpace("NS")) { // Création de System.NS
        with(addClass("NSClass", 
            function(nom, age) { // Constructeur de la classe NSClass
                /* Cet appel est requis par le Designer de classe */
                this.getType().New(this);
 
                /* Vous pouvez ajouter ici tout autre appel prévu par votre fonction */
                this.nom = nom;
                this.age = age;
            }
        ) { // Ajout d'une classe avec un constructeur personalisé dans System.NS
            /* 
            addSub(...)
            addProperty(...)
            */
        }
    }

Utilisser la réflexion (sera encore sujet à modification dans le futur) :
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
    // Nous considérons ici les classes MyClass et C2 et NSClass comme déclarées
    var MCI = new System.MyClass();
    var Type = MCI.getType(); // Obtenir le type d'un objet depuis une instance
    alert(Type.objectName) // "MyClass"
    alert(Type.getPath()) // "System.MyClass"
    alert(Type.parentType) // "namespace", peut aussi valoir "class" (dans le cas de sous-classes)
    alert(Type.parent.objectName) // "System"
 
    /* Astuce : créer un objet du même type qu'un autre 
        var MCI2 = new MCI.getType()();
    */
 
    var C2Type = System.C2; // Récuperer un type d'objet par son nom (path)
    alert(C2Type.getPath()) // "System.C2"
    alert(C2Type.baseClass[1].getPath()) // "System.MyClass"
 
    var NSType = System.NS // Récuperer un type d'espace de nom par son nom (path)
    alert(NSType.parent.getType().objectName) // "NameSpace"
    alert(NS.NSClass.getPath()) // "System.NS.NSClass"

Lier une fonction à un objet de manière définitive :
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
 
    var MCI=new System.MyClass();
    var MCIPropertySetter = CreateDelegate(MCI.setProperty, MCI) // Renvoie une fonction qui est lié avec l'objet passé en seccond argument
 
    // Changer la valeur de la propriété Property de MCI
    MCIPropertySetter("Value"); // Ok
 
    // Le refaire, mais en attachant la fonction à une autre objet
    var MCI2=new System.MCI();
    MCI2.setMCIProperty=MCIPropertySetter;
    MCI2.setMCIProperty("A seccond value");
    alert(MCI.getProperty()) // Ca marche !!!

Le Framework permet encore plein de chose, que vous pourrez découvrir par vous même...
Le framework dans le code de tous les jours :
Citation:
Utilisation du Framework dans votre code de tous les jours : (Alpha 1, basé sur la version 2.4.1)
=============================================================

Pour éviter des erreurs
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
 
    // Voici un code comme il pouvait être écrit avant :
    function MyClass() {
        this.alert=function(text) {
            alert(text)
        }
    }
 
    function My2Class() {
        this.baseClass=MyClass;
        this.baseClass();
    }
 
    function doAlert(MyClassInstance) {
        MyClassInstance.alert("Message");
    }
 
    function additionne(n1,n2) {
        return parseInt(n1+n2);
    }
 
    // Un moyen pour provoquer une erreur :
    doAlert(true);
    /*
        La seule solution d'éviter cela,
        est d'utiliser try ... catch
        car instanceOf ne gère pas l'héritage,
        et il est difficile de maintenir à long
        terme une notation permettant de le gerer.
    */    
 
    // Ne déclanche pas d'erreur, si une faute d'inatention se place dans le code (ex: résultas incohérents à cause des types : ("1"+"2"=12)),
    // Il est difficile de trouver sa source (ex dans le cas suivant)
    var leNombre = additionne(document.getElementById("input1").value, document.getElementById("input2").value)
Code JS :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 
    // Le même code avec le framwork :
    with(System.addClass("MyClass")) {
        addSub("alert",function(text) {
            alert(text);
        })
    }
 
    with(System.addClass("My2Class")) {
        inherits(System.MyClass);
    }
 
    doAlert = function (MyClassInstance) {
        if (!isSubClassOf(MyClassInstance, System.MyClass) {
            /*Un message d'erreur à afficher dans la console IE ou FF */
            Throw("Incorrect Argument MyClassInstance in doAlert function. Please refer to documentation.")
            return false;
        }
        MyClassInstance.alert("Message");
    }
 
    additionne = function(n1,n2) {
        if (!isInstanceOf(n1, System.Number) || !isInstanceOf(n2, System.Number)) {
            Throw("Attention, des problèmes de types peuvent survenir dans la fonction 'additionne(Number,Number)'. Les types sont :("+getTypeOf(n1).getPath()+","+getTypeOf(n2).getPath()+"). La fonction appelante:'"+(arguments.caller?arguments.caller.name:"no calling function")+"'")
            // Dans le cas ou n1="1" et n2="2"; le message sera : "Attention, des problèmes de types peuvent survenir dans la fonction 'additionne(Number,Number)'. Les types sont :(System.String,System.String)"
        }
        return parseInt(n1+n2);
    }
 
    // Aucune erreur n'est instancié :
    doAlert(true);
 
    // Déclanche une erreur sans bloquer l'exécution, si une faute d'inatention se place dans le code.
    // Il est facile, en regardant la console de trouver la source d'un problème de résultat incohérant ("1"+"2"=12)
    var leNombre = additionne(document.getElementById("input1").value, document.getElementById("input2").value)
Lol, ca se voit tant que ca que c'est rédigé sur Notepad++ ??
==> Voici une mise en forme plus adaptée au forum
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/11/2006, 19h09   #8
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Vu le nombre de changements apportés à mes messages, je me permets de faire un petit up...
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 16h46   #9
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Voici une nouvelle version du FrameWork
Elle intègre maintenant une totale gestion de Prototype (un autre Framework JS) et permet de "mapper" les objets Prototype vers des types gérés par le FrameWork
Fichiers attachés
Type de fichier : zip FremyCompany Web API v2.6 (full Prototype support).zip (25,7 Ko, 27 affichages)
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 19h22   #10
Membre expérimenté
 
Avatar de FMaz
 
Inscription : mars 2005
Messages : 648
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 648
Points : 527
Points : 527
J'ai cru voir une fonction $H, est-ce ton framework INTÈGRE prototype ou est-ce qu'il faut avoir aussi prototype en plus ?

(70Kb ou 70+40kb ?)
FMaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 19h38   #11
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Citation:
Envoyé par FMaz
J'ai cru voir une fonction $H, est-ce ton framework INTÈGRE prototype ou est-ce qu'il faut avoir aussi prototype en plus ?

(70Kb ou 70+40kb ?)
Mon script intègre totalement prototype. Il n'y a pas besoin (et il est même interdit en fait) de relancer le script Prototype.

Ce fichier remplace donc prototype.js

Il laisse intacte toutes les fonctions de prototype mais permet d'améliorer celui-ci
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/12/2006, 19h48   #12
Membre expérimenté
 
Avatar de FMaz
 
Inscription : mars 2005
Messages : 648
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 648
Points : 527
Points : 527
Intéressant, j'aimerais que tu passe me voir en privé, j'ai un projet en objet qui pourrait peut-être bénéficier de ce framework, j'aimerais regarder l'applicabilité avec toi en fait.
FMaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/12/2006, 09h07   #13
Expert Confirmé
 
Avatar de FremyCompany
 
Étudiant
Inscription : février 2006
Messages : 2 532
Détails du profil
Informations personnelles :
Âge : 20

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : février 2006
Messages : 2 532
Points : 2 903
Points : 2 903
Envoyer un message via MSN à FremyCompany
Citation:
Envoyé par FMaz
Intéressant, j'aimerais que tu passe me voir en privé, j'ai un projet en objet qui pourrait peut-être bénéficier de ce framework, j'aimerais regarder l'applicabilité avec toi en fait.
Que veux-tu dire "en privé" ?
__________________
Fremy
Pour vos développements Web et une navigation agréable, le tout gratuit :
1) IE 8 + IE7Pro (Si vous ne connaissez pas IE7Pro, essayez !)
2) FF 3 + Web Developper Toolbar + AdBlockPlus + FireBug + GreaseMonkey
FremyCompany est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2006, 20h59   #14
Membre éprouvé
 
Avatar de amika
 
Inscription : septembre 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 499
Points : 414
Points : 414
Envoyer un message via MSN à amika Envoyer un message via Yahoo à amika
+1
__________________

_____________________
Il n'y a pas de choses urgentes, il n'y a que des choses en retard
amika est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2006, 01h52   #15
Membre expérimenté
 
Avatar de FMaz
 
Inscription : mars 2005
Messages : 648
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 648
Points : 527
Points : 527
Bah je pensais à une cabinne avec un rideau en fait... non ?
FMaz est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h40.


 
 
 
 
Partenaires

Hébergement Web