Bonjour,
[version courte :]
Je voudrais tester la lecture directe d'une icône .svg pour la mettre ensuite dans une variable js que je manipulerais par la suite. J'ai vu que l'on peut utiliser DOMparser et XMLHttpRequest mais je ne vois pas concrètement comment faire. Si quelqu'un peut m'aiguiller...
[version longue :]
Actuellement je fais appel à des icônes SVG pour mes interfaces que j'appelle via un script. Afin de garder mes scripts modulaires je ne code pas les icônes en dur dans le script, mais fait actuellement appel à la technique des sprites SVG, via un fichier externe pour bénéficier du cache (solution compatible à partir de Edge 13 et depuis bien plus longtemps pour les autres navigateurs populaires).
Sauf que cette technique oblige à créer le fameux sprite (avec <symbol> et tout et tout) et même s'il existe des plugins node.js (mon environnement serveur) pour les créer je me pose tout de même la question d'une solution alternative avant de confirmer ce choix. En effet le vent tourne en faveur de l'injection directe des SVG en ligne et je voudrais si possible éviter de faire cohabiter deux systèmes d'appel aux SVG.
Modifié par Olivier C (17 Oct 2020 - 07:22)
[version courte :]
Je voudrais tester la lecture directe d'une icône .svg pour la mettre ensuite dans une variable js que je manipulerais par la suite. J'ai vu que l'on peut utiliser DOMparser et XMLHttpRequest mais je ne vois pas concrètement comment faire. Si quelqu'un peut m'aiguiller...
[version longue :]
Actuellement je fais appel à des icônes SVG pour mes interfaces que j'appelle via un script. Afin de garder mes scripts modulaires je ne code pas les icônes en dur dans le script, mais fait actuellement appel à la technique des sprites SVG, via un fichier externe pour bénéficier du cache (solution compatible à partir de Edge 13 et depuis bien plus longtemps pour les autres navigateurs populaires).
const injectSvgSprite = (targetElement, spriteId) => {
const svgFile = 'sprites', // chemin du fichier SVG
icon = '<svg><use xlink:href="/' + svgFile + '.svg#' + spriteId + '"></use></svg>'
targetElement.insertAdjacentHTML('beforeEnd', icon)
}
Sauf que cette technique oblige à créer le fameux sprite (avec <symbol> et tout et tout) et même s'il existe des plugins node.js (mon environnement serveur) pour les créer je me pose tout de même la question d'une solution alternative avant de confirmer ce choix. En effet le vent tourne en faveur de l'injection directe des SVG en ligne et je voudrais si possible éviter de faire cohabiter deux systèmes d'appel aux SVG.
Modifié par Olivier C (17 Oct 2020 - 07:22)