@@ -316,4 +316,148 @@ considera que las declaraciones ((doctype)) y `charset` están ahí
316316implicitamente en los ejemplos, incluso cuando no se muestran en el
317317texto.
318318
319+ {{id script_tag}}
319320
321+ ## HTML y JavaScript
322+
323+ {{index [ JavaScript, "in HTML"] , "script (HTML tag)"}}
324+
325+ En el contexto de este libro, la etiqueta HTML más importante es
326+ ` <script> ` . Esta etiqueta nos permite incluir un fragmento de JavaScript
327+ en un documento.
328+
329+ ``` {lang: "text/html"}
330+ <h1>Testing alert</h1>
331+ <script>alert("hello!");</script>
332+ ```
333+
334+ {{index "alert function", timeline}}
335+
336+ Ese comando será ejecutado tan pronto como su etiqueta ` <script> ` es
337+ encontrada mientras el navegador lee el HTML. Esta página mostrará un
338+ diálogo en cuanto sea abierta, la función ` alert ` se parece a ` prompt `
339+ en que muestra una pequeña ventana, pero sólo muestra un mensaje sin
340+ esperar datos de entrada.
341+
342+ {{index "src attribute"}}
343+
344+ Incluir grandes programas directamente en un documento HTML
345+ es muchas veces impráctico. A la etiqueta ` <script> ` se le puede proveer
346+ un atributo ` src ` para obtener un archivo de script (un archivo de texto
347+ que contiene un fragmento de códido JavaScript) de una URL.
348+
349+ ``` {lang: "text/html"}
350+ <h1>Testing alert</h1>
351+ <script src="code/hello.js"></script>
352+ ```
353+
354+ El archivo _ code/hello.js_ incluido aquí contiene el mismo programa,
355+ ` alert("hello!") ` . Cuando una página HTML hace referencia a otras URLs como
356+ parte de si misma, por ejemplo, un archivo de imagen o un script, los navegadores
357+ los recuperarán inmediatamente y los incluirán en la página.
358+
359+ {{index "script (HTML tag)", "closing tag"}}
360+
361+ Una etiqueta de script siempre debe cerrarse con ` </script> ` , incluso si se
362+ refiere a un archivo de script y no contiene código en su interior. Si olvidas
363+ cerrarla, el resto de la página será interpretada como parte del script.
364+
365+ {{index "relative path", dependency}}
366+
367+ Puedes cargar ((módulos ES)) (ver [ Chapter ?] ( modules#es ) ) en el navegador
368+ si le provees a tu etiqueta script un atributo ` type="module" ` . Esos módulos
369+ pueden depender de otros módulos usando ((URL))s relativas a si mismos como
370+ nombres de módulos en declaraciones ` import ` .
371+
372+ {{index "button (HTML tag)", "onclick attribute"}}
373+
374+ Algunos atributos también pueden contener un programa JavaScript. La etiqueta
375+ ` <button> ` mostrada a continuación (que muestra un botón) tiene un atributo
376+ ` onclick ` . El valor del atributo será ejecutado siempre que el botón sea presionado.
377+
378+ ``` {lang: "text/html"}
379+ <button onclick="alert('Boom!');">NO PRESIONAR</button>
380+ ```
381+
382+ {{index "single-quote character", [ escaping, "in HTML"] }}
383+
384+ Nota que tuve que usar comillas simples para la cadena en el atributo ` onclick `
385+ porque las comillas dobles ya están siendo utilizadas para encerrar el atributo
386+ completo. También pude haber usado ` " ` .
387+
388+ ## En la caja de arena
389+
390+ {{index "malicious script", "World Wide Web", browser, website, security}}
391+
392+ Ejecutar programas descargados de ((Internet)) es pontencialmente peligroso.
393+ No conoces mucho de las personas detrás de la mayoría de los sitios que visitas,
394+ y no necesariamente quieren hacer el bien. Ejecutar programas de gente que no
395+ quiere hacer el bien es como tu computadora se infecta de ((virus)), te roban
396+ la información y compromenten tus cuentas.
397+
398+ Aunque la atracción de la Web es que puedes navegar sin necesariamente ((confiar))
399+ en todas las páginas que visitas. Ésa es la razón por la cual los navegadores
400+ limitan en gran medida las cosas que un programa JavaScript puede hacer: no puede
401+ revisar los archivos en tu computadora o modificar nada relacionado a la página web
402+ en la que se inscrustó.
403+
404+ {{index isolation}}
405+
406+ Aislar un entorno de programación en ésta forma es llamado _ ((sandbox))ing_ ,
407+ la idea es que el programa pueda ejecutarse sin daños en una caja de arena.
408+ Pero deberías imaginar que este tipo particular de caja de arena es como tener
409+ los programas detrás de barras de acero y que no pueden salir.
410+
411+ la parte complicada del sandboxing es permitirle al programa suficientes permisos
412+ para ser útil y a la vez restringirlo de hacer cualquier cosa peligrosa. Mucha
413+ funcionalidad, como comunicarse con otros servidores o leer el contenido del
414+ portapapeles puede ser problematico, son cosas que invaden la ((privacidad)).
415+
416+ {{index leak, exploit, security}}
417+
418+ De vez en cuando, alguien tiene una nueva forma de evitar las limitaciones de un
419+ ((navegador)) y hacer cosas dañinas, desde exponer información privada sin importancia
420+ hasta tomar el control de toda la máquina sobre la que corre el navegador. Los
421+ desarrolladores del navegador responden arreglando ese problema, y todo está bien
422+ nuevamente, hasta que el próximo problema es descubierto, y tal vez se haga
423+ público, en lugar de ser explotado de forma secreta por una agencia del gobierno
424+ o ((mafia)).
425+
426+ ## Compatibilidad y la guerra de los navegadores
427+
428+ {{index Microsoft, "World Wide Web"}}
429+
430+ En las etapas tempranas de la Web, un navegador llamado ((Mosaic)) dominó el mercado.
431+ Después de unos cuantos años, la balanza se inclinó hacia ((Netscape)), el cual fue
432+ suplantado después por el browser de Microsoft ((Internet Explorer)). En cualquier punto
433+ en el que un único ((navegador)) fuera dominante, el fabricante de ese navegador se
434+ sentía con derecho de inventar nuevas caracteristicas unilateralmente para la Web.
435+ Ya que la mayoria de los usuarios usaban el navegador más popular, los ((sitios web))
436+ simplemente empezarían a usar esas caracteristicas sin importarles los otros navegadores.
437+
438+ Ésta fue la edad oscura de la ((compatibilidad)), algunas veces llamada
439+ _ ((guerra de navegadores))_ . Los desarrolladores Web tenían que lidiar con
440+ dos o tres plataformas incompatibles. Para hacer las cosas peor, los navegadores
441+ usados alrededor del 2003 estaban llenos de ((defectos)), y por supuesto,
442+ los defectos eran distintos para cada ((navegador)). La vida era dura para los
443+ que escribian páginas Web.
444+
445+ {{index Apple, "Internet Explorer", Mozilla}}
446+
447+ Mozilla ((Firefox)), una derivación sin fines de lucro de ((Netscape)), retó
448+ la posición de Internet Explorer a finales de los 2000. Ya que ((Microsoft))
449+ no estaba interesado en mantenerse competitivo en ese momento, Firefox tomó
450+ una gran parte del mercado de Internet Explorer. Más o menos al mismo tiempo,
451+ ((Google)) introdujo su navegador ((Chrome)), el navegador ((Safari)) de Apple
452+ también ganó popularidad, llevando a una situación en la que existieron cuatro
453+ grandes competidores, en lugar de uno.
454+
455+ {{index compatibility}}
456+
457+ Los nuevos competidores tuvieron una actitud más seria hacia los ((estándar))es y
458+ mejores prácticas de ((ingeniería)), dándonos menos incompatibilidad y menos
459+ defectos. Microsoft, al vez que su parte del mercado caerse, le dio la vuelta y
460+ adoptó esas actitudes en su navegador Edge, el cual reemplaza a Internet Explorer.
461+ Si tú estás empezando a aprender desarrollo web, considérate afortunado. Las
462+ últimas versiones de los navegadores se comportan uniformemente bien y tienen
463+ relativamente menos defectos.
0 commit comments