Skip to content

Commit 1f2f2a9

Browse files
authored
Merge pull request #336 from HachemiH/master
Conflicts fixed after sync with upstream @ eda333d
2 parents ad9142e + d8eb499 commit 1f2f2a9

File tree

11 files changed

+25
-124
lines changed

11 files changed

+25
-124
lines changed

1-js/01-getting-started/1-intro/article.md

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,11 @@ Le navigateur a un moteur intégré, parfois il peut être également appelé "l
2626

2727
Différents moteurs ont différents "nom de code", par exemple:
2828

29-
<<<<<<< HEAD
3029
- [V8](<https://fr.wikipedia.org/wiki/V8_(moteur_JavaScript)>) -- dans Chrome et Opera.
3130
- [SpiderMonkey](https://fr.wikipedia.org/wiki/SpiderMonkey) -- dans Firefox.
3231
- … Il existe d'autres noms de code comme "Chakra" pour IE, "JavaScriptCore", "Nitro" et "SquirrelFish" pour Safari etc.
3332

3433
Les termes ci-dessus sont bons à retenir, car ils sont utilisés dans les articles destinés aux développeurs sur Internet. Nous les utiliserons aussi. Par exemple, si "une fonctionnalité X est prise en charge par V8", cela fonctionne probablement dans Chrome et Opera.
35-
=======
36-
- [V8](https://en.wikipedia.org/wiki/V8_(JavaScript_engine)) -- in Chrome, Opera and Edge.
37-
- [SpiderMonkey](https://en.wikipedia.org/wiki/SpiderMonkey) -- in Firefox.
38-
- ...There are other codenames like "Chakra" for IE, "JavaScriptCore", "Nitro" and "SquirrelFish" for Safari, etc.
39-
40-
The terms above are good to remember because they are used in developer articles on the internet. We'll use them too. For instance, if "a feature X is supported by V8", then it probably works in Chrome, Opera and Edge.
41-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
4234

4335
```smart header="Comment fonctionnent les moteurs ?"
4436

1-js/01-getting-started/3-code-editors/article.md

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,20 +34,11 @@ En pratique, les éditeurs légers peuvent avoir beaucoup de plug-ins, y compris
3434
Les options suivantes méritent votre attention :
3535

3636
- [Atom](https://atom.io/) (multiplateforme, gratuit).
37-
- Visual Studio Code (multiplateforme, gratuit).
3837
- [Sublime Text](http://www.sublimetext.com) (multiplateforme, payant).
3938
- [Notepad++](https://notepad-plus-plus.org/) (Windows, gratuit).
4039
- [Vim](http://www.vim.org/) et [Emacs](https://www.gnu.org/software/emacs/) sont également cool, si vous savez comment les utiliser.
4140

4241

43-
<<<<<<< HEAD
44-
=======
45-
- [Atom](https://atom.io/) (cross-platform, free).
46-
- [Sublime Text](http://www.sublimetext.com) (cross-platform, shareware).
47-
- [Notepad++](https://notepad-plus-plus.org/) (Windows, free).
48-
- [Vim](http://www.vim.org/) and [Emacs](https://www.gnu.org/software/emacs/) are also cool if you know how to use them.
49-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
50-
5142
## Ne discutons pas
5243

5344
Les éditeurs des listes ci-dessus sont ceux que moi-même ou mes amis, que je considère comme de bons développeurs, utilisent depuis longtemps et en sont satisfaits.

1-js/02-first-steps/09-comparison/article.md

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,17 +4,10 @@ Il y a de nombreux opérateurs de comparaison que nous connaissons des mathémat
44

55
- Plus grand/petit que : <code>a &gt; b</code>, <code>a &lt; b</code>.
66
- Plus grand/petit ou égal à : <code>a &gt;= b</code>, <code>a &lt;= b</code>.
7-
- Le contrôle d'égalité est écrit en tant que `a == b` (veuillez noter le signe de la double équation `=`. Un seul symbole `a = b` signifierait une affectation).
8-
- Pas égal. En maths, la notation est ``, en JavaScript, elle est écrite comme une assignation avec un signe d’exclamation : <code>a != b</code>.
7+
- Égalité : `a == b` (veuillez noter le signe de la double égalité `==` signifie un test d’égalité. Un seul symbole `a = b` signifierait une affectation).
8+
- Pas égal : en maths la notation est <code>&ne;</code>, mais en JavaScript elle est écrite comme une assignation avec un signe d’exclamation : <code>a != b</code>.
99

10-
<<<<<<< HEAD
1110
Dans cet article, nous en apprendrons plus sur les différents types de comparaisons, sur la façon dont JavaScript les fait, y compris sur les particularités importantes.
12-
=======
13-
- Greater/less than: <code>a &gt; b</code>, <code>a &lt; b</code>.
14-
- Greater/less than or equals: <code>a &gt;= b</code>, <code>a &lt;= b</code>.
15-
- Equals: `a == b`, please note the double equality sign `==` means the equality test, while a single one `a = b` means an assignment.
16-
- Not equals: In maths the notation is <code>&ne;</code>, but in JavaScript it's written as <code>a != b</code>.
17-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
1811

1912
À la fin, vous trouverez une bonne recette pour éviter les problèmes liés aux "bizarreries JavaScript".
2013

1-js/02-first-steps/11-logical-operators/article.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -123,11 +123,7 @@ Cela conduit à des usages intéressants par rapport à un "OR pur, classique, b
123123

124124
Cela signifie que `||` traite ses arguments jusqu'à ce que la première valeur de vérité soit atteinte, puis la valeur est renvoyée immédiatement, sans même toucher l'autre argument.
125125

126-
<<<<<<< HEAD
127126
L'importance de cette fonctionnalité devient évidente si un opérande n'est pas seulement une valeur, mais une expression avec un effet secondaire, comme une affectation de variable ou un appel de fonction.
128-
=======
129-
The importance of this feature becomes obvious if an operand isn't just a value, but an expression with a side effect, such as a variable assignment or a function call.
130-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
131127

132128
Dans l'exemple ci-dessous, seul le deuxième message est imprimé :
133129

1-js/03-code-quality/02-coding-style/article.md

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -307,19 +307,11 @@ Ce qui est génial avec eux, c'est que la vérification du style trouve égaleme
307307
308308
Voici quelques linters bien connus :
309309
310-
<<<<<<< HEAD
311310
- [JSLint](http://www.jslint.com/) -- l'un des premiers linters.
312311
- [JSHint](http://www.jshint.com/) -- plus de paramètres que JSLint.
313312
- [ESLint](http://eslint.org/) -- probablement le plus récent.
314313
315314
Tous peuvent faire le travail. L'auteur utilise [ESLint](http://eslint.org/).
316-
=======
317-
- [JSLint](https://www.jslint.com/) -- one of the first linters.
318-
- [JSHint](https://jshint.com/) -- more settings than JSLint.
319-
- [ESLint](https://eslint.org/) -- probably the newest one.
320-
321-
All of them can do the job. The author uses [ESLint](https://eslint.org/).
322-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
323315
324316
La plupart des linters sont intégrés aux éditeurs: il suffit d'activer le plug-in dans l'éditeur et de configurer le style.
325317
@@ -351,14 +343,6 @@ Ici, la directive `"extends"` indique que nous nous basons sur l'ensemble de par
351343
352344
Il est aussi possible de télécharger des ensembles de règles de style à partir du Web et de les étendre. Voir <http://eslint.org/docs/user-guide/getting-started> pour plus de détails sur l'installation.
353345
354-
L'utilisation d'un linter a un effet secondaire formidable: les linters prennent les fautes de frappe. Par exemple, quand on accède à une variable non définie, un linter la détecte et (s'il est intégrée à un éditeur) la met en évidence. Dans la plupart des cas, il s’agit d’un mauvais type. Nous pouvons donc régler le problème tout de suite.
355-
356-
<<<<<<< HEAD
357-
Pour cette raison, même si vous n’êtes pas préoccupé par les styles, il est vivement recommandé d’utiliser un linter.
358-
=======
359-
It is also possible to download style rule sets from the web and extend them instead. See <https://eslint.org/docs/user-guide/getting-started> for more details about installation.
360-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
361-
362346
De plus, certains IDE prennent en charge le linting nativement, ce qui peut également être bien, mais pas aussi ajustables que ESLint.
363347
364348
## Résumé

1-js/05-data-types/01-primitives-methods/article.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,7 @@ La solution semble peu commode, mais la voici:
4848
2. Le langage permet d'accéder aux méthodes et aux propriétés des chaînes de caractères, des nombres, des booléens et des symboles.
4949
3. Pour que cela fonctionne, un "wrapper d'objet" (conteneur) spécial est crée pour fournir la fonctionnalité supplémentaire, puis il est détruit.
5050

51-
<<<<<<< HEAD
5251
Les "wrapper d'objets" (conteneurs) sont différents pour chaque type de primitive et sont appelés: `String`, `Number`, `Boolean` et `Symbol`. Ainsi, ils fournissent différents ensembles de méthodes.
53-
=======
54-
The "object wrappers" are different for each primitive type and are called: `String`, `Number`, `Boolean`, `Symbol` and `BigInt`. Thus, they provide different sets of methods.
55-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
5652

5753
Par exemple, il existe une méthode de string [str.toUpperCase()](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/toUpperCase) qui renvoie une chaîne de caractères `str` en majuscule.
5854

1-js/06-advanced-functions/01-recursion/05-output-single-linked-list-reverse/solution.md

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,7 @@ printReverseList(list);
3333

3434
# En utilisant une boucle
3535

36-
<<<<<<< HEAD
3736
La variante de boucle est aussi un peu plus compliquée que la sortie directe.
38-
=======
39-
The loop variant is also a little bit more complicated than the direct output.
40-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
4137

4238
Il n'y a aucun moyen d'obtenir la dernière valeur de notre `list`. Nous ne pouvons pas non plus "revenir en arrière".
4339

1-js/11-async/03-promise-chaining/article.md

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -34,29 +34,17 @@ new Promise(function(resolve, reject) {
3434

3535
L'idée est que le résultat est transmis à travers la chaîne de gestionnaires `.then`.
3636

37-
<<<<<<< HEAD
38-
Ici, le flux est:
37+
Ici, le flux est :
3938
1. La promesse initiale est résolue en 1 seconde `(*)`,
40-
2. Ensuite, le gestionnaire `.then` est appelé `(**)`.
41-
3. La valeur qu'elle renvoie est transmise au prochain gestionnaire `.then` `(***)`
39+
2. Ensuite, le gestionnaire `.then` est appelé `(**)`, qui à son tour crée une nouvelle promesse (résolue avec la valeur `2`).
40+
3. Le `then` suivant `(***)` obtient le résultat du précédent, le traite (double) et passe le gestionnaire suivant.
4241
4. ...et ainsi de suite.
43-
=======
44-
Here the flow is:
45-
1. The initial promise resolves in 1 second `(*)`,
46-
2. Then the `.then` handler is called `(**)`, which in turn creates a new promise (resolved with `2` value).
47-
3. The next `then` `(***)` gets the result of the previous one, processes it (doubles) and passes the next handler.
48-
4. ...and so on.
49-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
5042

5143
Lorsque le résultat est transmis le long de la chaîne de gestionnaires, nous pouvons voir une séquence d'appels `alert`: `1` -> `2` -> `4`.
5244

5345
![](promise-then-chain.svg)
5446

55-
<<<<<<< HEAD
56-
Le tout fonctionne, car un appel à `promise.then` renvoie une promesse, de sorte que nous puissions appeler le prochain` .then` dessus.
57-
=======
58-
The whole thing works, because every call to a `.then` returns a new promise, so that we can call the next `.then` on it.
59-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
47+
Le tout fonctionne, parce qu’un appel à `.then` renvoie une nouvelle promesse, de sorte que nous puissions appeler le prochain` .then` dessus.
6048

6149
Lorsqu'un gestionnaire renvoie une valeur, cela devient le résultat de cette promesse. Le prochain `.then` est appelé avec.
6250

2-ui/4-forms-controls/3-events-change-input/article.md

Lines changed: 17 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ Si nous voulons gérer chaque modification d'un `<input>` alors cet événement
4949
D'un autre coté, l'événement `input` ne se déclenche pas lors de la saisie au clavier et d'autres actions qui n'impliquent de changement de valeur, par ex. en appuyant sur les touches fléchées `touche:⇦` `touche:⇨` pendant la saisie.
5050

5151
```
52-
smart header="Can't prevent anything in `oninput`"
52+
smart header="Impossible d'empêcher quoi que ce soit dans `oninput`"
5353
L'événement `input` se produit après la modification de la valeur.
5454
5555
Nous ne pouvons donc pas utiliser `event.preventDefault()` - c'est trop tard, il n'y aurait aucun effet.
@@ -59,19 +59,11 @@ Nous ne pouvons donc pas utiliser `event.preventDefault()` - c'est trop tard, il
5959

6060
Ces événements se produisent lors de la coupe/copie/collage d'une valeur.
6161

62-
<<<<<<< HEAD
63-
Ils appartiennent à la classe [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) et permettent d'accéder aux données copiées/collées.
64-
=======
65-
They belong to [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) class and provide access to the data that is cut/copied/pasted.
66-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
62+
Ils appartiennent à la classe [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) et permettent d'accéder aux données coupées/copiées/collées.
6763

6864
Nous pouvons également utiliser `event.preventDefault()` pour interrompre l'action, puis rien n'est copié/collé.
6965

70-
<<<<<<< HEAD
71-
Par exemple, le code ci-dessous empêche tous ces événements et montre ce que nous essayons de couper/copier/coller:
72-
=======
73-
For instance, the code below prevents all `cut/copy/paste` events and shows the text we're trying to cut/copy/paste:
74-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
66+
Par exemple, le code ci-dessous empêche tous ces événements `cut/copy/paste` et montre ce que nous essayons de couper/copier/coller:
7567

7668
```html autorun height=40 run
7769
<input type="text" id="input">
@@ -88,54 +80,36 @@ For instance, the code below prevents all `cut/copy/paste` events and shows the
8880
</script>
8981
```
9082

91-
<<<<<<< HEAD
92-
Veuillez noter qu'il est possible de copier/coller non seulement du texte, mais tout. Par exemple, nous pouvons copier un fichier dans le gestionnaire de fichiers du système d'exploitation et le coller.
83+
Remarque : à l'intérieur des gestionnaires d'événements `cut` et `copy`, un appel à `event.clipboardData.getData(...)` renvoie une chaîne vide. C'est parce que techniquement, les données ne sont pas encore dans le presse-papiers. Si nous utilisons `event.preventDefault()`, il ne sera pas du tout copié.
9384

94-
C'est parce que `clipboardData` implémente l'interface `DataTransfer`, couramment utilisée pour glisser-déposer et copier/coller. C'est un peu au-delà de notre portée maintenant, mais vous pouvez trouver ses méthodes [dans la specification](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
85+
Ainsi, l'exemple ci-dessus utilise `document.getSelection()` pour obtenir le texte sélectionné. Vous pouvez trouver plus de détails sur la sélection de documents dans l'article <info:selection-range>.
9586

96-
```warn header="ClipboardAPI: restrictions de sécurité des utilisateurs"
97-
Le presse-papiers est une chose "globale" au niveau du système d'exploitation. Ainsi, la plupart des navigateurs autorisent l'accès en lecture/écriture au presse-papiers uniquement dans le cadre de certaines actions de l'utilisateur pour la sécurité, par ex. dans les gestionnaires d'événements `onclick`.
87+
Il est possible de copier/coller pas seulement du texte, mais tout. Par exemple, nous pouvons copier un fichier dans le gestionnaire de fichiers du système d'exploitation et le coller.
9888

99-
Il est également interdit de générer des événements de presse-papiers "personnalisés" avec `dispatchEvent` dans tous les navigateurs sauf Firefox.
100-
```
101-
=======
102-
Please note: inside `cut` and `copy` event handlers a call to `event.clipboardData.getData(...)` returns an empty string. That's because technically the data isn't in the clipboard yet. If we use `event.preventDefault()` it won't be copied at all.
103-
104-
So the example above uses `document.getSelection()` to get the selected text. You can find more details about document selection in the article <info:selection-range>.
105-
106-
It's possible to copy/paste not just text, but everything. For instance, we can copy a file in the OS file manager, and paste it.
107-
108-
That's because `clipboardData` implements `DataTransfer` interface, commonly used for drag'n'drop and copy/pasting. It's bit beyond our scope now, but you can find its methods in the [DataTransfer specification](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
89+
C'est parce que `clipboardData` implémente l'interface `DataTransfer`, couramment utilisée pour le glisser-déposer et le copier/coller. C'est un peu hors de notre portée maintenant, mais vous pouvez trouver ses méthodes dans la [spécification DataTransfer](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
10990

110-
Also, there's an additional asynchronous API of accessing the clipboard: `navigator.clipboard`. More about it in the specification [Clipboard API and events](https://www.w3.org/TR/clipboard-apis/), [not supported by Firefox](https://caniuse.com/async-clipboard).
91+
En outre, il existe une API asynchrone supplémentaire pour accéder au presse-papiers : `navigator.clipboard`. Plus d'informations à ce sujet dans la spécification [Clipboard API and events](https://www.w3.org/TR/clipboard-apis/), [non pris en charge par Firefox](https://caniuse.com/async-clipboard).
11192

112-
### Safety restrictions
93+
### Restrictions de sécurité
11394

114-
The clipboard is a "global" OS-level thing. A user may switch between various applications, copy/paste different things, and a browser page shouldn't see all that.
95+
Le presse-papiers est une chose "globale" au niveau du système d'exploitation. Un utilisateur peut basculer entre différentes applications, copier/coller différentes choses, et une page de navigateur ne devrait pas voir tout cela.
11596

116-
So most browsers allow seamless read/write access to the clipboard only in the scope of certain user actions, such as copying/pasting etc.
97+
Ainsi, la plupart des navigateurs permettent un accès en lecture/écriture transparent au presse-papiers uniquement dans le cadre de certaines actions de l'utilisateur, telles que le copier/coller, etc.
11798

118-
It's forbidden to generate "custom" clipboard events with `dispatchEvent` in all browsers except Firefox. And even if we manage to dispatch such event, the specification clearly states that such "syntetic" events must not provide access to the clipboard.
99+
Il est interdit de générer des événements de presse-papiers "personnalisés" avec `dispatchEvent` dans tous les navigateurs sauf Firefox. Et même si nous parvenons à envoyer un tel événement, la spécification indique clairement que de tels événements "synthétiques" ne doivent pas donner accès au presse-papiers.
119100

120-
Even if someone decides to save `event.clipboardData` in an event handler, and then access it later -- it won't work.
101+
Même si quelqu'un décide d'enregistrer `event.clipboardData` dans un gestionnaire d'événements, puis d'y accéder plus tard, cela ne fonctionnera pas.
121102

122-
To reiterate, [event.clipboardData](https://www.w3.org/TR/clipboard-apis/#clipboardevent-clipboarddata) works solely in the context of user-initiated event handlers.
103+
Pour réitérer, [event.clipboardData](https://www.w3.org/TR/clipboard-apis/#clipboardevent-clipboarddata) fonctionne uniquement dans le contexte des gestionnaires d'événements initiés par l'utilisateur.
123104

124-
On the other hand, [navigator.clipboard](https://www.w3.org/TR/clipboard-apis/#h-navigator-clipboard) is the more recent API, meant for use in any context. It asks for user permission, if needed. Not supported in Firefox.
125-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
105+
D'autre part, [navigator.clipboard](https://www.w3.org/TR/clipboard-apis/#h-navigator-clipboard) est l'API la plus récente, destinée à être utilisée dans n'importe quel contexte. Il demande l'autorisation de l'utilisateur, si nécessaire. Non pris en charge dans Firefox.
126106

127107
## Récapitulatif
128108

129109
Événements de changement de données:
130110

131111
| Événement | Description | Specials |
132112
|---------|----------|-------------|
133-
<<<<<<< HEAD
134-
| `change`| Une valeur a été modifiée | Se déclenche à la perte du focus pour les champs textes. |
113+
| `change`| Une valeur a été modifiée | Pour les entrées de texte, les déclencheurs sont sur la perte de mise au point. |
135114
| `input` | Pour les champs textes à chaque modification. | Se déclenche immédiatement contrairement à `change`. |
136-
| `cut/copy/paste` | Les actions couper/copier/coller. | L'action peut être empêchée. La propiété `event.clipboardData` donne un accès en lecture/écriture au presse-papiers. |
137-
=======
138-
| `change`| A value was changed. | For text inputs triggers on focus loss. |
139-
| `input` | For text inputs on every change. | Triggers immediately unlike `change`. |
140-
| `cut/copy/paste` | Cut/copy/paste actions. | The action can be prevented. The `event.clipboardData` property gives access to the clipboard. All browsers except Firefox also support `navigator.clipboard`. |
141-
>>>>>>> eda333d423db8ade41f75d2e2d30ea06c7d997ef
115+
| `cut/copy/paste` | Les actions couper/copier/coller. | L'action peut être empêchée. La propiété `event.clipboardData` donne un accès en lecture/écriture au presse-papiers. Tous les navigateurs, à l'exception de Firefox, prennent également en charge `navigator.clipboard`. |

0 commit comments

Comments
 (0)