JSFiddle - React, Tailwind, and code Playground

by kapik

JavaScript

// Le ; sécurise si un éventuel code précédent n'est pas "fermé"
;(function($, PLUGIN_NAME, window, document, screen, navigator) {
   
    // Valeurs par défaut
    var defaults = {
        selector: 'body',
        ... : ...
    };            

    // Structure des données pour la BD (sera envoyée en AJAX)
    var datadb = {
        name    : null,
        page    : document.location.href,
        ... : ...
    };
    
    // Tableau contenant plusieurs datadb
    // Permet de ne pas surcharger le navigateur en requête AJAX
    var alldatadb = [];
    
    function monplugin(options){
        // Merge des options définies par l'utilisateur
        // true pour récursif et {} pour ne pas écraser les valeurs par défaut
        this.opts = $.extend(true, {},  defaults, options);
        
        // Initialisation des données
        this.init();      
        
        // Lancement du tracker sur le click
        this.ctrlclick();
    }
    
    
    monplugin.prototype.init = function () {
      
        // Contrôle que la page appelée via AJAX est configurée
        // Sinon arrêt du plugin et notification dans la console JS
        if(this.opts.phpdb == null){
            throw new Error(PLUGIN_NAME+' : Le paramètre `phpdb` est obligatoire !');
        }

        // Controle des parametres obligatoires
        // Traitement des données, nettoyage, conversion...
        // Alimentation de datadb si la donnée ne dépend de l'action click
    }
    
    monplugin.prototype.ctrlclick = function () {
       
        // element correspond à l'objet jquery de ce qui est renseigné dans $(element).monplugin();
        // element.selector   : le sélecteur (ex: "#page")
        // element.selector * : pour pouvoir récupérer l'élément cliqué (ex: un <a> dans #page)
        
        var timer,
        opts = this.opts;
        
        $(this.opts.selector+','+this.opts.selector+' *').live('mouseup',function(event){

            // On stop la propagation du click sinon les...