Projet

Général

Profil

Anomalie #23116

Le systeme de template peut générer des ids identiques

Ajouté par Renaud Dussol il y a environ 6 ans. Mis à jour il y a environ 6 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Version cible:
Début:
21/02/2018
Echéance:
% réalisé:

100%

Distribution:

Description

Exemple : edispatcher-toolbar possède deux entrées dans notre template : l’une dans une div visible-xs l'autre dans une div visible-sm

Le problème est que la classe visible-xs passe l'élément à display:none, ce qui ne supprime pas l'élément du DOM mais le masque simplement
Dans la toolbar il y a le bouton de refresh qui porte l'id refreshBtn. Au final cet id se retrouve donc 2 fois dans le DOM, ce qui nous pose problème car nous utilisons un getelementbyid sur cet élément et que le comportement est aléatoire

Apparemment un JQuery du style $(".hidden").remove(); pourrait le faire.
Je vais la tester sur notre template

Je t'assigne quand-même la demande si des fois tu as déjà réfléchi au problème et que tu as une solution

Historique

#1 Mis à jour par Renaud Dussol il y a environ 6 ans

  • % réalisé changé de 0 à 90

Dans le template on peut mettre par exemple :

if ($(window).width() > 768) {
$( ".visible-xs" ).remove();
}

Cela fonctionne sous FF, les éléments sont bien supprimés du DOM. Je n'ai pas tenté le resize par contre, ni testé sous chrome

Si cette solution est convenable, on peut l'étendre à l'ensemble des possibilités et l'inclure dans les JS des templates

#2 Mis à jour par Christophe LEON il y a environ 6 ans

  • Statut changé de Nouveau à En attente d'informations

Dans le composant la reference est faite comme suit

self.$.refreshBtn

effectivement a l’extérieur il n'est pas censé être manipulé :)

Et pourquoi tu veux l'atteindre en externe ?

Il faudrait sinon nommé ta toolbar par exemple #toolbar

Et tu peux y accéder comme suit

document.getelementbyid("toolbar").$.refreshBtn

#3 Mis à jour par Renaud Dussol il y a environ 6 ans

Nous avons besoin d'accéder aux ids pour utiliser l'aide contextuelle de introjs (https://introjs.com/)
Cela marche très bien et est très simple à mettre en place mais cela nécessite des ids précis
Effectivement la solution consistant à mettre un id sur la toolbar pourrait fonctionner je vais la tester, cela m'énerve de ne pas y avoir pensé :-)
Sinon quand même je pense que d'une manière générale c'est peut-être mieux de ne pas avoir plusieurs fois un id identique dans le DOM

Sinon tu penses que la solution jquery de détecter les breakpoints bootstrap et faire un remove pourrait poser problème ?

#4 Mis à jour par Renaud Dussol il y a environ 6 ans

  • Statut changé de En attente d'informations à Résolu
  • % réalisé changé de 90 à 100

L’ajout d'un ID à la toolbar et le sélecteur "#IDdelatoolbar #refresBtn" résout le pb
Le JQuery fonctionne néanmoins bien aussi, donc on sait que l'on peut l'utiliser si vraiment on veut supprimer des éléments du DOM en fonction des breakpoints Bootstrap
Je passe à Résolu (on peut même fermer car cela ne concernait que le template, je ne sais pas quelle est la bonne pratique...)

#5 Mis à jour par Christophe LEON il y a environ 6 ans

  • Version cible mis à Envole 5.8

#6 Mis à jour par Arnaud FORNEROT il y a environ 6 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF