<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Général JavaScript</title>
		<link>https://www.developpez.net/forums/</link>
		<description>Forum sur le développement JavaScript. Avant de poster : Cours JavaScript, FAQ JavaScript et Sources JavaScript.</description>
		<language>fr</language>
		<lastBuildDate>Sat, 08 Aug 2026 00:10:22 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.png</url>
			<title>Forum du club des développeurs et IT Pro - Général JavaScript</title>
			<link>https://www.developpez.net/forums/</link>
		</image>
		<item>
			<title><![CDATA[Syntaxe getAttribute, où est l'erreur]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184875&amp;goto=newpost</link>
			<pubDate>Tue, 28 Jul 2026 09:34:37 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'ai un carrousel...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'ai un carrousel d'images dont la structure est la suivante.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br /></div></td><td valign="top"><pre style="margin: 0">&lt;figure role=<span style="color: #FF0000;">&quot;main&quot;</span>&gt;
&lt;<span style="color: #0080ff;">button</span> type=<span style="color: #FF0000;">&quot;button&quot;</span>&gt;&lt;img src=<span style="color: #FF0000;">&quot;im/pr/1550G.avif&quot;</span> alt=<span style="color: #FF0000;">&quot;vignette 1&quot;</span> width=<span style="color: #FF0000;">&quot;100&quot;</span> height=<span style="color: #FF0000;">&quot;77&quot;</span> loading=<span style="color: #FF0000;">&quot;lazy&quot;</span> decoding=<span style="color: #FF0000;">&quot;async&quot;</span> /&gt;&lt;/button&gt;
&lt;img src=<span style="color: #FF0000;">&quot;im/pr/1550G.avif&quot;</span> alt=<span style="color: #FF0000;">&quot;mon beau produit tout neuf&quot;</span> width=<span style="color: #FF0000;">&quot;400&quot;</span> height=<span style="color: #FF0000;">&quot;305&quot;</span> fetchpriority=<span style="color: #FF0000;">&quot;high&quot;</span> decoding=<span style="color: #FF0000;">&quot;async&quot;</span> /&gt;
&lt;<span style="color: #0080ff;">button</span> type=<span style="color: #FF0000;">&quot;button&quot;</span>&gt;&lt;img src=<span style="color: #FF0000;">&quot;im/mu/1550-1G.webp&quot;</span> alt=<span style="color: #FF0000;">&quot;vignette 2&quot;</span> width=<span style="color: #FF0000;">&quot;100&quot;</span> height=<span style="color: #FF0000;">&quot;82&quot;</span> loading=<span style="color: #FF0000;">&quot;lazy&quot;</span> decoding=<span style="color: #FF0000;">&quot;async&quot;</span> /&gt;&lt;/button&gt;
&lt;img src=<span style="color: #FF0000;">&quot;im/mu/1550-1G.webp&quot;</span> alt=<span style="color: #FF0000;">&quot;imafge 2&quot;</span> width=<span style="color: #FF0000;">&quot;400&quot;</span> height=<span style="color: #FF0000;">&quot;328&quot;</span> loading=<span style="color: #FF0000;">&quot;lazy&quot;</span> decoding=<span style="color: #FF0000;">&quot;async&quot;</span> /&gt;
&lt;/figure&gt;</pre></td></tr></table></code><hr />
</div>Je dois savoir quel bouton a le focus :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br /></div></td><td valign="top"><pre style="margin: 0"><span style="color: #0000ff;">&lt;script&gt;</span>
<span style="color: #808080;">// Focus &agrave; l'ouverture de la page</span>
&nbsp;
<span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelector</span><span class="br0">&#40;</span><span style="color: #FF0000;">'button:has(&gt; img[src$=&quot;1550-6G.webp&quot;])'</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">focus</span> <span class="br0">&#40;</span><span class="br0">&#41;</span>;
&nbsp;
<span style="color: #0000ff;">const</span> imgs = <span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelectorAll</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;figure &gt; button&quot;</span><span class="br0">&#41;</span>;
<span style="color: #0000ff;">const</span> imgFocused = <span class="br0">&#91;</span><span class="br0">&#93;</span>;
imgFocused<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> = <span style="color: #FF0000;">&quot;im/mu/1550-1G.webp&quot;</span>
&nbsp;
<span style="color: #808080;">// Cherche le Focus</span>
&nbsp;
<span style="color: #0000ff;">for</span> <span class="br0">&#40;</span><span style="color: #0080ff;">button</span> <span style="color: #0000ff;">of</span> imgs<span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span style="color: #0080ff;">button</span>.<span style="color: #0080ff;">addEventListener</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;blur&quot;</span>, <span style="color: #0000ff;">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelector</span><span class="br0">&#40;</span><span style="color: #FF0000;">'button:has(&gt; img[src=&quot;'</span> + imgFocused<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> + <span style="color: #FF0000;">'&quot;])'</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">focus</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span><span class="br0">&#41;</span>;
<span style="color: #0080ff;">button</span>.<span style="color: #0080ff;">addEventListener</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;mousedown&quot;</span>, <span style="color: #0000ff;">function</span> <span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
imgFocused<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> = <span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelector</span><span class="br0">&#40;</span>figure &gt; <span style="color: #0000ff;">this</span> &gt; img<span class="br0">&#41;</span>.<span style="color: #0080ff;">getAttribute</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;src&quot;</span><span class="br0">&#41;</span>;
<span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelector</span><span class="br0">&#40;</span><span style="color: #FF0000;">'button:has(&gt; img[src=&quot;'</span> + imgFocused<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> + <span style="color: #FF0000;">'&quot;])'</span><span class="br0">&#41;</span>.<span style="color: #0080ff;">focus</span><span class="br0">&#40;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span>
<span style="color: #0000ff;">&lt;/script&gt;</span></pre></td></tr></table></code><hr />
</div>Cela ne fonctionne pas.<br />
<br />
Voyez-vous où est l'erreur dans le code ?<br />
<br />
J'ai un gros doute sur :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">imgFocused<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span> = <span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">querySelector</span><span class="br0">&#40;</span>figure &gt; <span style="color: #0000ff;">this</span> &gt; img<span class="br0">&#41;</span>.<span style="color: #0080ff;">getAttribute</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;src&quot;</span><span class="br0">&#41;</span>;</code><hr />
</div>Si vous pouvez m'aider merci d'avance.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>boteha</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184875/javascript/general-javascript/syntaxe-getattribute-l-erreur/</guid>
		</item>
		<item>
			<title>PDF bouton  formulaire scripts JavaScript</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184644&amp;goto=newpost</link>
			<pubDate>Tue, 14 Jul 2026 09:40:11 GMT</pubDate>
			<description>Bonjour  
 
Je voudrais...</description>
			<content:encoded><![CDATA[<div>Bonjour <br />
<br />
Je voudrais savoir s'il est possible, à partir d'un fichier PDF, de mettre un bouton 'Enregistrer sous' et de pouvoir n'enregistrer qu'une seule page avec des scripts JavaScript. <br />
 <br />
Avec Adode Acrobat, je suis en mesure de créer et de modifier des scripts JavaScript. <br />
 <br />
Je voulais savoir comment créer un script JavaScript et obtenir de l'aide pour y parvenir. <br />
 <br />
Choisir la page où est situé le bouton 'enregistrer sous', puis l'extraction et l'enregistrement au format PDF. <br />
 <br />
Dans mon fichier, il y a plusieurs pages et je veux les remplir et pouvoir enregistrer toutes les pages individuellement, sans inclure l'ensemble du fichier en PDF. <br />
 <br />
Je vous remercie par avance de prendre le temps de me lire.  <br />
 <br />
Je fais parvenir mon fichier en pièce jointe <br />
 <br />
<a href="https://www.developpez.net/forums/attachments/p677516d1784021966/javascript/general-javascript/pdf-bouton-formulaire-scripts-javascript/01.fiche-pms-suivi-controle.pdf/"  title="Nom : 01.Fiche PMS de suivi et de controle.pdf
Affichages : 30
Taille : 1,95 Mo">01.Fiche PMS de suivi et de controle.pdf</a><br />
<br />
Montgesoye</div>


	<div style="padding:10px">

	

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
			<ul>
			<li>
	<img class="inlineimg" src="https://forum.developpez.be/images/attach/pdf.gif" alt="Type de fichier : pdf" />
	<a href="https://www.developpez.net/forums/attachments/p677516d1784021966/javascript/general-javascript/pdf-bouton-formulaire-scripts-javascript/01.fiche-pms-suivi-controle.pdf/">01.Fiche PMS de suivi et de controle.pdf</a> 
(1,95 Mo)
</li>
			</ul>
			</fieldset>
	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>montgesoye</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184644/javascript/general-javascript/pdf-bouton-formulaire-scripts-javascript/</guid>
		</item>
		<item>
			<title>Deno lance deno desktop, une nouvelle commande qui convertit les applications web en binaires natifs</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184331&amp;goto=newpost</link>
			<pubDate>Mon, 22 Jun 2026 20:25:13 GMT</pubDate>
			<description>*Deno Desktop convertit les...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Deno Desktop convertit les applications web en binaires natifs, en ciblant votre référentiel web existant, tel que Next.js, Astro, Remix ou SvelteKit, pour le compiler en un exécutable natif léger et autonome</font></b><br />
<br />
<b>Deno a lancé la commande <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span>, conçue pour transformer les applications Web en binaires natifs pour macOS, Windows ou Linux. Disponible dans la version 2.9.0 (canary) de Deno, cette fonctionnalité détecte automatiquement les frameworks web les plus courants, comme Next.js, Astro, Remix ou SvelteKit, et compile votre projet Deno en un binaire natif léger et autonome qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme. Aucune modification du code n’est nécessaire pour porter un projet web existant sur le bureau.</b><br />
<br />
Deno est un moteur d'exécution pour JavaScript, TypeScript et WebAssembly, basé sur le moteur JavaScript V8 et le langage de programmation Rust. Deno a été co-créé par Ryan Dahl, le créateur de Node.js, et Bert Belder. Deno assume explicitement le rôle à la fois de moteur d'exécution et de gestionnaire de paquets au sein d'un seul exécutable, sans nécessiter de programme de gestion de paquets distinct. Deno se veut un environnement de script productif et sécurisé destiné aux programmeurs modernes. À l'instar de Node.js, Deno met l'accent sur une architecture orientée événements, en proposant un ensemble d'utilitaires d'E/S de base non bloquants, ainsi que leurs versions bloquantes. Deno peut être utilisé pour créer des serveurs web, effectuer des calculs scientifiques, etc. Deno est un logiciel open source sous licence MIT.<br />
<br />
Finie la lourdeur d'Electron, <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span> convertit désormais les applications web en binaires natifs sans aucune configuration.<br />
<br />
Pendant une décennie, développer une application de bureau multiplateforme à l'aide de technologies web impliquait d'accepter un compromis technique impitoyable : Electron. On disposait certes de vues web standard, mais les utilisateurs se retrouvaient avec des binaires « hello world » de plus de 150 Mo et une consommation de mémoire effrénée.<br />
<br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span>, la nouvelle sous-commande native qui vient de sortir, redéfinit complètement les règles du jeu en matière de distribution pour ordinateurs de bureau. Au lieu d'encapsuler votre projet dans des couches IPC à forte friction et des frameworks lourds, deno desktop cible votre référentiel web existant (Next.js, Astro, Remix, SvelteKit, etc.) et le compile en un exécutable natif léger et autonome. Pas de réécriture de code, pas d'empreinte de dépendances massive, et une compatibilité totale avec <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Node/npm</span> dès l'installation. Le paysage du développement pour ordinateur de bureau vient de changer pour de bon. <br />
<br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span> transforme un projet Deno (qu'il s'agisse d'un simple fichier TypeScript ou d'une application Next.js) en une application de bureau autonome. Le résultat est un binaire redistribuable qui regroupe votre code, le runtime Deno et un moteur de rendu Web en un seul paquet par plateforme.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p677091d1782159880/javascript/general-javascript/deno-lance-deno-desktop-nouvelle-commande-convertit-applications-web-binaires-natifs/deno-desktop-javascript.png/" border="0" alt="Nom : deno desktop javascript.png
Affichages : 4895
Taille : 78,7 Ko"  style="float: CONFIG" /></div><br />
<b><font size="3">Pourquoi <i>deno desktop</i> ?</font></b><br />
<br />
Les technologies web constituent la boîte à outils d'interface utilisateur la plus répandue au monde. Les applications de bureau développées à partir de piles web (Electron, Tauri, Electrobun) tirent parti de cet atout, mais chacune présente des inconvénients avec lesquels il faut composer : des binaires volumineux, une prise en charge insuffisante de certaines plateformes, l'absence d'écosystème JavaScript, l'absence de mécanisme de mise à jour intégré et l'absence d'intégration de framework.<br />
<br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span> a une position bien définie sur ces compromis :<br />
<br />
<ul><li style=""> Petite taille par défaut, compatibilité totale avec Node. Le backend WebView par défaut utilise la WebView native du système d'exploitation pour obtenir des binaires légers, tout en permettant de continuer à bénéficier de l'intégralité de l'écosystème npm grâce à la couche de compatibilité Node de Deno. Les développeurs peuvent opter pour le backend Chromium (CEF) intégré lorsqu'ils ont besoin d'un rendu identique sous macOS, Windows et Linux.</li><li style=""> Détection automatique du framework. Il suffit de pointer <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span> vers un projet Next.js, Astro, Fresh, Remix, Nuxt, SvelteKit, SolidStart, TanStack Start ou Vite SSR pour qu’il s’exécute : le serveur de production en mode « release », et le serveur de développement avec rechargement à chaud (hot reload) via l’option <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">--hmr</span>. Aucune modification du code n’est nécessaire pour porter un projet web existant sur le bureau.</li><li style=""> Des liaisons intra-processus plutôt que l'IPC. La communication entre le backend et l'interface utilisateur s'effectue via des canaux intra-processus, et non via une IPC basée sur des sockets. Les valeurs sont toujours encodées lorsqu'elles franchissent la frontière d'appel, mais il n'y a pas d'allers-retours inter-processus entre le code Deno et la vue Web.</li><li style=""> Compilation croisée à partir d'une seule machine. Une même machine permet de compiler pour macOS, Windows et Linux. Les backends sont téléchargés à la demande, et non compilés localement.</li><li style=""> Mise à jour automatique intégrée via la comparaison de binaires. Il suffit de fournir un seul manifeste <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">latest.json</span> et des correctifs bsdiff ; le runtime interroge, applique et annule automatiquement les modifications en cas d'échec au démarrage. </li></ul><br />
<b><font size="3">Hello, desktop</font></b><br />
<br />
Créer une application de bureau en un seul fichier (<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">main.ts</span>) :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br /></div></td><td valign="top"><pre style="margin: 0">Deno.<span style="color: #0080ff;">serve</span><span class="br0">&#40;</span><span class="br0">&#40;</span><span class="br0">&#41;</span> =&gt;
  <span style="color: #0000ff;">new</span> <span style="color: #0080ff;">Response</span><span class="br0">&#40;</span><span style="color: #FF0000;">&quot;&lt;h1&gt;Hello, desktop&lt;/h1&gt;&quot;</span>, <span class="br0">&#123;</span>
    <span style="color: #800000;">headers</span>: <span class="br0">&#123;</span> <span style="color: #FF0000;">&quot;content-type&quot;</span>: <span style="color: #FF0000;">&quot;text/html&quot;</span> <span class="br0">&#125;</span>,
  <span class="br0">&#125;</span><span class="br0">&#41;</span>
<span class="br0">&#41;</span>;</pre></td></tr></table></code><hr />
</div><br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code">deno desktop main.ts</code><hr />
</div><br />
Le binaire compilé ouvre une fenêtre pointant vers un serveur HTTP local lié à votre gestionnaire <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Deno.<span style="color: #0080ff;">serve</span><span class="br0">&#40;</span><span class="br0">&#41;</span></span>. Vous pouvez l'exécuter directement :<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">./main      # macOS / Linux
.\main.exe  # Windows</pre></td></tr></table></code><hr />
</div><br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">Deno.<span style="color: #0080ff;">serve</span><span class="br0">&#40;</span><span class="br0">&#41;</span></span> se connecte automatiquement à l'adresse vers laquelle la vue Web navigue ; il n'est donc pas nécessaire de spécifier un port ou un nom d'hôte.<br />
<br />
<span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno desktop</span> est incluse dans Deno v2.9.0 et n'est pas encore disponible dans une version stable. Pour l'essayer, exécutez la commande <span style="font-family: monospace; padding: 2px; background: #ddd; display: inline-block">deno upgrade canary</span> afin d'installer la version canary. La commande, les clés de configuration et les API TypeScript sont susceptibles d'évoluer avant que la fonctionnalité ne soit stabilisée.<br />
<br />
<b>Source :</b> <a rel="nofollow" href="https://docs.deno.com/runtime/desktop/" target="_blank">Deno</a><br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Quel est votre avis sur le sujet ?<br />
:fleche: Trouvez-vous cette nouvelle sous-commande de Deno utile et pertinente ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://javascript.developpez.com/actu/378434/Deno-2-6-la-derniere-version-du-runtime-JavaScript-et-TypeScript-moderne-est-disponible-avec-l-outil-dx-un-controle-plus-granulaire-des-autorisations-et-une-verification-des-types-TypeScript-plus-rapide/" target="_blank">Deno 2.6, la dernière version du runtime JavaScript et TypeScript moderne, est disponible avec l'outil dx, un contrôle plus granulaire des autorisations et une vérification des types TypeScript plus rapide</a><br />
<br />
:fleche: <a href="https://javascript.developpez.com/actu/365176/Deno-contre-Oracle-Deno-a-depose-une-demande-d-annulation-de-la-marque-JavaScript-d-Oracle-Oracle-a-jusqu-au-4-janvier-2025-pour-agir-sinon-la-marque-sera-probablement-annulee/" target="_blank">Deno contre Oracle : Deno a déposé une demande d'annulation de la marque JavaScript d'Oracle, Oracle a jusqu'au 4 janvier 2025 pour agir, sinon la marque sera probablement annulée</a><br />
<br />
:fleche: <a href="https://javascript.developpez.com/actu/333870/Pendant-que-Deno-le-runtime-de-JS-et-TS-gagne-en-maturite-certaines-entreprises-tentent-de-l-utiliser-en-production-mais-d-autres-repartent-non-satisfaites-a-la-suite-des-tests-effectues/" target="_blank">Pendant que Deno, le runtime de JS et TS, gagne en maturité, certaines entreprises tentent de l'utiliser en production, mais d'autres repartent non satisfaites à la suite des tests effectués</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p677091d1782159880/javascript/general-javascript/deno-lance-deno-desktop-nouvelle-commande-convertit-applications-web-binaires-natifs/deno-desktop-javascript.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184331/javascript/general-javascript/deno-lance-deno-desktop-nouvelle-commande-convertit-applications-web-binaires-natifs/</guid>
		</item>
		<item>
			<title><![CDATA[Cloudflare rachète VoidZero afin de placer sa plateforme Workers au cœur du développement web assisté par l'IA]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2184101&amp;goto=newpost</link>
			<pubDate>Fri, 05 Jun 2026 12:03:04 GMT</pubDate>
			<description>*Cloudflare rachète VoidZero,...</description>
			<content:encoded><![CDATA[<div><b><font size="4">Cloudflare rachète VoidZero, la société open source derrière Vite et les outils de compilation JavaScript qui l'entourent, afin de placer sa plateforme pour développeurs au cœur du développement web assisté par l'IA</font></b><br />
<br />
<b>Cloudflare a annoncé l'acquisition de VoidZero, la société open source à l'origine de Vite et des outils de compilation JavaScript associés, afin de renforcer sa plateforme pour développeurs Workers. Cette initiative vise à faciliter le développement web assisté par l'intelligence artificielle (IA) en simplifiant le déploiement du code local vers le réseau mondial de Cloudflare, sans les transitions habituelles entre différents outils. Les outils de VoidZero, notamment Vite, Vitest, Rolldown et Oxc, resteront open source sous licence MIT et son équipe rejoindra la division « Emerging Technology and Incubation » de Cloudflare, où elle continuera à diriger les projets.</b><br />
<br />
Cloudflare, Inc. est une entreprise technologique américaine dont le siège social est situé à San Francisco, en Californie, qui propose une gamme de services Internet, notamment des services de réseau de diffusion de contenu (CDN), de cybersécurité dans le cloud, de protection contre les attaques DDoS et d'enregistrement de noms de domaine accrédités par l'ICANN. Les services de l'entreprise fonctionnent principalement comme un proxy inverse entre les visiteurs d'un site web et l'hébergeur du client, améliorant ainsi les performances et assurant une protection contre le trafic malveillant.<br />
<br />
Le 4 juin 2026, Cloudflare Inc. a annoncé avoir racheté VoidZero Inc., la société open source à l'origine de Vite et des outils de compilation JavaScript très répandus qui l'entourent, dans le but de positionner sa plateforme pour développeurs au cœur du développement web assisté par l'IA. VoidZero a été fondé par Evan You, le créateur du framework Vue.js, en 2023.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676768d1780660967/javascript/general-javascript/cloudflare-rachete-voidzero-afin-placer-plateforme-workers-coeur-developpement-web-assiste-l-ia/voidzero-cloudflare-javascript-ia.png/" border="0" alt="Nom : voidzero cloudflare javascript IA.png
Affichages : 1830
Taille : 17,5 Ko"  style="float: CONFIG" /></div><br />
Vite s'est imposé comme la norme dans le développement JavaScript et TypeScript, avec plus de 100 millions de téléchargements par semaine. Les autres outils de VoidZero s'intègrent parfaitement à ce flux de travail. Vitest se charge des tests. Rolldown, écrit en Rust, s'occupe de la création des paquets. La chaîne d'outils Oxc en constitue la base. <br />
<br />
Cloudflare souhaite intégrer cette chaîne d'outils à sa plateforme de développement Workers. L'objectif est d'offrir aux développeurs un parcours unique, du code sur leur ordinateur portable jusqu'au déploiement sur le réseau de Cloudflare, sans les transitions habituelles entre différents outils. <br />
<br />
L'entreprise a déclaré que la courbe d'adoption de Vite est « l'un des phénomènes les plus remarquables à observer actuellement dans l'écosystème ». Cloudflare a indiqué que Vite enregistre environ 129 millions de téléchargements hebdomadaires. Le plugin Vite de Cloudflare a atteint quant à lui près de 14 millions de téléchargements hebdomadaires, soit plus de 10 % du volume hebdomadaire total de Vite. <br />
<br />
Cette acquisition intervient alors que les agents de codage IA autonomes redéfinissent la manière dont les applications sont développées. Cloudflare estime que, à mesure que ces agents écrivent davantage de code, les outils qui les entourent doivent suivre le rythme, la priorité étant désormais accordée à la rapidité et à la prévisibilité du comportement, de l'environnement local jusqu'à la mise en production.<br />
<br />
« Les meilleurs ingénieurs que je connaisse déploient plus de code que jamais, et en écrivent moins à la main. L’IA se charge d’une plus grande partie de la saisie — tout ce qui l’entoure doit donc suivre le rythme », a déclaré Matthew Prince, cofondateur et PDG de Cloudflare. « Evan et son équipe ont développé Vite à partir de zéro en s’inspirant de la même philosophie que celle qui a guidé la création de Cloudflare : éliminer le superflu et privilégier la rapidité. Leur arrivée offre à des millions de développeurs, ainsi qu’aux agents IA qui travaillent à leurs côtés, le chemin le plus rapide entre le code local et notre réseau mondial. »<br />
<br />
L'équipe de VoidZero, décrite par Cloudflare comme composée de développeurs open source et de spécialistes de l'optimisation Rust, rejoindra la division « Emerging Technology and Incubation » de l'entreprise et continuera à diriger les projets. Evan You restera à la tête de la feuille de route open source de la chaîne d'outils.<br />
<br />
<div style="text-align: center;"><img src="https://www.developpez.net/forums/attachments/p676762d1780660899/javascript/general-javascript/cloudflare-rachete-voidzero-afin-placer-plateforme-workers-coeur-developpement-web-assiste-l-ia/voidzero-cloudflare-javascript-ia-fig-2.png/" border="0" alt="Nom : voidzero cloudflare javascript IA fig 2.png
Affichages : 572
Taille : 146,2 Ko"  style="float: CONFIG" /></div><br />
Pour répondre aux inquiétudes concernant le contrôle par un seul fournisseur d'une infrastructure open source largement utilisée, Cloudflare a déclaré que Vite, Vitest, Rolldown, Oxc et Vite+ resteraient open source sous licence MIT et indépendants de tout fournisseur. La feuille de route de Vite continuera également à être définie par l'équipe et la communauté Vite, tandis qu'Evan You et le reste de l'équipe VoidZero continueront de diriger Vite, Vitest, Rolldown, Oxc et Vite+. Cloudflare a déclaré qu'elle consacrera les ressources techniques et humaines nécessaires à ces projets, sans les réorienter.<br />
<br />
L'entreprise s'engage également à verser 1 million de dollars à un fonds indépendant dédié à l'écosystème Vite afin de soutenir les responsables de maintenance et les contributeurs n'étant affiliés ni à VoidZero ni à Cloudflare.<br />
<br />
« Notre priorité absolue est de préserver la confiance qui a permis à Vite de connaître un tel succès. Non pas par de belles paroles, mais en le démontrant chaque jour à travers la manière dont nous soutenons et développons ces projets », a déclaré Cloudflare. « Nous souhaitons également joindre le geste à la parole en ce qui concerne notre soutien à l'open source et aux fondements d'un écosystème collaboratif. Dans le cadre de cette annonce, Cloudflare s'engage à verser 1 million de dollars à un fonds dédié à l'écosystème Vite, destiné à soutenir les mainteneurs et les contributeurs, et géré par l'équipe principale de Vite. Vite dépasse largement le cadre de VoidZero ou de Cloudflare, et ceux qui ont contribué à sa création doivent avoir leur place dans la suite de l'aventure. »<br />
<br />
Evan You a déclaré dans un article de blog que cet accord résolvait un problème de monétisation qui avait longtemps handicapé VoidZero, malgré l'adoption rapide de ses outils. Avant les négociations en vue de l'acquisition, l'entreprise avait testé un modèle de licence mixte et développait parallèlement une plateforme de déploiement native Vite, baptisée Void, sur la base de Cloudflare. VoidZero avait levé des fonds lors d'un tour de table d'amorçage et d'une série A menés par Accel.<br />
<br />
Cette opération s'inscrit dans la lignée des acquisitions réalisées par Cloudflare dans le domaine du Web natif pour l'IA. En janvier, l'entreprise a racheté Human Native, une start-up spécialisée dans les données sous licence, et n'a cessé depuis de développer sa suite d'outils Agent Cloud, destinée à la création et à l'exploitation d'agents IA.<br />
<br />
<b><font size="3">Annonce de l'acquisition de VoidZero par Cloudflare</font></b><br />
<br />
Le communiqué de presse annonçant l'acquisition de VoidZero par Cloudflare est présenté ci-dessous :<br />
<br />
« Cloudflare, Inc., leader des solutions de connectivité dans le cloud, a annoncé aujourd’hui avoir racheté VoidZero, l’entreprise axée sur l’open source à l’origine de Vite, l’écosystème d’outils JavaScript de nouvelle génération. Cette acquisition permettra d’intégrer nativement les outils haute performance de VoidZero — notamment l’outil de compilation Vite, l’exécuteur de tests Vitest, le bundler Rolldown basé sur Rust et la chaîne d’outils Oxc — au sein de l’écosystème Cloudflare. En fusionnant le réseau mondial en périphérie de Cloudflare et la plateforme de développement Workers avec la chaîne d'outils standard de l'industrie du web moderne, Cloudflare crée une pile de déploiement fluide, en un seul clic, permettant de passer directement du code local au réseau mondial de Cloudflare.  <br />
<br />
Le développement d'applications connaît actuellement une transformation profonde. L'essor des agents de codage autonomes basés sur l'IA a inauguré une ère de création rapide de structures d'applications, où la rapidité et la prévisibilité entre l'environnement local et la production sont primordiales. La chaîne d'outils de VoidZero, articulée autour de Vite, s'est imposée comme la base commune de l'écosystème web, enregistrant plus de 130 millions de téléchargements hebdomadaires. Le plugin Cloudflare Vite a atteint 13,9 millions de téléchargements hebdomadaires — soit plus de 10 % du volume hebdomadaire total de Vite —, ce qui prouve que les développeurs choisissent déjà cette pile combinée pour les applications codées par l'IA.<br />
<br />
L'équipe de VoidZero, composée de développeurs open source et de spécialistes de l'optimisation Rust, dirigée par Evan You, créateur largement reconnu de Vue.js et Vite, rejoindra la division Emerging Technology and Incubation (ETI) de Cloudflare. L'équipe continuera à faire progresser la feuille de route open source de VoidZero tout en accélérant l'intégration approfondie avec la plateforme de développement Cloudflare Workers.<br />
<br />
« Chez VoidZero, notre mission a toujours été d’éliminer la fragmentation et les goulots d’étranglement de la pile web moderne », a déclaré Evan You, fondateur et PDG de VoidZero. « Cloudflare partage notre obsession pour la vitesse et la pureté architecturale. En unissant nos forces, nous pouvons préserver la neutralité, l’ouverture et l’indépendance vis-à-vis des fournisseurs de l’écosystème Vite, tout en bénéficiant des ressources et de l’infrastructure mondiale nécessaires pour optimiser l’expérience des développeurs pour des millions d’ingénieurs à travers le monde. »<br />
<br />
En intégrant directement les outils ultra-performants de VoidZero, basés sur Rust, à la plateforme de développement Workers de Cloudflare, Cloudflare unifiera l'ensemble du cycle de vie du développement logiciel. Les développeurs comme les agents IA autonomes pourront passer instantanément d'une idée à une mise en production mondiale grâce à un écosystème de déploiement Vite natif et modulable. Grâce à cette acquisition, Cloudflare entend promouvoir un modèle de développement centré sur les projets, en se concentrant sur trois initiatives clés :<br />
<br />
<ul><li style="">Unifier le pipeline de développement : intégrer nativement la CLI Cloudflare au flux de travail fluide de Vite, déjà très apprécié des développeurs, afin d'offrir une expérience de bout en bout sans friction à tous les créateurs.</li><li style="">Mettre en place une infrastructure basée sur l'intention : évoluer vers un workflow où une seule commande de déploiement Vite gère tout. Si la logique d'application déclare avoir besoin d'une base de données ou d'un magasin d'objets, une application Vite intégrant Cloudflare détectera automatiquement cette intention et provisionnera nativement des ressources Cloudflare telles que D1 ou R2, sans aucune intervention manuelle sur le tableau de bord.</li><li style="">Préserver la neutralité des mainteneurs open source : Vite, Rolldown, Oxc et Vitest resteront open source, indépendants de tout fournisseur et pilotés par la communauté. Vite, Vitest, Rolldown, Oxc et Vite+ resteront strictement open source sous licence MIT. Cloudflare s'engage à verser 1 million de dollars à un nouveau fonds indépendant dédié à l'écosystème Vite afin de soutenir les mainteneurs et contributeurs de la communauté qui sont indépendants à la fois de VoidZero et de Cloudflare.</li></ul><br />
« Chez Lovable, nous donnons aux développeurs les moyens de créer et de déployer des applications full-stack à une échelle sans précédent. Une chaîne d’outils ouverte et prévisible est absolument essentielle à cette mission. Alors que les agents gèrent des tâches en temps réel de plus en plus complexes, ils ont besoin d’une architecture sous-jacente performante et modulaire », a déclaré Fabian Hedin, directeur technique et cofondateur de Lovable. « En construisant notre pipeline automatisé sur Vite et en tirant parti de son écosystème ouvert, nous avons pu accélérer radicalement la manière dont les agents IA génèrent, compilent et déploient le code. Nous avons travaillé en étroite collaboration avec les équipes de Cloudflare et de VoidZero, et nous sommes ravis de continuer à soutenir et à tirer parti de l’écosystème qu’elles ont contribué à créer. Les infrastructures open source telles que Vite jouent un rôle essentiel dans l’avenir du développement logiciel, et nous sommes encouragés de voir que son développement reste indépendant et transparent. »<br />
<br />
»<br />
<br />
<b><font size="3">Que se passe-t-il ensuite ?</font></b><br />
<br />
Cloudflare a déclaré qu'à court terme, rien ne changera pour les utilisateurs de Vite ni pour les frameworks qui s'appuient sur Vite. Vite, Vitest, Rolldown, Oxc et Vite+ continueront d'être mis à jour et l'équipe VoidZero continuera de contribuer à leur développement et d'en assurer la direction. Le plugin Cloudflare Vite continuera également d'être amélioré, et l'API Environment et le concept plus large consistant à « exécuter votre code serveur dans le bon runtime localement » continueront de s'améliorer, y compris pour les runtimes non Cloudflare.<br />
<br />
À plus long terme, Cloudflare entamera les travaux visant à faire évoluer son interface CLI vers une expérience directement intégrée à Vite. Ce dernier bénéficiera de nouvelles primitives épurées et indépendantes des fournisseurs, destinées aux applications full-stack et aux agents, qui fonctionneront pour tous, quelle que soit la plateforme. À terme, Cloudflare mettra la plateforme Void en open source pour que d'autres puissent s'en inspirer et créer leurs propres plateformes en s'appuyant sur Vite et Cloudflare.<br />
<br />
« Nous sommes ravis d'accueillir l'équipe de VoidZero chez Cloudflare et impatients de consacrer davantage de ressources à ces projets. Notre mission consiste désormais à les aider à se développer, à rester ouverts et à dynamiser l'écosystème JavaScript pour tous », a déclaré Cloudflare.<br />
<br />
<b>Sources :</b> Cloudflare (<a rel="nofollow" href="https://www.cloudflare.com/press/press-releases/2026/cloudflare-acquires-voidzero-to-build-the-future-of-the-ai-native-web/" target="_blank">1</a>,  <a rel="nofollow" href="https://blog.cloudflare.com/voidzero-joins-cloudflare/" target="_blank">2</a>)<br />
<br />
<b>Et vous ?</b><br />
<br />
:fleche: Quel est votre avis sur le sujet ?<br />
:fleche: Trouvez-vous cette initiative de Cloudflare crédible ou pertinente ?<br />
<br />
<b>Voir aussi :</b><br />
<br />
:fleche: <a href="https://intelligence-artificielle.developpez.com/actu/380269/Apres-avoir-tente-de-bloquer-l-IA-Cloudflare-souhaite-desormais-faire-le-contraire-et-aider-l-IA-a-s-alimenter-des-sites-web-grace-a-la-conversion-automatique-et-instantanee-du-HTML-en-markdown/" target="_blank">Après avoir tenté de bloquer l'IA, Cloudflare souhaite désormais faire le contraire et aider l'IA à s'alimenter des sites web grâce à la conversion automatique et instantanée du HTML en markdown</a><br />
<br />
:fleche: <a href="https://web.developpez.com/actu/379356/Cloudflare-acquiert-Astro-le-framework-web-permettant-de-creer-des-sites-web-rapides-et-axes-sur-le-contenu-afin-d-accelerer-l-avenir-du-developpement-web-haute-performance/" target="_blank">Cloudflare acquiert Astro, le framework web permettant de créer des sites web rapides et axés sur le contenu, afin d'accélérer l'avenir du développement web haute performance</a><br />
<br />
:fleche: <a href="https://intelligence-artificielle.developpez.com/actu/376259/Deployez-votre-propre-plateforme-d-IA-de-Vibe-Coding-en-un-seul-clic-Cloudflare-met-en-open-source-sa-plateforme-de-codage-IA-complete-de-bout-en-bout-VibeSDK/" target="_blank">Déployez votre propre plateforme d'IA de Vibe Coding en un seul clic : Cloudflare met en open source sa plateforme de codage IA complète de bout en bout &quot;VibeSDK&quot;</a></div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p676762d1780660899/javascript/general-javascript/cloudflare-rachete-voidzero-afin-placer-plateforme-workers-coeur-developpement-web-assiste-l-ia/voidzero-cloudflare-javascript-ia-fig-2.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p676768d1780660967/javascript/general-javascript/cloudflare-rachete-voidzero-afin-placer-plateforme-workers-coeur-developpement-web-assiste-l-ia/voidzero-cloudflare-javascript-ia.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Anthony</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2184101/javascript/general-javascript/cloudflare-rachete-voidzero-afin-placer-plateforme-workers-coeur-developpement-web-assiste-l-ia/</guid>
		</item>
		<item>
			<title>Un panier avec LocalStorage - Sécurité</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183475&amp;goto=newpost</link>
			<pubDate>Wed, 29 Apr 2026 10:43:30 GMT</pubDate>
			<description>Bonjour. Si un spécialiste JS...</description>
			<content:encoded><![CDATA[<div>Bonjour. Si un spécialiste JS a un avis sur la question ?<br />
<br />
J'ai crée un site statique pour une petite boutique, avec une page PANIER. Le panier marche avec LocalStorage et des boutons addToCart en JS.<br />
Un bouton SDK Paypal permet de finaliser le paiement. Je récupère le total via JS et je l’intègre dans le script PayPal.<br />
La seule indication publique est l'ID client dans le chemin du script.<br />
<br />
<b>Selon vous, cela pose il un problème de sécurité ?</b> Je sais bien qu'il est possible de changer le prix du total via la console, mais je ne vois pas l'intérêt de la manœuvre<br />
car au final le total payé via Paypal ne correspondra pas au produit et le vendeur le verras bien.<br />
<br />
Pour l'instant, je suis assez serein sur la procédure car je ne transmet aucun code, token confidentiel mais peut-être que je suis dans le faux. <br />
J'ai une certaine maitrise de JS mais je ne suis pas non plus un expert. <br />
<br />
Si certain-e parmi ont des connaissances poussées en JS et peuvent confirmer ou infirmer ? Merci.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>BKaernel</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183475/javascript/general-javascript/panier-localstorage-securite/</guid>
		</item>
		<item>
			<title><![CDATA[Remettre dragged element dans son parent d'origine]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183421&amp;goto=newpost</link>
			<pubDate>Sun, 26 Apr 2026 09:30:33 GMT</pubDate>
			<description><![CDATA[Bonjour à tous, 
j'ai des...]]></description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
j'ai des images qui sont dans des <b>divs</b> qui eux sont disposés horizontalement dans un grand <b>div</b>. L'idée est de glisser un <b>div </b> contenant une image et le déposer sur <b>Document</b>.<br />
<br />
Je souhaite pouvoir remettre chaque <b>div</b> contenant une image dans sa place d'origine en cliquant sur une croix rouge à côté de l'image (histoire de désélectionner l'image).<br />
<br />
<b>PROBLEMATIQUE</b>: Le <b>div </b>général qui contient les <b>divs</b> des images est en position &quot; <b>sticky</b> &quot;(afin que je puisse <b>scroller</b> tout en l'ayant au milieu de l'écran)<br />
Lorsque j'ai utilisé la méthode de récupérer la position d'origine et l'affecter ensuite à l'élément, cela marche partiellement car puisque le <b>div </b>général est &quot;<b>sticky</b>&quot;, il reste au milieu du <b>view </b>tandis que l'élément remis suit le mouvement du <b>scroll</b>.<br />
<br />
Auriez-vous une solution pour que les éléments reviennent à leur place d'origine relative au <b>parent </b>(qui est &quot;<b>sticky</b>&quot;) svp ?<br />
<br />
Merci</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>OUZFA</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183421/javascript/general-javascript/remettre-dragged-element-parent-d-origine/</guid>
		</item>
		<item>
			<title><![CDATA[NexoPad : Comment j'ai résolu l'injection DOM en Vanilla JS pour créer un espace de travail unifié]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183363&amp;goto=newpost</link>
			<pubDate>Wed, 22 Apr 2026 20:37:13 GMT</pubDate>
			<description>Bonjour à tous, 
 
En tant...</description>
			<content:encoded><![CDATA[<div>Bonjour à tous,<br />
<br />
En tant que développeurs, nous passons notre vie dans le navigateur. Mais il y a quelques mois, j'en ai eu marre de devoir jongler entre 20 onglets juste pour retrouver une note en Markdown, copier une réponse prédéfinie pour un ticket de support, ou utiliser un wrapper d'IA pour reformuler un texte. Le context switching (basculement de contexte) tuait ma productivité.<br />
<br />
Au lieu de chercher une énième application, j'ai décidé de développer NexoPad : une extension qui unifie ces outils directement dans les couches natives du navigateur. L'équipe de Google vient d'ailleurs de l'évaluer manuellement et de lui attribuer le badge &quot;Sélection&quot; (Featured), ce qui est une belle validation technique.<br />
<br />
La Stack Technique :<br />
J'ai gardé le front-end aussi léger que possible en utilisant principalement du Vanilla JS et HTML5/CSS pour les éléments d'interface (popup, panneau latéral, content scripts). Pour le back-end (synchronisation et RBAC des plans Pro/Teams), je m'appuie sur Supabase.<br />
<br />
Les défis techniques et fonctionnalités clés :<br />
<br />
1. Injection DOM et Parseur dynamique (Snippets) :<br />
C'est la partie qui m'a donné le plus de fil à retordre. L'extension injecte des templates directement dans le DOM actif (fonctionne sur des SPA complexes comme Gmail ou Zendesk). J'ai codé un parseur sur mesure pour gérer des variables dynamiques ({{input}}), du Spintax, et un Inspecteur Visuel qui permet d'extraire le texte d'un élément du DOM à la volée pour l'utiliser comme variable.<br />
<br />
2. Architecture IA &quot;Bring Your Own Key&quot; (BYOK) :<br />
Je suis opposé au fait de payer des abonnements mensuels pour des wrappers IA qui stockent nos données. NexoPad utilise un modèle BYOK : les appels API (OpenAI, Anthropic, Gemini) partent directement du navigateur du client vers le fournisseur. Aucune donnée ne transite par mes serveurs. L'interface flottante permet de sélectionner du texte sur n'importe quelle page et de le remplacer par la réponse de l'IA via une injection directe.<br />
<br />
3. Notes &quot;Local-first&quot; et Web Clipper :<br />
Un éditeur Markdown complet intégré au navigateur. Les notes peuvent être détachées sous forme de fenêtres flottantes en utilisant l'API Picture-in-Picture, idéal pour garder des bouts de code sous les yeux.<br />
<br />
4. Gestion des onglets avancée :<br />
L'extension s'intègre directement avec l'API native des groupes d'onglets de Chrome pour lancer des environnements de projet en masse. J'y ai ajouté un script de renommage forcé des onglets pour identifier facilement les instances dupliquées (très utile pour les CRM).<br />
<br />
Si vous avez l'occasion de la tester, je serais ravi d'avoir vos retours techniques, des critiques sur l'UI/UX, ou d'échanger sur les défis liés au développement sous Manifest V3.<br />
<br />
Liens :<br />
<br />
Site web : <a rel="nofollow" href="https://nexopad.app" target="_blank">https://nexopad.app</a><br />
<br />
Chrome Web Store: <a rel="nofollow" href="https://chromewebstore.google.com/detail/nexopad-expansor-de-texto/jjjmhgbdbepmledkcoalkfhnnnoignca" target="_blank">https://chromewebstore.google.com/de...alkfhnnnoignca</a><br />
<br />
Firefox Add-ons: <a rel="nofollow" href="https://addons.mozilla.org/es-ES/firefox/addon/nexopad-atajos-notas-y-links/" target="_blank">https://addons.mozilla.org/es-ES/fir...notas-y-links/</a><br />
<br />
Merci de m'avoir lu !</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>richyzx7</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183363/javascript/general-javascript/nexopad-j-ai-resolu-l-injection-dom-vanilla-js-creer-espace-travail-unifie/</guid>
		</item>
		<item>
			<title>Poser une question concernant JavaScript avec Edge ?</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183180&amp;goto=newpost</link>
			<pubDate>Mon, 13 Apr 2026 08:46:31 GMT</pubDate>
			<description>Bonjour, 
Je suis sous W11...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
Je suis sous W11 avec WebView, WebView4Delphi et JavaScript installé et maintenues à jour.<br />
Je rencontre un problème avec JavaScript dans Edge (via le WVBrowser object implémenté par WebView4Delphi).<br />
Pour le moment, je ne reçois aucune réponse sur le forum dédié à WebView4Delphi, où j'ai exposé mon problème.<br />
<br />
Je décris brièvement:<br />
je pars d'une page &quot;about<b></b>:blank&quot; chargé par la méthode Navigate, j'ajoute un élément HTML &quot;Script&quot; dans l'élément &quot;head&quot; de la page.<br />
Ce script contient la définition d'une fonction JavaScript créant un élément DIV avec un texte chargé dans l'attribut InnerText.<br />
L'ajout de cet élément script fonctionne bien et la fonction est appelable.<br />
<br />
Mais - lorsque j'appelle cette fonction, elle crée bien mon élément DIV ajouté au &quot;body&quot; de la page, mais le texte ne s'affiche pas.<br />
J'ai vérifié par l'inspecteur: <br />
l'attribut TextContent de monDIV attaché au body contient bien le texte que j'ai fourni mais rien n'est affiché.<br />
<br />
Pourriez-vous m'indiquer dans quel forum ou sousforum je pourrais poster ma question avec tous les détails (code HTML, JavaScript, captures etc) ?<br />
Merci !</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>KlausGunther</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183180/javascript/general-javascript/poser-question-concernant-javascript-edge/</guid>
		</item>
		<item>
			<title>Créer une expression javascript pour calculer un élément de la page</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2183051&amp;goto=newpost</link>
			<pubDate>Sun, 05 Apr 2026 11:22:07 GMT</pubDate>
			<description>Bonjour, 
 
Je suis débutant...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je suis débutant en Javascript et nouveau sur ce forum, merci pour votre accueil. <br />
Sous Oracle Application Express, dans une &quot;Expression Javascript&quot;, je cherche a récupérer une valeur de deux élements d'un formulaire : P7_ROLE et P7_RELATION et selon ces valeurs, affecter une valeur à l'élément P7_PRIORITE_CONTACT.<br />
Voici les conditions :<br />
SI P7_ROLE = &quot;Décideur&quot; ET P7_RELATION = &quot;Chaud&quot; Alors P7_PRIORITE_CONTACT = &quot;Haute&quot;<br />
SI P7_ROLE = &quot;Décideur&quot; ET P7_RELATION = &quot;Tiède&quot;Alors P7_PRIORITE_CONTACT = &quot;Haute&quot;<br />
SI P7_ROLE = &quot;Prescripteur&quot; ET P7_RELATION = &quot;Chaud&quot; Alors P7_PRIORITE_CONTACT = &quot;Haute&quot;<br />
SI P7_ROLE = &quot;Froid&quot; = Basse Alors P7_RELATION = &quot;Basse&quot;<br />
SINON P7_RELATION = &quot;Moyenne&quot;.<br />
<br />
Meric pour votre aide.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Chipniz</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2183051/javascript/general-javascript/creer-expression-javascript-calculer-element-page/</guid>
		</item>
		<item>
			<title><![CDATA[éviter que copie de "<" devienne "&lt;" au collé]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182878&amp;goto=newpost</link>
			<pubDate>Thu, 26 Mar 2026 10:49:47 GMT</pubDate>
			<description>Bonjour tout le monde, 
...</description>
			<content:encoded><![CDATA[<div>Bonjour tout le monde,<br />
<br />
J'ai une petite fonction que j'utilise sur mon site pour la copie de code html et css généré par l'appli php, les codes sont contenus dans 2 textarea &quot;StriHtml&quot; et &quot;StriCss&quot;. Coté css tout se passe bien, par contre coté html les caractères de balises &lt; et &gt; deviennent &quot;&amp;lt;&quot; et &quot;&amp;gt;&quot; au collé dans un éditeur de texte.<br />
<br />
Un exemple parmi d'autres (c'est mieux qu'un long discours : <a rel="nofollow" href="https://codepen.io/erdouane/pen/QwKGwLP" target="_blank">https://codepen.io/erdouane/pen/QwKGwLP</a><br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">function CopierHtml() {
	var text_to_copy = document.getElementById(&quot;StriHtml&quot;).innerHTML;
	navigator.clipboard.writeText(text_to_copy).then(
	function(){
		alert(&quot;Code HTML copié&quot;);
	})
}</pre></td></tr></table></code><hr />
</div>J'ai beau chercher, je ne trouve pas de réponse (je ne pose certainement pas bien la question).<br />
Une âme charitable saurait-elle me trouver la bonne méthode ? <br />
Merci d'avance et bonne continuation à toutes et tous :D que vous ayez ou non la réponse.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>erranali</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182878/javascript/general-javascript/eviter-copie-devienne-lt-colle/</guid>
		</item>
		<item>
			<title><![CDATA[[Canvas] Supprimer les pixels d'une zone Canvas]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182636&amp;goto=newpost</link>
			<pubDate>Fri, 13 Mar 2026 19:46:13 GMT</pubDate>
			<description><![CDATA[Bonjour, 
 
J'essaie de...]]></description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
J'essaie de supprimer des pixels sur un <i>canvas</i> de HTML5 d'une forme semblable à <i>roundRect</i> avec les bords totalement arrondis pour créer un fond d'image transparent.<br />
<br />
Existe-t-il un moyen simple pour faire cela ?<br />
<br />
<font size="1">Petit point en plus : je ne cherche pas la rapidité mais plutôt la précision car c'est pour créer mon logo puis le télécharger en image.</font></div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Elliot2.0</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182636/javascript/general-javascript/canvas-supprimer-pixels-d-zone-canvas/</guid>
		</item>
		<item>
			<title>Faire glisser les pages de mon site internet (Photos) en utilisant un téléphone Androïd</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2182304&amp;goto=newpost</link>
			<pubDate>Wed, 25 Feb 2026 09:49:38 GMT</pubDate>
			<description>Bonjour, 
 
je suis peu...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
je suis peu expérimenté mais comme mon site utilise quelques routines java je me demandais si c'était possible de compléter l'avance ou le recul des pages de mon site par glissement du doigt sur un téléphone Androïd , sur un PC ce sont les flèches droite &lt;=&gt; gauche qui permettent l'avance ou le recul.<br />
La séquence actuelle est : <br />
<br />
<div class="bbcode_container">
	<div class="bbcode_description">Code:</div>
	<hr /><code class="bbcode_code"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td valign="top"><pre style="margin: 0"> <span style="color: #0000ff;">function</span> <span style="color: #0080ff;">handler</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span> <span class="br0">&#123;</span>
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">all</span><span class="br0">&#41;</span> e = <span style="color: #0080ff;">window</span>.<span style="color: #0080ff;">event</span>;
     <span style="color: #0000ff;">var</span> key;
     <span style="color: #0000ff;">var</span> msg = <span style="color: #FF0000;">''</span>;
     key = e.keyCode;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">layers</span><span class="br0">&#41;</span> key = e.which;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span><span style="color: #0080ff;">document</span>.<span style="color: #0080ff;">all</span><span class="br0">&#41;</span>    key = e.keyCode;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>key==<span style="color: #cc66cc;">39</span><span class="br0">&#41;</span> msg = <span style="color: #FF0000;">'_00001.htm'</span>;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>key==<span style="color: #cc66cc;">76</span><span class="br0">&#41;</span> msg = <span style="color: #FF0000;">'_00016.htm'</span>;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>key==<span style="color: #cc66cc;">80</span>||key==<span style="color: #cc66cc;">37</span><span class="br0">&#41;</span> msg = <span style="color: #FF0000;">'_00015.htm'</span>;
     <span style="color: #0000ff;">if</span> <span class="br0">&#40;</span>msg!=<span style="color: #FF0000;">''</span><span class="br0">&#41;</span> <span style="color: #0080ff;">location</span> = msg;
   <span class="br0">&#125;</span></pre></td></tr></table></code><hr />
</div>pour <b>key=39</b> flèche gauche c'est un recul et pour <b>key=76</b> flèche droite du PC c'est une avance.<br />
<br />
Si vous avez la solution à me proposer, je vous en remercie d'avance.<br />
<br />
Très bonne journée à vous.</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Trente</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2182304/javascript/general-javascript/faire-glisser-pages-site-internet-photos-utilisant-telephone-android/</guid>
		</item>
		<item>
			<title>Convertir un texte html en image png</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181997&amp;goto=newpost</link>
			<pubDate>Mon, 09 Feb 2026 02:09:59 GMT</pubDate>
			<description><![CDATA[Bonjour, j'ai une zone de...]]></description>
			<content:encoded><![CDATA[<div>Bonjour, j'ai une zone de texte input, dans laquelle le client écrit son texte, je voudrais que via un lien, il puisse télécharger le texte écrit sur une image au format PNG, est ce que je peux avoir votre aide s'ils vous plait ?</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>Kojoh</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181997/javascript/general-javascript/convertir-texte-html-image-png/</guid>
		</item>
		<item>
			<title><![CDATA[Erreur : Identificateur inconnu, sur la fonction [alert]]]></title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181455&amp;goto=newpost</link>
			<pubDate>Tue, 13 Jan 2026 11:14:35 GMT</pubDate>
			<description>Bonjour, 
 
Je suis le cours...</description>
			<content:encoded><![CDATA[<div>Bonjour,<br />
<br />
Je suis <a rel="nofollow" href="https://fr.javascript.info/alert-prompt-confirm" target="_blank">le cours</a> <br />
<br />
<img src="https://www.developpez.net/forums/attachments/p673226d1768302684/javascript/general-javascript/erreur-identificateur-inconnu-fonction-alert/1.png/" border="0" alt="Nom : 1.png
Affichages : 160
Taille : 11,6 Ko"  style="float: CONFIG" /><br />
Quand je saisis le code dans node, il me reporte une erreur sur alert<br />
<img src="https://www.developpez.net/forums/attachments/p673227d1768302734/javascript/general-javascript/erreur-identificateur-inconnu-fonction-alert/2.png/" border="0" alt="Nom : 2.png
Affichages : 152
Taille : 16,0 Ko"  style="float: CONFIG" /><br />
<br />
Merci de votre aide</div>


	<div style="padding:10px">

	

	
		<fieldset class="fieldset">
			<legend>Images attachées</legend>
				<div style="padding:10px">
				<img class="attach" src="https://www.developpez.net/forums/attachments/p673226d1768302684/javascript/general-javascript/erreur-identificateur-inconnu-fonction-alert/1.png/" alt="" />&nbsp;<img class="attach" src="https://www.developpez.net/forums/attachments/p673227d1768302734/javascript/general-javascript/erreur-identificateur-inconnu-fonction-alert/2.png/" alt="" />&nbsp;
			</div>
		</fieldset>
	

	

	

	</div>
]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>frunch</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181455/javascript/general-javascript/erreur-identificateur-inconnu-fonction-alert/</guid>
		</item>
		<item>
			<title>Ouvrir des onglets sur des fenêtres avec window.open et chrome</title>
			<link>https://www.developpez.net/forums/showthread.php?t=2181340&amp;goto=newpost</link>
			<pubDate>Tue, 06 Jan 2026 15:51:02 GMT</pubDate>
			<description>Bonjour et meilleurs voeux !...</description>
			<content:encoded><![CDATA[<div>Bonjour et meilleurs voeux !<br />
<br />
A partir d'un bouton sur mon site web, en utilisant le navigateur Chrome, je voudrais ouvrir une URL sur une NOUVELLE fenêtre (pop-up) avec window.open, puis ouvrir 2 autres URL dans de nouveaux ONGLETS, sur la même pop-up précédemment créée.<br />
<br />
Savez-vous si c'est possible ?<br />
<br />
Je vous remercie</div>

]]></content:encoded>
			<category domain="https://www.developpez.net/forums/f23/javascript/general-javascript/">Général JavaScript</category>
			<dc:creator>JeanParis</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/d2181340/javascript/general-javascript/ouvrir-onglets-fenetres-window-open-chrome/</guid>
		</item>
	</channel>
</rss>
