Mois : mars 2016

[jQuery] Détecter le navigateur et sa version avec le plug-in browser-detection et lancer une fonction avec les conditions if et else

Edit du 04/10/2017: le plug-in Bowser ayant montré ses limites également, j’ai créé un nouveau billet qui liste les plugins JS de détection de browser, version, OS et les pour et contres d’utilisation.


Edit du 31/08/2017: le plug-in Browser Detection fonctionne très bien mais ne détecte pas le navigateur Microsoft Edge. Se tourner vers Bowser – A Browser detector. Because sometimes, there is no other way, and not even good modern browsers always provide good feature detection mechanisms.

JS Fiddle de demo ici.


Plug-in jQuery browser-detection.js sur GitHub.

Dans l’exemple ci-dessous, on cherche à détecter l’utilisation de Safari et sa version. Pour les versions 8 et antérieures (signifiées par la valeur 600 ou moins en suffixe de la classe safari-* ajoutée à l’élément html par le plug-in browser-detection.js et pour les autres navigateurs, on ne lance pas la fonction maFonction.

[jQuery] Supprimer l’élément parent mais conserver ses enfants avec replaceWith

Demo

Markup de départ :

Résultat attendu :

jQuery :

[jQuery] Utiliser Split pour récupérer la valeur contenue dans une classe et les opérateurs de comparaison pour agir en fonction de celle-ci

Demo jsFiddle.net

[jQuery] Utiliser la fonction each

Dans notre exemple, on cherche dans chaque <li> à déplacer l’élément <input /> dans l’élément <span class="checkbox-wrapper" />.

Code HTML de départ :

Code HTML voulu :

Code jQuery nécessaire :

[Change 3.x] Comment rajouter un fichier javascript dans un module change ?

Où déclarer le fichier pour qu’il soit chargé ?

Y’a 3 solutions à ma connaissance :

1. modules/mon_module/lib/blocks/mon_BlockAction.class.php

mais pour ça il faudra te tourner vers un dev (qui te dire probablement que c’est un mauvais choix car tu chargeras ton JS comme un bourrin malpropre à chaque fois que le bloc sera utilisé, peu importe le thème)

2. themes/mon_theme/install.xml

dans :

Là, tu peux charger ton JS pour un gabarit de page donné; il sera chargé pour toutes les pages de ton thème qui utilisent ce gabarit

3. dans le template de bloc dans lequel tu souhaites l’appeler (si il n’est utilisé que par ce seul template)

  • modules/mon_module_spé/templates/mon_template.all.all.html
  • ou override/mon_module/templates/mon_template.all.all.html
  • ou themes/mon_theme/modules/mon_module/templates/mon_template.all.all.html

Préfixe head : pour ajouter ton JS au fichier page.js chargé en en-tête de document et qui regroupe et minifie l’ensemble des JS appelés avec ce préfixe dans les templates de blocs présents dans la page.

Préfixe src : pour ajouter ton JS en l’état de ta source et directement dans le code HMTL de ton template. Le JS sera visible à l’endroit où tu le déclares dans le DOM.

C’est selon l’utilisation que tu veux faire de ce JS et ça te laisse également le choix de l’emplacement dans lequel tu veux placer ton fichier JS dans l’arbo (en fonction de l’utilisation qui en sera faite). Essaye d’éviter la solution 1, c’est pas flexible.

Et en fonction de ça, tu peux stocker ton fichier JS dans le dossier :

  • modules/mon_module/lib/js
  • override/modules/mon_module/lib/js
  • themes/mon_theme/js