IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Plugin javascript natif


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut Plugin javascript natif
    Bonjour (ou même Bonsoir),

    Une question certainement idiote mais je n'arrive pas à trouver de réponse. J'ai appris à créer succinctement des plugins jQuery cependant je cherche à créer la même chose mais en pure JavaScript.

    Je suis certains de la possibilité de la chose puisque jQuery est du JS seulement certaines (ou beaucoup) de notions doivent m'échapper car je n'arrive pas à trouver de bonne piste pour y arriver.

    Pourriez vous m'orienter svp ?

    D'avance merci.

  2. #2
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    C'est quoi un plugin javascript ???

    JQuery utilise de façon abusive de ce terme pour désigner une librairie accompagnée éventuellement de css et de ressources (images sons ...)

    Si c'est ça un plugin alors ceci est un plugin javascript
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function test() {return true;}
    A+JYT

  3. #3
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    Je déclare un plug comme une classe, la différence se fera lors de l'appel et de l’initialisation.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    "use strict";
    var MaClasse = function ( elt, opt ) {
    	//Attributs...
    }
    MaClasse.prototype = {
    	constructor: MaClasse,
    	//Méthodes...
    }
    /*-- Définition du plugin --*/
    var old = $.fn.maclasse
    $.fn.maclasse = function ( opt ) {
    	return this.each( function ( ) { 
    		var $this 	= $( this ),
    			data	= $this.data( 'maclasse' ),
    			options = typeof opt == 'object' && opt
    		if( !data )
    			$this.data( 'maclasse', ( data = new MaClasse( this, options ) ) )
    		if( typeof opt === 'string' )
    			data[option]( )
    	} )
    }
    $.fn.maclasse.defaults = {
    	//Attributs par défaut...
    }
    $.fn.maclasse.Constructor = MaClasse
    Ce qui permet d'appeler le plug de cette manière ci:

    $('#mon_id").maclasse(JSON_Object_parameter);la frontière est mince mais pas moyen d'arriver au même résultat en JS pure soit

    var element = document.getElementById('mon_id'); element.maclasse(JSON_Object_parameter);

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Je ne suis pas sur de comprende ce que tu veux faire

    il te faut comprendre ce que fais JQuery pour comprendre la syntaxe de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $('#mon_id').maclasse(JSON_Object_parameter);
    $('#mon_id') ne retourne pas l'élément du DOM don l'id est mon_id ce n'est pas du tout équivalent à document.getElementById('mon_id').

    la fonction $() de JQuery retourne un objet javascript qui contient un tableau de référence à d'autres objets dans le cas de ton appel ce tableau contient une référence à l'élément retourné par document.getElementById('mon_id').

    Donc lorsque tu fais $('#mon_id').maclasse(JSON_Object_parameter);tu appelle la méthode maclasse (trompeur pour le nom d'une méthode)
    sur l'objet javascript renvoyé par $('#mon_id').

    l'appel équivalent en JS est beaucoup plus simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data = new MaClasse( document.getElementById('mon_id', JSON_Object_parameter);
    A+JYT

  5. #5
    Membre chevronné
    Avatar de Darkaurora
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2010
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 382
    Billets dans le blog
    1
    Par défaut
    d'accord merci de ton aide, je vais me pencher sur ce que tu m'as écrit puis testerais et je pense marquer comme résolus ce sujet.

    Encore merci.

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    plugin vient de "plug in", c'est-à-dire "se brancher sur". Un plugin jQuery se branche sur jQuery, logique, mais un "plugin JavaScript", ça ne veut rien dire. Mieux vaut parler de bibliothèque ou, dans ton cas, d'extension d'objets natifs.

    Dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var element = document.getElementById('mon_id'); element.maclasse(JSON_Object_parameter);


    La fonction maclasse doit être déclarée dans l'objet Element, soit directement dans l'objet, soit dans son prototype (ce qui est probablement ce que tu souhaites). Seulement, modifier le prototype des HTMLElement est jugé pour diverses raisons comme une mauvaise pratique, principalement parce que ce prototype est la propriété du navigateur et on ne sait pas trop ce qu'il y a dedans selon les milliers de différentes versions de différents navigateurs existants. Un article qui donne plus de détails : http://perfectionkills.com/whats-wro...nding-the-dom/

Discussions similaires

  1. [Dojo] Plugin Javascript sous Eclipse
    Par Rony Rauzduel dans le forum Bibliothèques & Frameworks
    Réponses: 3
    Dernier message: 07/09/2011, 11h26
  2. [MAVEN2] Installation plugin non natif
    Par cedseat dans le forum Maven
    Réponses: 16
    Dernier message: 29/07/2008, 17h40
  3. Plugin JavaScript pour Zend Studio
    Par maximenet dans le forum Zend Studio
    Réponses: 1
    Dernier message: 18/05/2007, 21h20
  4. Réponses: 2
    Dernier message: 10/02/2007, 10h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo