You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 1-js/01-getting-started/1-intro/article.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,11 +24,11 @@ El navegador tiene un motor embebido a veces llamado una "Máquina virtual de Ja
24
24
25
25
Diferentes motores tienen diferentes "nombres en clave". Por ejemplo:
26
26
27
-
-[V8](https://es.wikipedia.org/wiki/Chrome_V8) -- en Chrome y Opera.
27
+
-[V8](https://es.wikipedia.org/wiki/Chrome_V8) -- en Chrome, Opera y Edge.
28
28
-[SpiderMonkey](https://es.wikipedia.org/wiki/SpiderMonkey) -- en Firefox.
29
29
- ...Existen otros nombres en clave como "Chakra" para IE , "JavaScriptCore", "Nitro" y "SquirrelFish" para Safari, etc.
30
30
31
-
Los términos anteriores es bueno recordarlos porque son usados en artículos para desarrolladores en internet. También los usaremos. Por ejemplo, si "la característica X es soportada por V8", entonces probablemente funciona en Chrome y Opera.
31
+
Es bueno recordar estos términos porque son usados en artículos para desarrolladores en internet. También los usaremos. Por ejemplo, si "la característica X es soportada por V8", entonces probablemente funciona en Chrome, Opera y Edge.
- Mayor/menor o igual que: <code>a >= b</code>, <code>a <= b</code>.
9
-
- Igual: `a == b` (ten en cuenta el doble signo `==`. Un solo símbolo `a = b` significaría una asignación).
9
+
- Igual: `a == b` (ten en cuenta que el doble signo `==` significa comparación, mientras que un solo símbolo `a = b` significaría una asignación).
10
10
- Distinto. En matemáticas la notación es <code>≠</code>, pero en JavaScript se escribe como una asignación con un signo de exclamación delante: <code>a != b</code>.
11
11
12
12
En este artículo, aprenderemos más sobre los diferentes tipos de comparaciones y de cómo las realiza JavaScript, incluidas las peculiaridades importantes.
Copy file name to clipboardExpand all lines: 1-js/02-first-steps/11-logical-operators/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -123,7 +123,7 @@ Otra característica de OR || operador es la evaluación de "el camino más cort
123
123
124
124
Esto significa que `||` procesa sus argumentos hasta que se alcanza el primer valor verdadero, y luego el valor se devuelve inmediatamente, sin siquiera tocar el otro argumento.
125
125
126
-
La importancia de esta característica se vuelve obvia si un operando no es solo un valor, sino una expresión con un efecto secundario, como una asignación de variable o una llamada a función.
126
+
La importancia de esta característica se vuelve obvia si un operando no es solo un valor, sino una expresión con un efecto secundario, como una asignación de variable o una llamada a función.
127
127
128
128
En el siguiente ejemplo, solo se imprime el segundo mensaje:
Copy file name to clipboardExpand all lines: 1-js/03-code-quality/02-coding-style/article.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -301,9 +301,9 @@ Lo mejor de ellos es que la comprobación de estilo también puede encontrar alg
301
301
302
302
Aquí hay algunas herramientas de linting conocidas:
303
303
304
-
- [JSLint](http://www.jslint.com/) -- uno de los primeros linters.
305
-
- [JSHint](http://www.jshint.com/) -- mas ajustes que JSLint.
306
-
- [ESLint](http://eslint.org/) -- probablemente el mas reciente.
304
+
- [JSLint](https://www.jslint.com/) -- uno de los primeros linters.
305
+
- [JSHint](https://www.jshint.com/) -- más ajustes que JSLint.
306
+
- [ESLint](https://eslint.org/) -- probablemente el más reciente.
307
307
308
308
Todos ellos pueden hacer el trabajo. El autor usa [ESLint](http://eslint.org/).
309
309
@@ -335,7 +335,7 @@ Aquí un ejemplo de un archivo `.eslintrc`:
335
335
336
336
Aquí la directiva `"extends"` denota que la configuración se basa en el conjunto de configuraciones "eslint: recomendado". Después de eso, especificamos el nuestro.
337
337
338
-
También es posible descargar conjuntos de reglas de estilo de la web y extenderlos en su lugar. Consulte <http://eslint.org/docs/user-guide/getting-started> para obtener más detalles sobre la instalación.
338
+
También es posible descargar conjuntos de reglas de estilo de la web y extenderlos. Consulte <https://eslint.org/docs/user-guide/getting-started> para obtener más detalles sobre la instalación.
339
339
340
340
También algunos IDE tienen linting incorporado, lo cual es conveniente pero no tan personalizable como ESLint.
Copy file name to clipboardExpand all lines: 1-js/05-data-types/01-primitives-methods/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -48,7 +48,7 @@ La solución es algo enrevesada, pero aquí está:
48
48
2. El lenguaje permite el acceso a métodos y propiedades de strings, numbers, booleans y symbols.
49
49
3. Para que esto funcione, se crea una envoltura especial, un "object wrapper" (objeto envoltorio) que provee la funcionalidad extra y luego es destruido.
50
50
51
-
Los "object wrappers" son diferentes para cada primitivo y son llamados: `String`, `Number`, `Boolean`y `Symbol`. Así, proveen diferentes sets de métodos.
51
+
Los "object wrappers" son diferentes para cada primitivo y son llamados: `String`, `Number`, `Boolean`, `Symbol`y `BigInt`. Así, proveen diferentes sets de métodos.
52
52
53
53
Por ejemplo, existe un método [str.toUpperCase()](https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/String/toUpperCase) que devuelve un string en mayúsculas.
Copy file name to clipboardExpand all lines: 2-ui/4-forms-controls/3-events-change-input/article.md
+34-15Lines changed: 34 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -58,38 +58,57 @@ Por lo tanto no podemos usar `event.preventDefault()` aquí, es demasiado tarde
58
58
59
59
Estos eventos ocurren al cortar/copiar/pegar un valor.
60
60
61
-
Estos pertenecen a la clase [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) y dan acceso a los datos copiados/pegados.
61
+
Estos pertenecen a la clase [ClipboardEvent](https://www.w3.org/TR/clipboard-apis/#clipboard-event-interfaces) y dan acceso a los datos cortados/copiados/pegados.
62
62
63
-
Podemos usar `event.preventDefault()` para cancelar la acción y que nada sea copiado/pegado.
63
+
También podemos usar `event.preventDefault()` para cancelar la acción y que nada sea cortado/copiado/pegado.
64
64
65
-
El siguiente código también evita tales eventos y muestra qué es los que estamos intentando cortar/copiar/pegar:
65
+
El siguiente código también evita todo evento `cut/copy/paste` y muestra qué es los que estamos intentando cortar/copiar/pegar:
Ten en cuenta que no solo es posible copiar/pegar texto, sino cualquier cosa. Por ejemplo, podemos copiar un archivo en el gestor de archivos del SO y pegarlo.
82
+
Nota que dentro de los manejadores `cut` y `copy`, llamar a `event.clipboardData.getData(...)` devuelve un string vacío. Esto es porque el dato no está en el portapapeles aún. Y si usamos `event.preventDefault()` no será copiado en absoluto.
78
83
79
-
Esto es porque `clipboardData` implementa la interfaz `DataTransfer`, usada comúnmente para "arrastrar y soltar" y "copiar y pegar". Ahora esto está fuera de nuestro objetivo, pero puedes encontrar sus métodos [en la especificación](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
84
+
Por ello el ejemplo arriba usa `document.getSelection()`para obtener el texto seleccionado. Puedes encontrar más detalles acerca de selección en el artículo <info:selection-range>.
80
85
81
-
```warn header="ClipboardAPI: restricciones para seguridad del usuario"
82
-
El portapapeles es algo a nivel "global" del SO. Por cuestiones de seguridad, la mayoría de los navegadores dan acceso al portapapeles solamente bajo determinadas acciones del usuario, por ejemplo al manejar eventos `onclick`.
86
+
No solo es posible copiar/pegar texto, sino cualquier cosa. Por ejemplo, podemos copiar un archivo en el gestor de archivos del SO y pegarlo.
83
87
84
-
Además está prohibido generar eventos "personalizados" del portapapeles con `dispatchEvent` en todos los navegadores excepto Firefox.
85
-
```
88
+
Esto es porque `clipboardData` implementa la interfaz `DataTransfer`, usada comúnmente para "arrastrar y soltar" y "copiar y pegar". Ahora esto está fuera de nuestro objetivo, pero puedes encontrar sus métodos [en la especificación DataTransfer](https://html.spec.whatwg.org/multipage/dnd.html#the-datatransfer-interface).
89
+
90
+
Hay además una API asincrónica adicional para acceso al portapapeles: `navigator.clipboard`. Más en la especificación [Clipboard API and events](https://www.w3.org/TR/clipboard-apis/), [no soportado en Firefox](https://caniuse.com/async-clipboard).
91
+
92
+
### Restricciones de seguridad
93
+
94
+
El portapapeles es algo a nivel "global" del SO. Un usuario puede alternar entre ventanas, copiar y pegar diferentes cosas, y el navegador no debería ver todo eso.
95
+
96
+
Por ello la mayoría de los navegadores dan acceso al portapapeles únicamente bajo determinadas acciones del usuario, como copiar y pegar.
97
+
98
+
Está prohibido generar eventos "personalizados" del portapapeles con `dispatchEvent` en todos los navegadores excepto Firefox. Incluso si logramos enviar tal evento, la especificación establece que tal evento "sintético" no debe brindar acceso al portapapeles.
99
+
100
+
Incluso si alguien decide guardar `event.clipboardData` en un manejador de evento para accederlo luego, esto no funcionará.
101
+
102
+
Para reiterar, [event.clipboardData](https://www.w3.org/TR/clipboard-apis/#clipboardevent-clipboarddata) funciona únicamente en el contexto de manejadores de eventos iniciados por el usuario.
103
+
104
+
Por otro lado, [navigator.clipboard](https://www.w3.org/TR/clipboard-apis/#h-navigator-clipboard) es una API más reciente, pensada para el uso en cualquier contexto. Esta pide autorización al usuario cuando la necesita. No soportada en Firefox.
86
105
87
106
## Resumen
88
107
89
108
Eventos de modificación de datos:
90
109
91
110
| Evento | Descripción | Especiales |
92
111
|---------|----------|-------------|
93
-
|`change`| Un valor fue cambiado. |Para ingreso de texto, ocurre al perderse el enfoque|
94
-
|`input`|Para entrada de texto en cada cambio | Ocurre inmediatamente a diferencia de `change`. |
95
-
|`cut/copy/paste`| Acciones cortar/copiar/pegar | La acción puede ser cancelada. La propiedad `event.clipboardData` brinda acceso a leer/escribir del portapeles. |
112
+
|`change`| Un valor fue cambiado. |En ingreso de texto, se dispara cuando el elemento pierde el foco|
113
+
|`input`|Cada cambio de entrada de texto | Se dispara de inmediato con cada cambio, a diferencia de `change`. |
114
+
|`cut/copy/paste`| Acciones cortar/copiar/pegar | La acción puede ser cancelada. La propiedad `event.clipboardData` brinda acceso al portapeles. Todos los navegadores excepto Firefox también soportan `navigator.clipboard`. |
Copy file name to clipboardExpand all lines: 4-binary/02-text-decoder/article.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
¿Qué pasa si los datos binarios son en realidad un string? Por ejemplo, recibimos un archivo con datos textuales.
4
4
5
-
El objeto incorporado [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) nos permite leer el texto de un conjunto de datos binarios y convertirlo en un dato de tipo string de JavaScript, dados el búfer y la codificación.
5
+
El objeto incorporado [TextDecoder](https://encoding.spec.whatwg.org/#interface-textdecoder) nos permite leer el valor y convertirlo en un string de JavaScript, dados el búfer y la codificación.
0 commit comments