Legacy et migration
Migrer depuis une ancienne version du widget Ekoo
Contexte
Des intégrations plus anciennes utilisent des patterns qui ne sont plus recommandés :
- Configuration via
window.ekooOptions(objet global avec format « à plat »). En v4,ekooOptionsn'est utilisé que pour la création programmatique et attend la structure{ websiteId, widgets: [{ nodeId, productId, locale }] }. - Scripts anciens :
widget-3.x.x.js,widget-4.0.0.js(sans le suffixe-standalone). - Injection du widget via JavaScript pur (pas d'attributs
data-ekoo).
🚨
Ne pas mélanger v3 et v4
Ne chargez jamais un script v3 et un script v4 sur la même page. Cela provoquera des conflits et un comportement imprévisible. Utilisez uniquement widget-4.0.0-standalone.js.
Approche recommandée
Pour toute nouvelle intégration, utilisez :
Intégration officielle
html
1<ekoo-widget2 data-ekoo="YOUR_WEBSITE_ID"3 data-ekoo-product-id="YOUR_PRODUCT_ID"4 data-ekoo-locale="fr"5></ekoo-widget>67<script src="https://app.ekoo.co/widgets/widget-4.0.0-standalone.js"</script>Ce qui a changé entre v3 et v4
| Aspect | v3 (legacy) | v4 (standalone) |
|---|---|---|
| Configuration | window.ekooOptions | Attributs data-ekoo-* |
| Script | widget-3.x.x.js | widget-4.0.0-standalone.js |
| Website ID | Dans l'objet options | Attribut data-ekoo="YOUR_WEBSITE_ID" sur le conteneur |
| Product ID | Dans l'objet options | Attribut data-ekoo-product-id sur le conteneur |
| Type de widget | Dans l'objet options | Attribut data-ekoo-type (uniquement "standalone" en v4 ; le carousel nécessite widget-3.1.0.js) |
| Événements | Callback dans options | Attribut data-ekoo-on-event |
| Custom element | Non supporté | <ekoo-widget> |
| API JavaScript | Limitée | ekooLoad() / ekooUnload() / ekooReload() |
Checklist de migration
- Remplacez le script :
widget-3.x.x.js→widget-4.0.0-standalone.js. - Ajoutez
data-ekoo="YOUR_WEBSITE_ID"sur le conteneur<div>. - Supprimez
window.ekooOptions(ancien format à plat) et remplacez par des attributsdata-ekoo-*sur le conteneur HTML. Si vous avez besoin d'une création programmatique, utilisez le nouveau format :{ websiteId, widgets: [{ nodeId, productId, locale }] }. - Ajoutez
data-ekoosur le conteneur (attribut marqueur obligatoire). - Testez que le widget s'affiche correctement avec un audio publié.
- Vérifiez les événements : si vous utilisiez un callback dans
ekooOptions, migrez versdata-ekoo-on-event. - Supprimez l'ancien script — ne conservez pas les deux versions côte à côte.
Exemple avant / après
❌ Avant (legacy)
html
1<!-- ❌ Old integration (v3.x) -->2<script>3 window.ekooOptions = {4 websiteId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx',5 productId: 'my-product-123',6 locale: 'fr',7 type: 'standalone'8 };9</script>10<script src="https://app.ekoo.co/widgets/widget-3.x.x.js"></script>11<div id="ekoo-widget"></div>✅ Après (v4 standalone)
html
1<!-- ✅ New integration (v4.0.0-standalone) -->2<ekoo-widget3 data-ekoo="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"4 data-ekoo-product-id="my-product-123"5 data-ekoo-locale="fr"6></ekoo-widget>78<script src="https://app.ekoo.co/widgets/widget-4.0.0-standalone.js"</script>✅
Bonne pratique
Après la migration, surveillez la console du navigateur pendant quelques jours pour vous assurer qu'il n'y a pas d'erreurs résiduelles liées à l'ancien code.