diff options
author | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:41:45 -0500 |
---|---|---|
committer | Peter Bengtsson <mail@peterbe.com> | 2020-12-08 14:41:45 -0500 |
commit | 1109132f09d75da9a28b649c7677bb6ce07c40c0 (patch) | |
tree | 0dd8b084480983cf9f9680e8aedb92782a921b13 /files/es/mozilla/firefox | |
parent | 4b1a9203c547c019fc5398082ae19a3f3d4c3efe (diff) | |
download | translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.tar.gz translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.tar.bz2 translated-content-1109132f09d75da9a28b649c7677bb6ce07c40c0.zip |
initial commit
Diffstat (limited to 'files/es/mozilla/firefox')
34 files changed, 4628 insertions, 0 deletions
diff --git a/files/es/mozilla/firefox/compilar_firefox_con_codigo_en_rust/index.html b/files/es/mozilla/firefox/compilar_firefox_con_codigo_en_rust/index.html new file mode 100644 index 0000000000..76ea78e7b0 --- /dev/null +++ b/files/es/mozilla/firefox/compilar_firefox_con_codigo_en_rust/index.html @@ -0,0 +1,37 @@ +--- +title: Compilar Firefox con código en Rust +slug: Mozilla/Firefox/Compilar_Firefox_con_codigo_en_Rust +tags: + - Compilación + - Gecko + - rust +translation_of: Archive/Mozilla/Firefox/Building_Firefox_with_Rust_code +--- +<div>{{FirefoxSidebar}}</div><p>En mayo de 2015, <a href="https://www.rust-lang.org/">el lenguaje de programación Rust</a> alcanzó su objetivo de estabilidad 1.0 y se comenzaron diversos experimentos que consistieron en escribir partes de Gecko en Rust. Esta página contiene una guía de orientación aproximada para las personas que trabajan en esta área.</p> + +<p>Consulte el <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1135640">informe n.º 1135640</a> (<em>oxidation</em>) para ver el seguimiento integral de la integración de componentes en el lenguaje Rust.</p> + +<h2 id="Activación_del_código_en_Rust">Activación del código en Rust</h2> + +<p>Con el trabajo realizado en el <a class="bz_bug_link + bz_status_RESOLVED bz_closed" href="https://bugzilla.mozilla.org/show_bug.cgi?id=1161339" title="RESOLVED FIXED - Support rust files in moz.build SOURCES">informe n.º 1161339</a> se implementó compatibilidad básica para compilar código en Rust. Esta compatibilidad está activada para las compilaciones oficiales de la mayoría de las plataformas, con la excepción de las compilaciones que realice localmente. Si en su «path» tiene «rustc», puede añadir:</p> + +<pre>ac_add_options --enable-rust</pre> + +<p>… a su archivo <a href="/en-US/docs/Configuring_Build_Options">mozconfig</a> y la compilación probablemente funcionará. Normalmente apuntamos a versiones estables de Rust pero, en ocasiones, para admitir algunas plataformas nuevas se necesitan versiones especiales de las herramientas de compilación. Si aún no tiene Rust, utilice la herramienta «<a href="https://www.rustup.rs/">rustup</a>» para instalarlo.</p> + +<h2 id="Poner_a_prueba_el_código_en_Rust">Poner a prueba el código en Rust</h2> + +<p>En el árbol hay una sencilla prueba unitaria de vinculación. Es posible utilizarla para comprobar que Rust esté activado y funcione correctamente con su configuración de compilaciones.</p> + +<pre>./mach gtest rust.*</pre> + +<p>Revise que la prueba <strong>rust.CallFromCpp</strong> se supere, junto con cualquier otra que haya.</p> + +<h2 id="Adición_de_código_en_Rust">Adición de código en Rust</h2> + +<p>Para agregar código nuevo en Rust se requiere añadir el archivo .rs de nivel superior para agruparlo en un cajón (<em>crate</em>) de SOURCES en moz.build.</p> + +<p>Debido a límites de Cargo y al sistema de compilaciones de Firefox, por el momento solo admitimos cajones sencillos, sin dependencias. No empleamos Cargo, sino que creamos un archivo rlib a partir de todos los archivos rust enumerados en SOURCES. El compilador de Rust buscará los módulos internos según los nombres de archivo de código fuente, pero las referencias de <code>extern crate</code> no se resolverán.</p> + +<p>El sistema de compilaciones generará un cajón especial para una «biblioteca unificada de Rust», compilada como una biblioteca estática (<code>librul.a</code>) que a su vez se enlaza en <code>XUL</code>, de modo que todos sus símbolos públicos estén disponibles para el código en C++.</p> diff --git a/files/es/mozilla/firefox/edición_de_desarrollador/index.html b/files/es/mozilla/firefox/edición_de_desarrollador/index.html new file mode 100644 index 0000000000..12642f7044 --- /dev/null +++ b/files/es/mozilla/firefox/edición_de_desarrollador/index.html @@ -0,0 +1,59 @@ +--- +title: Edición de Desarrollador +slug: Mozilla/Firefox/Edición_de_Desarrollador +tags: + - Firefox + - Iniciado + - Lanzamiento +translation_of: Mozilla/Firefox/Developer_Edition +--- +<div>{{FirefoxSidebar}}</div><p style="text-align: center;"><img alt="" src="https://mdn.mozillademos.org/files/9143/firefox-dev-ed_logo-only_1024.png" style="display: block; height: 256px; margin-left: auto; margin-right: auto; width: 256px;">La versión de Firefox a la medida de los desarrolladores web. (Versión Actualizada)</p> + +<p><a href="https://download.mozilla.org/?product=firefox-aurora-latest-l10n&os=win&lang=es-ES" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox Developer Edition </a></p> + +<hr> +<div class="column-container"> +<div class="column-half"> +<h3 id="Las_últimas_funciones_de_Firefox"><strong>Las últimas funciones de Firefox</strong></h3> + +<p>Firefox Developer Edition sustituye al canal Aurora en el <a href="https://wiki.mozilla.org/Release_Management/Release_Process">Proceso de lanzamiento de versiones de Firefox</a>. En Developer Edition, como en Aurora, las caracteristicas se lanzan cada seis semanas, despues de que se hayan estabilizado en Nightly builds.</p> + +<p>Utilizando Firefox Developer Edition, tienes acceso a las herramientas y a las caracteristicas de la plataforma al menos 12 semanas antes de que lleguen a alcanzar el canal principal de lanzamiento Firefox.</p> + +<p><a href="/en-US/Firefox/Releases/35">Descubre las novedades de Firefox Developer Edition.</a><a href="https://developer.mozilla.org/en-US/Firefox/Releases/52">.</a></p> +</div> + +<div class="column-half"> +<h3 id="Herramientas_de_Desarrollo_Experimentales"><strong>Herramientas de Desarrollo Experimentales</strong></h3> + +<p>Incluiremos herramientas de desarrollo que aún no están todavía del todo listas para ser lanzadas en la versión final de Firefox. Por ejemplo <a href="https://developer.mozilla.org/es/docs/Tools/Valence">Valence add-on (Adaptador de Herramientas Firefox) </a>, la cual te permite conectar las <a href="https://developer.mozilla.org/es/docs/Tools">Herramientas de Desarrollo Firefox</a> con las de otros navegadores , como Chrome en android o Safari en IOS.</p> +</div> +</div> + +<div class="column-container"> +<div class="column-half"> +<h3 id="Un_Perfil_Separado"><strong>Un Perfil Separado</strong></h3> + +<p>Firefox Developer Edition utiliza un perfil separado de las otras versiones de Firefox instaladas en tu ordenador. Esto hace que puedas intercambiar más facilmente entre las versiones ya lanzadas o las betas de Firefox.</p> +</div> + +<div class="column-half"> +<h3 id="Configuración_para_Desarrolladores_Web"><strong>Configuración para Desarrolladores Web</strong></h3> + +<p><span id="result_box" lang="es"><span>Hemos establecido valores de preferencia predeterminados adaptados a los desarrolladores web.</span> <span>Por ejemplo, {{glossary ("chrome")}} y depuración remota están habilitados de forma predeterminada.</span></span></p> +</div> +</div> + +<div class="column-container"> +<div class="column-half"> +<h3 id="Una_Apariencia_Distinta"><strong>Una Apariencia Distinta</strong></h3> + +<p>Incluidos accesos directos a las herramientas de desarrollo</p> +</div> + +<div class="note"> +<div dir="ltr" style="zoom: 1;"><span id="result_box" lang="es"><span><strong>Nota</strong>: Esto significa que la primera vez que inicie Developer Edition, verá un navegador totalmente no personalizado, sin complementos, marcadores o historial.</span> <span>Puedes <a href="https://support.mozilla.org/es/kb/como-configuro-firefox-sync?redirectlocale=en-US&redirectslug=how-do-i-set-up-firefox-sync">utilizar Firefox Sync</a> si quieres unificar tu configuración entre Developer Edition y otras ediciones de Firefox.</span></span></div> +</div> +</div> + +<p> </p> diff --git a/files/es/mozilla/firefox/edición_de_desarrollador/revertir/index.html b/files/es/mozilla/firefox/edición_de_desarrollador/revertir/index.html new file mode 100644 index 0000000000..a4df9a3ba6 --- /dev/null +++ b/files/es/mozilla/firefox/edición_de_desarrollador/revertir/index.html @@ -0,0 +1,25 @@ +--- +title: Revertir +slug: Mozilla/Firefox/Edición_de_Desarrollador/Revertir +translation_of: Mozilla/Firefox/Developer_Edition/Reverting +--- +<div>{{FirefoxSidebar}}</div><h2 id="Revertir_el_tema_Firefox_Developer_Edition">Revertir el tema Firefox Developer Edition</h2> + +<p><br> + Si quieres usar Firefox Developer Edition, pero prefieres el tema 'Australis' usado en Firefox y Firefox Beta, puedes cambiarlo: simplemente abre el panel "Personalizar" y haz clic en el botón "Usar el tema Firefox Developer Edition".</p> + +<p>{{EmbedYouTube("OvJwofTjsNg")}}</p> + +<p>Ten en cuenta que el tema Firefox Developer Edition no es aún compatible con temas ligeros. Si quieres usar un tema ligero, tendrás que volver al tema 'Australis'.</p> + +<h2 id="Revertir_a_Firefox_Aurora">Revertir a Firefox Aurora</h2> + +<p><br> + Si quieres disfrutar de todas las características pre-Beta de Firefox Developer Edition, descartando el resto de cambios, puedes revertir el navegador a algo parecido al viejo Firefox Aurora. Esto también restaurará tu perfil y datos de sesión previos a la actualización. Es un proceso de dos pasos, que debes de seguir en este orden:</p> + +<ol> + <li>Abre Preferencias y desmarca la opción "Permitir a Firefox Developer Edition y Firefox ejecutarse al mismo tiempo". Se te avisará de que es necesario reiniciar el navegador.</li> + <li>Tras reiniciar, podrás revertir la aplicación del tema Firefox Developer Edition abriendo el panel "Personalizar" y haciendo clic en el botón "Usar el tema Firefox Developer Edition".</li> +</ol> + +<p> </p> diff --git a/files/es/mozilla/firefox/experimental_features/index.html b/files/es/mozilla/firefox/experimental_features/index.html new file mode 100644 index 0000000000..56c26f6755 --- /dev/null +++ b/files/es/mozilla/firefox/experimental_features/index.html @@ -0,0 +1,724 @@ +--- +title: Funciones experimentales de Firefox +slug: Mozilla/Firefox/Experimental_features +tags: + - Experimental + - Firefox + - Preferencias + - características +translation_of: Mozilla/Firefox/Experimental_features +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Para probar nuevas características, Mozilla publica una versión de prueba del navegador Firefox, <a href="https://nightly.mozilla.org/">Firefox Nightly</a>, cada día. Características experimentales, por ejemplo implementaciones de estándares de plataforma Web, están disponibles. Esta página lista características que están en versiones Nightly de Firefox junto con información sobre cómo activarlas, si es necesario. Puedes probar tus sitios Web y aplicaciones antes de que se lancen las características y confirmar que todo seguirá funcionando con las últimas prestaciones de tecnología Web.</p> + +<p>Para probar esas características experimentales, necesitas descargar <a href="https://nightly.mozilla.org/">Firefox Nightly</a> o <a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a>.</p> + +<h2 id="HTML">HTML</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Característica</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox</th> + <th scope="col">Preferencia</th> + </tr> + <tr> + <td><strong>{{HTMLElement("dialog")}}</strong><br> + Elemento dialog incluyendo APIs de DOM para interactuar con este. La implementación de diálogos modales y accesibilidad sigue faltando.</td> + <td>Desactivado<br> + <sub>(disponible desde 53)</sub></td> + <td>Desactivado<br> + <sub>(disponible desde 53)</sub></td> + <td>---</td> + <td>---</td> + <td><code>dom.dialog_element.enabled</code></td> + </tr> + </thead> +</table> + +<h2 id="CSS">CSS</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Característica</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Subgrids</strong></td> + <td> + <p>Desactivado</p> + + <p>(reconocido pero aún no implementado)</p> + </td> + <td> + <p>Desactivado</p> + + <p>(reconocido pero aún no implementado)</p> + </td> + <td> + <p>Desactivado</p> + + <p>(reconocido pero aún no implementado)</p> + </td> + <td> + <p>Desactivado</p> + + <p>(reconocido pero aún no implementado)</p> + </td> + <td><code>layout.css.grid-template-subgrid-value.enabled</code></td> + </tr> + <tr> + <td><strong>Display stray control characters in CSS as hex boxes</strong><br> + This feature renders control characters (Unicode category Cc) other than <em>tab</em> (<code>U+0009</code>), <em>line feed</em> (<code>U+000A</code>), <em>form feed</em> (<code>U+000C</code>), and <em>carriage return</em> (<code>U+000D</code>) as a hexbox when they are not expected.</td> + <td>43</td> + <td>43</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1329613">No habilitado</a></td> + <td><code>layout.css.control-characters.enabled</code> or <code>layout.css.control-characters.visible</code></td> + </tr> + <tr> + <td><strong>Positioned CSS Masks</strong><br> + A subset of CSS Masks that includes <a href="/en-US/docs/Web/CSS/CSS_Masks">longhand properties of CSS Masks</a>, as well as a change in the shorthand property</td> + <td>51</td> + <td>51</td> + <td>53</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1251161">No habilitado</a></td> + <td>Controlled by a compile flag (MOZ_ENABLE_MASK_AS_SHORTHAND).</td> + </tr> + <tr> + <td> + <p><strong>The</strong> <strong><code>font-variation-settings</code> property</strong><br> + The {{cssxref("font-variation-settings")}} provides low-level control over OpenType or TrueType font typographic features, by specifying the four letter axis names of the features you want to vary, along with their variation values.</p> + </td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td> + <p><code>layout.css.font-variations.enabled</code><br> + Functions only in Mac OS Sierra (and later).<br> + <br> + For the downloadable fonts on axis-praxis, you also need <code>gfx.downloadable_fonts.keep_variation_tables</code> (in Firefox 54 and later)</p> + </td> + </tr> + <tr> + <td><strong>The <code>touch-action</code> CSS property</strong><br> + The {{cssxref("touch-action")}} CSS property is part of the {{SpecName("Pointer Events")}} specification and allows you to specify how and in what way the user is able to manipulate an object by touch.</td> + <td>50</td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.touch_action.enabled</code></td> + </tr> + <tr id="shape-outside"> + <td> + <p><strong>The <code>shape-outside</code> CSS property</strong><br> + The {{cssxref("shape-outside")}} CSS property is part of the {{SpecName("CSS Shapes")}} specification and allows you to specify a float area causing inline contents to wrap around a shape.</p> + + <p>Firefox currently implements the <code><shape-box></code> values ({{bug(1309467)}}) as well as the <code>circle()</code> ({{bug(1311244)}}), <code>ellipse()</code> ({{bug(1326406)}}), and <code>polygon()</code> ({{bug(1326409)}}) functions. {{cssxref("shape-outside")}} is animatable desde la versión Firefox 57 ({{bug(1289049)}}).</p> + </td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.shape-outside.enabled</code></td> + </tr> + <tr> + <td><strong>The <code>shape-image-threshold</code> CSS property</strong><br> + The {{cssxref("shape-imahge-threshold")}} CSS property is part of the {{SpecName("CSS Shapes")}} specification, and allows you to specify the alpha channel threshold used to extract the shape using an image as the value for {{cssxref("shape-outside")}}.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td><code>layout.css.shape-outside.enabled</code></td> + </tr> + <tr> + <td><strong>La propiedad <code>contain</code> de CSS</strong><br> + La propiedad de CSS {{cssxref("contain")}} es parte de la especificación {{SpecName("CSS Containment")}} y te permite indicar que un elemento y sus contenidos son independientes del resto del documento, permitiendo a {{Glossary("User agent", "user agents")}} optimizar el renderizado de una página.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 45)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 45)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 45)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 45)</sub></td> + <td><code>layout.css.contain.enabled</code></td> + </tr> + <tr id="column-span"> + <td> + <p><strong>The <code>column-span</code> CSS property</strong><br> + The {{cssxref("column-span")}} CSS property is part of the {{SpecName("CSS3 Multicol")}} specification and allows you to specify how many columns an element spans across.</p> + + <p>Firefox currently only parses the property ({{bug(1339298)}}), it's not actually implemented yet ({{bug(616436)}}).</p> + </td> + <td>No habilitado<br> + <sub>(recognized desde la versión 55, but not implemented yet)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>layout.css.column-span.enabled</code></td> + </tr> + <tr> + <td><strong>The <code>frames()</code> timing function</strong><br> + Ver <a href="https://developer.mozilla.org/en-US/docs/Web/CSS/single-transition-timing-function#The_frames()_class_of_timing-functions">The frames() class of timing-functions</a> para más detalle</td> + <td>Habilitado</td> + <td><sub>N/A</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>None</td> + </tr> + <tr> + <td><strong>The {{cssxref("::slotted")}} pseudo-element</strong><br> + Selects elements when they are inserted into a {{htmlelement("slot")}} in an HTML {{htmlelement("template")}}.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td><code>dom.webcomponents.customelements.enabled</code> and <code>dom.webcomponents.shadowdom.enabled</code></td> + </tr> + </tbody> +</table> + +<h2 id="JavaScript">JavaScript</h2> + +<p id="ECMAScript_2016">See also <a href="/en-US/docs/Web/JavaScript/New_in_JavaScript/ECMAScript_Next_support_in_Mozilla">ECMAScript Next support</a> for implemented features of ECMAScript 2016 and later, that are not experimental and thus available without preferences in Firefox Release.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Feature</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Additions to the <code>ArrayBuffer</code> object</strong><br> + Adds the {{jsxref("ArrayBuffer.transfer()")}} that returns a new <code>ArrayBuffer</code> whose contents have been taken from the <code>oldBuffer</code>'s data (<a href="https://gist.github.com/lukewagner/2735af7eea411e18cf20">spec</a>).</td> + <td>36</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>None</td> + </tr> + <tr> + <td><strong>TypedObject objects</strong> (<a href="https://github.com/dslomov-chromium/typed-objects-es7">spec</a>)</td> + <td>Habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>None</td> + </tr> + <tr> + <td><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/SIMD">SIMD</a> (<a href="https://github.com/johnmccutchan/ecmascript_simd">specification and polyfill</a>)</td> + <td>Habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>None</td> + </tr> + <tr> + <td><strong>ECMAScript modules</strong><br> + Allows you to use native ECMAScript modules, for example defining modules with <code><script type="module"></code>, defining fallback scripts with <code><script nomodule></code>, and <a href="/en-US/docs/Web/JavaScript/Reference/Statements/import">importing</a> code features that have been <a href="/en-US/docs/Web/JavaScript/Reference/Statements/export">exported</a> from modules.</td> + <td>59</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>dom.moduleScripts.enabled</code></td> + </tr> + <tr> + <td>{{jsxref("Array.prototype.flatten()")}} and {{jsxref("Array.prototype.flatMap()")}}</td> + <td>Habilitado (59)</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>None</td> + </tr> + </tbody> +</table> + +<h2 id="APIs">APIs</h2> + +<h3 id="Canvas_WebGL">Canvas & WebGL</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Feature</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong><code>WEBGL_debug_renderer_info</code> extension</strong><br> + The {{domxref("WEBGL_debug_renderer_info")}} extension allows you to transmit information useful to help debugging problems to the server.</td> + <td>42</td> + <td>42</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=742798">No habilitado</a></td> + <td><code>webgl.enable-debug-renderer-info</code></td> + </tr> + <tr> + <td><strong>OffscreenCanvas</strong><br> + The {{domxref("OffscreenCanvas")}} interface provides a canvas that can be rendered off screen. It is available in both the window and <a href="/en-US/docs/Web/API/Web_Workers_API">worker</a> contexts.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 44)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 44)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 44)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 44)</sub></td> + <td><code>gfx.offscreencanvas.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Canvas_API/Tutorial/Hit_regions_and_accessibility">Hit regions</a></strong><br> + Whether the mouse coordinates are within a particular area on the canvas is a common problem to solve. The hit region API allows you define an area of your canvas and provides another possibility to expose interactive content on a canvas to accessibility tools.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 30)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 30)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 30)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 30)</sub></td> + <td><code>canvas.hitregions.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Streams_API">Streams API</a></strong><br> + Allows JavaScript to programmatically access streams of data received over the network and process them as desired by the developer.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td><code>dom.streams.enabled</code> and <code>javascript.options.streams</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/Web_Components/Using_custom_elements">Custom elements</a></strong><br> + Allows the definition and registering of custom elements that can then be used in the document.</td> + <td>Habilitado<br> + <sub>(desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 57)</sub></td> + <td><code>dom.webcomponents.enabled</code> and <code>dom.webcomponents.customelements.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/Web_Components/Using_shadow_DOM">Shadow DOM</a></strong><br> + Allows a shadow DOM to be attached to any element, inside which markup, style, and scripting can be safely encapsulated.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 58)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 58)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 58)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 58)</sub></td> + <td><code>dom.webcomponents.enabled</code> and <code>dom.webcomponents.shadowdom.enabled</code></td> + </tr> + </tbody> +</table> + +<h3 id="DOM">DOM</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Característica</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>Gamepad extensions</strong><br> + <a href="/en-US/docs/Web/API/Gamepad_API#Experimental_Gamepad_extensions">The Gamepad Extensions</a> provide access to additional functionality such as pose information in the case of WebVR controllers, and haptic actuator control (e.g. controller vibration hardware).</td> + <td>Habilitado</td> + <td>Habilitado</td> + <td>Habilitado</td> + <td>No habilitado</td> + <td><code>dom.gamepad-extensions.enabled</code></td> + </tr> + <tr> + <td><code><strong>HTMLMediaElement.seekToNextFrame()</strong></code><br> + Part of an experimentation process around support non-real-time access to media for tasks including filtering, editing, and so forth, the {{domxref("HTMLMediaElement.seekToNextFrame()")}} advances the the current play position to the next frame in the media.</td> + <td>49<br> + <sub>(Fundamental update in version 50)</sub></td> + <td>49<br> + <sub>(Fundamental update in version 50)</sub></td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>media.seekToNextFrame.enabled</code></td> + </tr> + <tr> + <td><strong><code>GeometryUtils.getBoxQuads()</code></strong> ({{bug(917755)}})</td> + <td>31</td> + <td>31</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">No habilitado</a></td> + <td><code>layout.css.getBoxQuads.enabled</code></td> + </tr> + <tr> + <td><strong><code>GeometryUtils.convertPointFromNode()</code></strong>,<br> + <strong><code>GeometryUtils.RectFromNode()</code></strong>, y<br> + <code><strong>GeometryUtils.convertQuadFromNode()</strong></code><br> + ({{bug(918189)}})</td> + <td>31</td> + <td>31</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1107559">No habilitado</a></td> + <td><code>layout.css.convertFromNode.enabled</code></td> + </tr> + <tr> + <td><strong><code>Node.rootNode</code></strong><br> + The {{domxref("Node.rootNode")}} property returns a {{domxref("Node")}} object representing the topmost node in the tree, or the current node if it's the topmost node in the tree.<br> + <em>This feature is kept experimental as its naming poses Web compatibility problems. It will be renamed in the future.</em></td> + <td>48</td> + <td>48</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1269155">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1269155">No habilitado</a></td> + <td><code>dom.node.rootNode.enabled</code></td> + </tr> + <tr> + <td><strong>WebVTT Regions API</strong><br> + <a href="/en-US/docs/Web/API/Web_Video_Text_Tracks_Format">WebVTT</a> regions are parts of the video viewport that provide a rendering area for WebVTT cues. The {{domxref("VTTRegion")}} is the interface exposing the WebVTT cues.<br> + <em>This interface is considered to be in flux and isn't therefore activated in any version by default.</em></td> + <td>No habilitado<br> + <sub>(Experimental implementation desde la versión version 30)</sub></td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>media.webvtt.regions.enabled</code></td> + </tr> + <tr> + <td><strong>Support for audio and video tracks</strong><br> + Implementa {{domxref("HTMLMediaElement.audioTracks")}} y {{domxref("HTMLMediaElement.videoTracks")}}.<br> + <em>Firefox no soporta pistas de audio o vídeo múltiples, evitando que los usos más comunes de estas propiedades funcionen correctamente. Es por ello que estas propiedades no están activadas por defecto en ninguna versión. </em></td> + <td>No habilitado<br> + <sub>(Implementación experimental desde la versión 33)</sub></td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>media.track.enabled</code></td> + </tr> + <tr> + <td><strong>Better value for <code>Event.timestamp</code></strong><br> + The property {{domxref("Event.timestamp")}} is returning a {{domxref("DOMHighResTimeStamp")}}, which is now relative to the Unix epoch.</td> + <td>32 (Windows)<br> + 43 (Linux)</td> + <td>32 (Windows)<br> + 43 (Linux)</td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1026804">No habilitado</a></td> + <td><a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1026804">No habilitado</a></td> + <td><code>media.track.enabled</code></td> + </tr> + <tr id="pointer-events"> + <td><strong>Pointer Events</strong></td> + <td>59</td> + <td>59<br> + <sub>(todavía no habilitado en Firefox para Android)</sub></td> + <td>59<br> + <sub>(todavía no habilitado en Firefox para Android)</sub></td> + <td>59<br> + <sub>(todavía no habilitado en Firefox para Android)</sub></td> + <td><code>dom.w3c_pointer_events.enabled</code></td> + </tr> + <tr> + <td><strong>Intersection Observer API</strong><br> + The {{domxref("Intersection Observer API")}} allows you to configure a callback that is called whenever one item, called a target, intersects either the device viewport or a specified element called.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 53)</sub></td> + <td>—</td> + <td>—</td> + <td>—</td> + <td><code>dom.IntersectionObserver.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Web_Animations_API">Web Animations API: KeyframeEffect and KeyframeEffectReadOnly</a></strong><br> + The {{domxref("KeyframEffectReadOnly()", "KeyframeEffectReadOnly.KeyframeEffectReadOnly()")}} and {{domxref("KeyframeEffect()", "KeyframeEffect.KeyframeEffect()")}} constructors can be used to clone existing {{domxref("KeyframeEffectReadOnly")}} object instances by being given the object to clone as their only parameter (see {{bug(1273784)}}.)</td> + <td>52</td> + <td>52</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>None</td> + </tr> + <tr> + <td><strong>{{domxref("PromiseRejectionEvent")}} and related features</strong><br> + Providing a way to monitor and more finely control the rejection of Promises.<br> + </td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>dom.promise_rejection_events.enabled</code></td> + </tr> + <tr> + <td><strong><a href="/en-US/docs/Web/API/Payment_Request_API">Payment Request API</a></strong><br> + Provides a web API for handling web-based payments.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 55)</sub></td> + <td><code>dom.payments.request.enabled</code></td> + </tr> + <tr> + <td><strong>Basic Card Payment API</strong><br> + Provides dictionaries that define data structures describing card payment types and payment responses for use in the Payment Request API. See {{domxref("BasicCardRequest")}} and {{domxref("BasicCardResponse")}}.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 56)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 56)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 56)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 56)</sub></td> + <td><code>dom.payments.request.enabled</code></td> + </tr> + <tr> + <td><strong>Window.content only available to Chrome code</strong><br> + The proprietary {{domxref("Window.content")}} property is now only available to chrome (privileged) code, and not available to the web anymore ({{bug(864845)}}).</td> + <td>Habilitado<br> + <sub>(desde la versión 57)</sub></td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td> </td> + </tr> + <tr> + <td><strong>Disabling {{domxref("Navigator.registerContentHandler()")}}</strong><br> + This API is associated with a number of issues., and in addition we are the only browser that implements it. We are intending to remove it completely in the future, but for the moment we are disabling it in non-release versions to see if we get any significant web compat reports back.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>Habilitado</td> + <td><code>dom.registerContentHandler.enabled</code></td> + </tr> + </tbody> +</table> + +<h3 id="WebRTC">WebRTC</h3> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Feature</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr> + <td><strong>TCP ICE candidates</strong><br> + ICE candidates that use TCP rather than UDP are considered during ICE negotiation.</td> + <td> + <p>No habilitado<br> + 41</p> + + <p>Habilitado<br> + 54</p> + </td> + <td>No habilitado<br> + 41</td> + <td>No habilitado<br> + 41</td> + <td>No habilitado<br> + 41</td> + <td><code>media.peerconnection.ice.tcp</code></td> + </tr> + </tbody> +</table> + +<h2 id="Developer_Tools">Developer Tools</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Feature</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + </thead> + <tbody> + <tr id="new-debugger-frontend"> + <td><strong>Debugger rewrite in HTML</strong></td> + <td>52</td> + <td>52</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>devtools.debugger.new-debugger-frontend</code></td> + </tr> + <tr id="new-console-frontend"> + <td><strong>Console rewrite in HTML</strong></td> + <td>52</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>devtools.webconsole.new-frontend-Habilitado</code></td> + </tr> + <tr id="performance-tool-options"> + <td><strong>Experimental Performance tool options</strong><br> + Enables options in the UI for JIT optimizations, memory, etc.</td> + <td>41</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>devtools.performance.ui.experimental</code></td> + </tr> + <tr id="layout-side-panel"> + <td><strong>Layout side panel</strong><br> + The Layout side panel allows to inspect and manage different CSS layout types like <a href="/en-US/docs/Web/CSS/CSS_Grid_Layout">CSS Grid Layout</a>.</td> + <td>No habilitado<br> + <sub>(disponible desde la versión 52)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 52)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 52)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 52)</sub></td> + <td><code>devtools.layoutview.enabled</code></td> + </tr> + </tbody> +</table> + +<h2 id="Security">Security</h2> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Feature</th> + <th scope="col">Firefox Nightly</th> + <th scope="col">Firefox Developer Edition</th> + <th scope="col">Firefox Beta</th> + <th scope="col">Firefox Release</th> + <th scope="col">Preference</th> + </tr> + <tr> + <td><strong>TLS 1.3</strong></td> + <td>Habilitado</td> + <td>Habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>security.tls.version.max</code> to <code>4</code></td> + </tr> + <tr> + <td><strong>Block plain text requests from Flash plugins on encrypted pages</strong><br> + A pref has been added to treat mixed OBJECT_SUBREQUESTS as active content to mitigate MitM attacks due to plugins loading "risky" content. See {{bug(1190623)}} for more details.</td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado</td> + <td><code>security.mixed_content.block_object_subrequest </code>to <code>true</code></td> + </tr> + <tr> + <td><strong>{{domxref("SecurityPolicyViolationEvent")}}, and the <code>securitypolicyviolation</code> event</strong><br> + Allows developers to programmatically respond to <a href="/en-US/docs/Web/HTTP/CSP">CSP</a> violations.</td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>Habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado</td> + <td><code>security.csp.enable_violation_events</code></td> + </tr> + <tr> + <td> + <p><strong>"Insecure connection" icon display for non-HTTPS sites</strong><br> + Firefox 59 has two new preferences, No habilitado by default, which when Habilitado cause a lock with a strike-through to appear in the address bar when a non-HTTPS site is loaded. This work is part of the preparation for moving to a completely HTTPS web, the idea being that in the near future insecure sites will be specially indicated, rather than secure sites.</p> + </td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td>No habilitado<br> + <sub>(disponible desde la versión 59)</sub></td> + <td> + <p><code>security.insecure_connection_icon.enabled</code> for non-private browsing</p> + + <p><code>security.insecure_connection_icon.pbmode.enabled</code> for private browsing</p> + </td> + </tr> + <tr> + <td> + <p><strong>{{httpheader("Origin")}} header sent for non-CORS requests</strong><br> + To mitigate CSRF attacks, the <code>Origin</code> header should be sent with non-CORS requests unless they are <code><a href="/en-US/docs/Web/HTTP/Methods/GET">GET</a></code> or <code><a href="/en-US/docs/Web/HTTP/Methods/HEAD">HEAD</a></code> ({{bug(446344)}}). We currently only send <code>Origin</code> on CORS requests.</p> + </td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td>No habilitado</td> + <td><code>network.http.sendOriginHeader</code></td> + </tr> + </thead> +</table> + +<h2 id="Consultar_también">Consultar también</h2> + +<ul> + <li><a href="/es/Firefox/Releases">Notas de desarrollo de Firefox para desarrolladores</a></li> + <li><a href="https://nightly.mozilla.org/">Firefox Nightly</a></li> + <li><a href="https://www.mozilla.org/en-US/firefox/developer/">Firefox Developer Edition</a></li> +</ul> diff --git a/files/es/mozilla/firefox/firefox_esr/index.html b/files/es/mozilla/firefox/firefox_esr/index.html new file mode 100644 index 0000000000..af8625e1c3 --- /dev/null +++ b/files/es/mozilla/firefox/firefox_esr/index.html @@ -0,0 +1,13 @@ +--- +title: Firefox ESR +slug: Mozilla/Firefox/Firefox_ESR +tags: + - Necesita revisión +translation_of: Mozilla/Firefox/Firefox_ESR +--- +<div>{{FirefoxSidebar}}</div> + +<p><em>Firefox Extended Support Release (ESR)</em> se basa en una versión oficial de Firefox para el escritorio para su uso por organizaciones que necesitan soporte extendido para implementaciones masivas. La diferencia de otros canales de lanzamiento, las ESR no se actualizan con nuevas características cada seis semanas. En su lugar, son compatibles durante alrededor de un año, actualizándose con importantes soluciones de seguridad o estabilidad. La versión actual de ESR es basa en Firefox 52 emitida el 7 de marzo de 2017. La próxima versión de ESR será el número 59.<br> + <br> + <br> + Animamos firmemente a los usuarios de Firefox ESR que se inscriban en la lista de correo del grupo <em><a href="https://www.mozilla.org/en-US/firefox/organizations/">Enterprise Working Group (EWG)</a></em>.</p> diff --git a/files/es/mozilla/firefox/index.html b/files/es/mozilla/firefox/index.html new file mode 100644 index 0000000000..50b34f27e5 --- /dev/null +++ b/files/es/mozilla/firefox/index.html @@ -0,0 +1,73 @@ +--- +title: Firefox +slug: Mozilla/Firefox +tags: + - Firefox + - Mozilla + - Página de Llegada +translation_of: Mozilla/Firefox +--- +<div>{{FirefoxSidebar}}</div> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/">Firefox</a> es el popular navegador Web de Mozilla, disponible para múltiples plataformas incluyendo Windows, OS X, y Linux en las máquinas de escritorio así como en los dispositivos móviles basados en Android e iOS. Su amplia compatibilidad, su adaptación a las más recientes tecnologías Web y poderosas herramientas de desarrollo, hacen de Firefox la elección por excelencia para desarrolladores Web y también para usuarios finales.</p> + +<p>Firefox es un proyecto de código abierto; la mayor parte del código lo aporta nuestra gran comunidad de voluntarios. Aquí aprenderás a contribuir al proyecto de Firefox y también encontrarás enlaces a información sobre la creación de complementos de Firefox, utilizando las herramientas de desarrollo de Firefox, y otros temas.</p> + +<div class="summary"> +<p>Aprende a crear complementos para <a class="external external-icon" href="https://www.mozilla.org/es-ES/firefox/new/">FireAAAfox</a>, cómo desarrollar y construir Firefox y cómo funciona Firefox desde dentro y sus subproyectos.</p> +</div> + +<ul class="card-grid"> + <li><span>Notas de la Versión para Desarrolladores</span> + + <p><a href="/es/docs/Mozilla/Firefox/Releases">Notas de la versión centrada para Desarrolladores</a>; descubre qué nuevas capacidades llegan en cada nueva versión de Firefox, tanto para sitios Web como para complementos.</p> + </li> + <li><span>Documentación del proyecto</span> + <p>Obtén información detallada sobre <a href="/es/docs/Mozilla"> el funcionamiento interno de Firefox </a> y su sistema de creación, para que puedas entender bien el código.</p> + </li> + <li><span>Guía del Desarrollador</span> + <p>Nuestra <a href="/es/docs/Developer_Guide">guía del desarrollador</a> ofrece detalles sobre cómo obtener y compilar el código fuente de Firefox, cómo entenderlo y cómo contribuir al proyecto.</p> + </li> +</ul> + +<h2 id="Firefox_channels">Firefox channels</h2> + +<p>Firefox está disponible en cinco <strong>canales</strong>.</p> + +<h3 id="Firefox_Nightly">Firefox Nightly</h3> + +<p>Cada noche, creamos Firefox a partir del más reciente código disponible en <a href="/es/docs/mozilla-central">mozilla-central</a>. Esta estructura es ideal para los desarrolladores de Firefox y para quienes quieran probar las últimas características de vanguardia mientras están aún en un desarrollo activo.</p> + +<p><a class="external external-icon" href="https://nightly.mozilla.org/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox Nightly</a></p> + +<h3 id="Firefox_Developer_Edition">Firefox Developer Edition</h3> + +<p>Esta es una versión de Firefox hecha a la medida de desarrolladores. Cada seis semanas, cogemos las características de Firefox Nightly que son lo suficientemente estables y creamos una nueva versión de Firefox Developer Edition. Además, añadimos algunas características adicionales que solo están disponibles en este canal.</p> + +<p><a href="/es/docs/Firefox/Developer_Edition">Descubre más sobre</a><a href="/es/docs/Firefox/Developer_Edition"> Firefox Developer Edition</a>.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/developer/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox Developer Edition</a></p> + +<h3 id="Firefox_Beta">Firefox Beta</h3> + +<p>Después de pasar seis semanas en Firefox Developer Edition, elegimos las características que son lo suficientemente estables y creamos una nueva versión de Firefox Beta. La estructura de Firefox Beta builds está destinada especialmente a entusiastas que quieren probar el material destinado a convertirse en la siguiente versión de Firefox.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#beta" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox Beta</a></p> + +<h3 id="Firefox">Firefox</h3> + +<p>Después de estabilizarse durante otras seis semanas en Beta, estamos listos para enviar las nuevas características a cientos de millones de usuarios en el lanzamiento de una nueva versión de Firefox.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/channel/#firefox" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox</a></p> + +<h3 id="Firefox_Versión_de_Soporte_Extendida_ESR">Firefox Versión de Soporte Extendida (ESR)</h3> + +<p><span id="result_box" lang="es"><span>Firefox ESR es la edición de soporte a largo plazo de Firefox para escritorio para uso de grandes organizaciones, como escuelas, universidades, empresas y otras personas que necesitan un soporte extendido para implementaciones masivas.</span></span></p> + +<p><a href="https://developer.mozilla.org/es/Firefox/Firefox_ESR">Descubre más sobre Firefox Versión de Soporte Extendida</a>.</p> + +<p><a class="external external-icon" href="https://www.mozilla.org/firefox/organizations/all/" style="width: 250px; display: block; margin-left: auto; margin-right: auto; padding: 10px; text-align: center; border-radius: 4px; background-color: #81BC2E; white-space: nowrap; color: white; text-shadow: 0px 1px 0px rgba(0, 0, 0, 0.25); box-shadow: 0px 1px 0px 0px rgba(0, 0, 0, 0.2), 0px -1px 0px 0px rgba(0, 0, 0, 0.3) inset;">Descarga Firefox ESR</a></p> + +<h2 id="Perfiles_Firefox">Perfiles Firefox</h2> + +<p>Si sueles utilizar varios canales de Firefox—o simplemente varias configuraciones—, deberías leer <a href="https://developer.mozilla.org/es/docs/Mozilla/Firefox/Multiple_profiles">cómo utilizar varios perfiles Firefox</a> para que puedas adaptar a tus necesidades<span id="result_box" lang="es"><span> el Administrador de Perfiles de Firefox y otras herramientas de gestión de perfiles.</span></span></p> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/index.html b/files/es/mozilla/firefox/multiprocess_firefox/index.html new file mode 100644 index 0000000000..139a345752 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/index.html @@ -0,0 +1,75 @@ +--- +title: Firefox multiproceso +slug: Mozilla/Firefox/Multiprocess_Firefox +translation_of: Mozilla/Firefox/Multiprocess_Firefox +--- +<div>{{FirefoxSidebar}}</div><p>En las versiones actuales de Firefox para escritorio, todo el navegador se ejecuta en un solo proceso del sistema operativo. Esto quiere decir que el código JavaScript que ejecuta la IU (interfaz de usuario) del navegador (también conocido como "código chrome") se ejecuta en el mismo proceso que el código de las página web (también conocido como "contenido" o "contenido web").<br> + <br> + Las versiones futuras de Firefox ejecutarán la interfaz de usuario del navegador en un proceso separado del contenido web. En la primera etapa de esta arquitectura, todas las pestañas del navegador se ejecutarán en el mismo proceso y la IU del navegador en un proceso diferent. En futuras etapas, esperamos tener más de un proceso de contenido. El proyecto de Firefox multiproceso es llamado Electrolysis, en ocasiones abreviado como e10s.</p> + +<p>Las páginas web normales no estarán afectadas por Firefox multiproceso. Quienes trabajen en Firefox en sí mismo y desarrolladores de complementos para Firefox estarán afectados si su código se basa en acceder al contenido web directamente.</p> + +<p>En lugar de acceder al contenido web directamente, el código JavaScript deberá usar el <a href="/Firefox/Multiprocess_Firefox/Message_manager">administrador de mensajes</a> para acceder al contenido. Para facilitar la transición hemos implementado <a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">contenedores de objetos de multiproceso</a> y algunas <a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#Compatibility_shims">capas de compatibilidad para complementos</a>. Si eres un desarrollador de complementos y deseas saber cómo estrás afectado, revisa la <a href="/Mozilla/Add-ons/Working_with_multiprocess_Firefox">guía para trabajar con Firefox multiproceso</a>.</p> + +<hr> +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Technical_overview">Repaso técnico</a></dt> + <dd>Una vista de alto nivel acerca de cómo se está implementando Firefox multiproceso.</dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Web_content_compatibility">Guía de compatibilidad para contenido web</a></dt> + <dd>Directrices y detalles acerca de problemas potenciales de compatiblidad en sitios web que podrían ocurrir debido a la transición. Tip: ¡No son muchos!</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Glossary">Glosario</a></dt> + <dd>Una referencia de la jerga usada en Firefox multiproceso.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Message_Manager">Administrador de mensajes</a></dt> + <dd>Una guía completa a los objetos usados para comunicarse entre el código chrome y el contenido.</dd> + <dt><a href="/en-US/Mozilla/Add-ons/SDK/Guides/Multiprocess_Firefox_and_the_SDK">Complementos basados en el SDK</a></dt> + <dd>Cómo migrar complementos creados utilizando el SDK de complementos.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Which_URIs_load_where">Dónde se carga cada URI</a></dt> + <dd>Una guía rápida a qué URIs - chrome:, about:, file:, resource: - se cargan en cada proceso.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Motivation">Motivación</a></dt> + <dd>Por qué estamos implementando Firefox multiproceso: rendimiento, seguridad y estabilidad.</dd> + <dt><a href="/Mozilla/Add-ons/Working_with_multiprocess_Firefox">Guía para la migración de complementos</a></dt> + <dd>Si eres un desarollador de complementos, entérate cómo estás afectado y cómo actualizar tu código.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">Contenedores de objetos multiproceso</a></dt> + <dd>Los contenedores de objetos multiproceso ayudan a la migración, dando al código chrome acceso síncrono al contenido.</dd> + <dt><a href="/Firefox/Multiprocess_Firefox/Debugging_frame_scripts">Depurando procesos de firefox</a></dt> + <dd>Cómo depurar código en el proceso de contenido, incluyendo scripts de marco y proceso.</dd> + <dt><a href="/docs/Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox">Selección de pestañas en Firefox multiproceso</a></dt> + <dd>Cómo funciona el cambio de pestañas en Firefox multiproceso.</dd> +</dl> +</div> +</div> + +<hr> +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts">Limitaciones de los scripts chrome</a></dt> + <dd>Prácticas que ya no funcionan en el código chrome, y cómo solucionarlas.</dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">Limitaciones de los scripts de marco</a></dt> + <dd>Prácticas que no funcionarán en los scripts de marco, y qué hacer en su lugar.</dd> +</dl> +</div> +</div> + +<hr> +<h2 id="Contáctanos">Contáctanos</h2> + +<p>Entérate más acerca del proyecto, involúcrate o pregúntanos tus dudas.</p> + +<ul> + <li><strong>Página del proyecto Electrolysis</strong>: <a href="https://wiki.mozilla.org/Electrolysis">https://wiki.mozilla.org/Electrolysis</a></li> + <li><strong>IRC</strong>: #e10s en <a href="https://wiki.mozilla.org/IRC">irc.mozilla.org</a></li> + <li><strong>Lista de correo</strong>: <a href="https://groups.google.com/forum/#!forum/mozilla.dev.tech.electrolysis">dev.tech.electrolysis</a></li> +</ul> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/message_manager/index.html b/files/es/mozilla/firefox/multiprocess_firefox/message_manager/index.html new file mode 100644 index 0000000000..5d3214a425 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/message_manager/index.html @@ -0,0 +1,74 @@ +--- +title: Message manager +slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager +tags: + - API + - Guide + - JavaScript + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager +--- +<div>{{FirefoxSidebar}}</div><p>Message managers provide a way for chrome-privileged JavaScript code to communicate across process boundaries. They are particularly useful for allowing chrome code, including the browser's code and extension's code, to access web content while the browser is running web content in a separate process.</p> + +<p>These guides explain how to use message managers in multiprocess Firefox.</p> + +<p>Note that none of this requires multiprocess Firefox: everything described here will work with single-process Firefox, so the same code will work on both variants.</p> + +<hr> +<h2 id="Guides">Guides</h2> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview">Message manager overview</a></dt> + <dd> </dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_loading_and_lifetime">Frame script loading and lifetime</a></dt> + <dd> </dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Communicating_with_frame_scripts">Communicating with frame scripts</a></dt> + <dd> </dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Performance">Performance Best Practices</a></dt> + <dd> </dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Frame_script_environment">Frame script environment</a></dt> + <dd> </dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/_Limitations_of_frame_scripts">Limitations of frame scripts</a></dt> + <dd> </dd> + <dt><a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Process_scripts">Process scripts</a></dt> + <dd> </dd> +</dl> +</div> +</div> + +<hr> +<h2 id="API_reference">API reference</h2> + +<div class="column-container"> +<div class="column-half"> +<dl> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader">nsIFrameScriptLoader</a></dt> + <dd> </dd> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager">nsIMessageListenerManager</a></dt> + <dd> </dd> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster">nsIMessageBroadcaster</a></dt> + <dd> </dd> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender">nsIMessageSender</a></dt> + <dd> </dd> +</dl> +</div> + +<div class="column-half"> +<dl> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender">nsISyncMessageSender</a></dt> + <dd> </dd> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentFrameMessageManager">nsIContentFrameMessageManager</a></dt> + <dd> </dd> + <dt><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader">nsIProcessScriptLoader</a></dt> + <dd> </dd> +</dl> +</div> +</div> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/message_manager/process_scripts/index.html b/files/es/mozilla/firefox/multiprocess_firefox/message_manager/process_scripts/index.html new file mode 100644 index 0000000000..f6011c7836 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/message_manager/process_scripts/index.html @@ -0,0 +1,81 @@ +--- +title: Process scripts +slug: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Process_scripts +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Message_Manager/Process_scripts +--- +<div>{{FirefoxSidebar}}</div><div class="geckoVersionNote"> +<p>Los scripts de proceso son nuevos en Firefox 38.</p> +</div> + +<div class="note"> +<p>Si esta utilizando el addon sdk, puede utilizar el <a href="/en-US/docs/Mozilla/Add-ons/SDK/Low-Level_APIs/remote_parent">remote/parent</a> módulo <code>remoteRequire</code> en su lugar.</p> +</div> + +<p><span id="result_box" lang="es"><span>Cuando necesite ejecutar código en el proceso de contenido para acceder al contenido web, debe utilizar secuencias de</span></span> frame scripts. <span id="result_box" lang="es"><span>Sin embargo, un problema con</span></span> los scripts <span id="result_box" lang="es"><span>es que se pueden cargar varias veces en el proceso de contenido, en varios ámbitos que están aislados unos de otros.</span> <span>Por ejemplo, si llama a la funcion </span></span><code>loadFrameScript()</code> del gestor de mensajes de script, <span id="result_box" lang="es"><span>entonces el script se cargará por separado en todas las pestañas abiertas.</span> <span>Esto puede causar un problema que las secuencias de scripts de trama están interactuando con un servicio global en el proceso de contenido.</span></span></p> + +<p><span id="result_box" lang="es"><span>Por ejemplo, en multiprocesos Firefox, si necesita usar</span></span> <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIContentPolicy">nsIContentPolicy</a></code> to register a content policy, <a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_chrome_scripts#nsIContentPolicy">you must do this in the content process</a>. <span id="result_box" lang="es"><span>para registrar una política de contenido, debe hacerlo en el proceso de contenido.</span> <span>Pero si lo registra en una secuencia de frame script la secuencia de frame script se carga más de una vez, registrará la política de contenido más de una vez, lo que probablemente no es lo que pretende.</span></span></p> + +<p>De forma similar, algunas notificaciones de observadores deben registrarse en el frame script, pero si lo hace en una secuencia de frame scrip, se cargara más de una vez, recibirá varias notificaciones, para ese evento.</p> + +<p><span id="result_box" lang="es"><span>La solución en estos casos es usar un script de proceso en lugar de un frame script.</span></span></p> + +<p>You can load a process script by accessing a <a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview#Parent_process">parent process message manager</a> and calling its <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code> function. The following code uses the global parent process message manager, which will load the script into the the chrome process and any child processes:</p> + +<pre class="brush: js">// chrome code +let ppmm = Cc["@mozilla.org/parentprocessmessagemanager;1"] + .getService(Ci.nsIProcessScriptLoader); +ppmm.loadProcessScript("chrome://whatever/process-script.js", true); +ppmm.addMessageListener("Hello", function(msg) { ... });</pre> + +<p>The process script's global is a <a href="/en-US/Firefox/Multiprocess_Firefox/Message_Manager/Message_manager_overview#Child_process_message_manager">child process message manager</a>, which enables the process script to receive messages from the chrome side, and to send messages to the chrome side:</p> + +<pre class="brush: js">// process-script.js +if (Services.appinfo.processType == Services.appinfo.PROCESS_TYPE_CONTENT) { + dump("Welcome to the process script in a content process"); +} else { + dump("Welcome to the process script in the main process"); +} + +// Message is sent using <code>ContentProcessMessageManager</code> +sendAsyncMessage("Hello");</pre> + +<p>In this example, the <code>dump()</code> statement will run once in each content process as well as in the main process. This example also figures out whether it is running in the chrome or in a content process by looking at the <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIXULRuntime#Process_type_constants">process type</a> in <code><a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.appinfo</a></code>.</p> + +<p>In just about every respect, using process scripts is like using frame scripts:</p> + +<ul> + <li>you can pass the allowDelayedLoad to <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#loadProcessScript()">loadProcessScript()</a></code>. If you do, you must call <code><a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessScriptLoader#removeDelayedProcessScript()">removeDelayedProcessScript()</a></code> when your extension is disabled or removed</li> + <li>the message-passing APIs are the same: <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender#sendAsyncMessage()">sendAsyncMessage()</a></code> is available in both directions, while <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISyncMessageSender#sendSyncMessage()">sendSyncMessage()</a></code> is available from content to chrome only</li> + <li>process scripts are system-privileged, and have access to the <code><a href="/en-US/docs/Components_object">Components</a></code> object. However, process scripts are subject to <a href="/en-US/Firefox/Multiprocess_Firefox/Limitations_of_frame_scripts">the same kinds of limitations as frame scripts</a> (for example, no file system access).</li> + <li>process scripts stay loaded until their host process is closed.</li> + <li>the environment for process scripts is similar to that for frame scripts. However, you don't get access to web content or DOM events from a process script.</li> +</ul> + +<h2 id="Retrieving_the_content_frame_message_manager_for_a_content_window">Retrieving the content frame message manager for a content window</h2> + +<p>When an observer notification in a process script contains a content document or window it can be useful to not use talk through the child/parent process message managers but through the window's content frame message manager, e.g. if responses should be processed by a frame script instead of the process script.</p> + +<p>This can be achieved by traversing the docshell tree up to the top window and then retrieving its content message manager, as follows:</p> + +<pre class="brush: js">function contentMMFromContentWindow(window) { + let tree = window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.<span class="pl-c1">nsIDocShellTreeItem</span>); + let top = tree.sameTypeRootTreeItem; + let iface = QueryInterface(Ci.nsIDocShell).QueryInterface(Ci.nsIInterfaceRequestor); + return iface.getInterface(Ci.nsIContentFrameMessageManager); +} +</pre> + +<div class="note"> +<p>This is intended for unprivileged pages running in a content process. Chrome-privileged pages or things running in the parent process may require special treatment.</p> +</div> + +<p>If the above doesn't work try this:</p> + +<pre class="brush: js">function contentMMFromContentWindow_Method2(aContentWindow) { + return aContentWindow.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDocShell) + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIContentFrameMessageManager); +}</pre> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/motivation/index.html b/files/es/mozilla/firefox/multiprocess_firefox/motivation/index.html new file mode 100644 index 0000000000..0a4f0cb3e6 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/motivation/index.html @@ -0,0 +1,46 @@ +--- +title: Motivation +slug: Mozilla/Firefox/Multiprocess_Firefox/Motivation +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Motivation +--- +<div>{{FirefoxSidebar}}</div><p>There are three main reasons for making Firefox run content in a separate process: performance, security, and stability.</p> + +<h2 id="Performance">Performance</h2> + +<p>Most performance work at Mozilla over the last two years has focused on responsiveness of the browser. The goal is to reduce “<a href="/en-US/docs/Glossary/Jank">jank</a>”—those times when the browser seems to briefly freeze when loading a big page, typing in a form, or scrolling. Responsiveness tends to matter a lot more than throughput on the web today. Much of this work has been done as part of the <a href="https://wiki.mozilla.org/Performance/Snappy">Snappy project</a>. The main focuses have been:</p> + +<ul> + <li>Moving long-running actions to a separate thread so that the main thread can continue to respond to the user.</li> + <li>Doing I/O asynchronously or on other threads so that the main thread isn’t blocked waiting for the disk.</li> + <li>Breaking long-running code into shorter pieces and running the event loop in between. Incremental garbage collection is an example of this.</li> +</ul> + +<p>Much of the low-hanging fruit in these areas has already been picked. The remaining issues are difficult to fix. For example, JavaScript execution and layout happen on the main thread, and they block the event loop. Running these components on a separate thread is difficult because they access data, like the DOM, that are not thread-safe. As an alternative, we’ve considered allowing the event loop to run in the middle of JavaScript execution, but doing so would break a lot of assumptions made by other parts of Firefox (not to mention add-ons).</p> + +<p>Running web content in a separate process is a nice alternative to these approaches. Like the threaded approach, Firefox is able to run its event loop while JavaScript and layout are running in a content process. But unlike threading, the UI code has no access to content DOM or or other content data structures, so there is no need for locking or thread-safety. The downside, of course, is that any code in the Firefox UI process that needs to access content data must do so explicitly through message passing.</p> + +<p>We feel this tradeoff makes sense for a few reasons:</p> + +<ul> + <li>It’s not all that common for Firefox code to access content DOM.</li> + <li>Code that is shared with Firefox OS already uses message passing.</li> + <li>In the multiprocess model, Firefox code that fails to use message passing to access content will fail in an obvious, consistent way. In the threaded model, code that accesses content without proper locking will fail in subtle ways that are difficult to debug.</li> +</ul> + +<h2 id="Security">Security</h2> + +<p>Right now, if someone discovers an exploitable bug in Firefox, they’re able to take over users’ computers. There are a lot of techniques to mitigate this problem, but one of the most powerful is <a href="http://en.wikipedia.org/wiki/Sandbox_%28computer_security%29">sandboxing</a>. Technically, sandboxing doesn’t require multiple processes. However, a sandbox that covered single-process Firefox wouldn’t be very useful. Sandboxes are only able to prevent processes from performing actions that a well-behaved process would never do. Unfortunately, a well-behaved Firefox process (especially one with add-ons installed) needs access to much of the network and file system. Consequently, a sandbox for single-process Firefox couldn’t restrict much.</p> + +<p>In multiprocess Firefox, content processes will be sandboxed. A well-behaved content process won’t access the filesystem directly; it will have to ask the main process to perform the request. At that time, the main process can verify that the request is safe and that it makes sense. Consequently, the sandbox for content processes can be quite restrictive. Our hope is that this arrangement will make it much harder to craft exploitable security holes for Firefox.</p> + +<h2 id="Stability">Stability</h2> + +<p>Currently, a crash in the code running a web page will take down the entire browser. With multiprocess Firefox, only the content process that crashed will be killed.</p> + +<div class="note"> +<p>This page incorporates a lot of content from Bill McCloskey's blog post on multiprocess Firefox: <a href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> +</div> + +<p> </p> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/pitfalls_for_add-on_developers/index.html b/files/es/mozilla/firefox/multiprocess_firefox/pitfalls_for_add-on_developers/index.html new file mode 100644 index 0000000000..4f109bf795 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/pitfalls_for_add-on_developers/index.html @@ -0,0 +1,212 @@ +--- +title: Pitfalls for add-on developers +slug: Mozilla/Firefox/Multiprocess_Firefox/Pitfalls_for_add-on_developers +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Pitfalls_for_add-on_developers +--- +<div>{{FirefoxSidebar}}</div><h2 id="Overview">Overview</h2> + +<p>This page lists patterns that add-on authors might be using that won't work, or will work differently, in multiprocess Firefox.</p> + +<p>It's split into two sections: chrome process and content process.</p> + +<h3 id="Chrome_process">Chrome process</h3> + +<p>The first section, <em>chrome process</em>, covers things that used to work in the chrome process that will no longer work in multiprocess Firefox. These are the sorts of things that will break an old add-on in multiprocess Firefox. The fix is generally some variant of "do that in a frame script loaded into the content process".</p> + +<h4 id="Compatibility_shims">Compatibility shims</h4> + +<p>For many of the patterns described here we've implemented compatibility shims so the patterns still work. For example: whenever extensions try to access web content from the chrome process, the browser will return a <a href="https://developer.mozilla.org/en-US/docs/Cross_Process_Object_Wrappers">Cross Process Object Wrapper</a> that gives the chrome code synchronous access to the content.</p> + +<p>You'll get the shims for your add-on by default, unless you set the <a href="/en-US/Add-ons/Install_Manifests#multiprocessCompatible"><code>multiprocessCompatible</code> flag in your add-on's install manifest</a>.</p> + +<p>However, these shims are not a substitute for migrating extensions:</p> + +<ul> + <li>they are only a temporary measure, and will be removed eventually</li> + <li>they can have a bad effect on responsiveness</li> + <li>there are likely to be edge cases in which they don't work properly</li> +</ul> + +<p>For each pattern we've noted:</p> + +<ul> + <li>whether a shim exists and what kind of behavior it provides</li> + <li>how to update your add-on so you don't need the shim</li> +</ul> + +<h3 id="Content_process">Content process</h3> + +<p>However, some things that used to work in a chrome process will not work in the content process. The second section, <em>content process</em>, lists these sorts of things along with their mitigation.</p> + +<h2 id="Chrome_process_pitfalls">Chrome process pitfalls</h2> + +<h3 id="gBrowser.contentWindow_window.content...">gBrowser.contentWindow, window.content...</h3> + +<h4 id="Without_the_shim">Without the shim</h4> + +<p>All APIs in the chrome process that provide direct access to content objects will no longer work. For example:</p> + +<pre class="brush: js">// chrome code + +gBrowser.contentWindow; // null + +gBrowser.contentDocument; // null + +gBrowser.selectedBrowser.contentWindow; // null + +window.content; // null + +content; // null +</pre> + +<h4 id="With_the_shim">With the shim</h4> + +<p>The shim will give you a <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">CPOW</a> for the content object in these situations.</p> + +<p>To make the shim unnecessary: factor the code that needs to access content into a separate script, load that script into the content process as a frame script, and communicate between the chrome script and the frame script using the message-passing APIs. See the article on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">using the message manager</a>.</p> + +<h3 id="nsIContentPolicy">nsIContentPolicy</h3> + +<h4 id="Without_the_shim_2">Without the shim</h4> + +<p>Under multiprocess Firefox you can't use <a href="http://dxr.mozilla.org/mozilla-central/source/dom/base/nsIContentPolicy.idl"><code>nsIContentPolicy</code></a> in the chrome process, because it needs to touch web content.</p> + +<h4 id="With_the_shim_2">With the shim</h4> + +<p>The shim enables you to add content policies in the chrome process. It transparently registers an <code>nsIContentPolicy</code> in the content process, whose <code>shouldLoad</code> just forwards to the chrome process. The content to check is forwarded as a <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">CPOW</a>. The chrome process then checks the content against the policy supplied by the add-on, and forwards the response back to the child to be enforced.</p> + +<p>To make the shim unnecessary: define and register <code>nsIContentPolicy</code> inside a <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">frame script</a>.</p> + +<h3 id="Observers_in_the_chrome_process">Observers in the chrome process</h3> + +<p>Depending on the topic, you need to register observers in either the chrome process or in a frame script.</p> + +<p>For most topics you need to register observers in the chrome process.</p> + +<p>However, you must listen to <a href="/en/docs/Observer_Notifications#Documents"><code>content-document-global-created</code> and <code>document-element-inserted</code></a> in a frame script. <a href="http://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl">Observers</a> for these topics get content objects as the <code>aSubject</code> argument to <code>observe()</code>, so notifications are not sent to the chrome process.</p> + +<p>There is a shim that will forward these two topics to the chrome process, sending <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">CPOWs</a> as the <code>aSubject</code> argument.</p> + +<h4 id="HTTP_requests">HTTP requests</h4> + +<p>You can't observe <a href="https://developer.mozilla.org/en/docs/Observer_Notifications#HTTP_requests">HTTP requests</a> in the content process. If you do, you'll get an error.<br> + <br> + If you do so in the chrome process, it will mostly work. The subject for the observer notification will be an <code><a href="http://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/http/nsIHttpChannel.idl">nsIHttpChannel</a></code> as you would expect. A common pattern here is to use the <code>notificationCallbacks</code> property of the <code>nsIHttpChannel</code> to get the DOM window that initiated the load, like this:</p> + +<pre class="brush: js">observe: function (subject, topic, data) { + if (topic == "http-on-modify-request") { + var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel); + var domWindow = httpChannel.notificationCallbacks.getInterface(Ci.nsIDOMWindow); + } +}</pre> + +<p>Or this:</p> + +<pre class="brush: js">observe: function (subject, topic, data) { + if (topic == "http-on-modify-request") { + var httpChannel = subject.QueryInterface(Ci.nsIHttpChannel); + var domWindow = httpChannel.notificationCallbacks.getInterface(Ci.nsILoadContext).associatedWindow; + } +}</pre> + +<p>In multiprocess Firefox these patterns will no longer work: the <code>getInterface</code> call will fail.</p> + +<p>In multiprocess Firefox, <code>notificationCallbacks</code> is a special object that tries to emulate the single-process <code>notificationsCallbacks</code> object as best it can. It will return a dummy <code>nsILoadContext</code> when asked, but any attempt to get a window out of it will fail.<br> + <br> + There is an outstanding bug (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1108827">bug 1108827</a>) to implement a shim here, that will make <code>notificationCallbacks</code> a <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">CPOW</a> for the objects in the content process.</p> + +<h3 id="DOM_Events">DOM Events</h3> + +<h4 id="Without_the_shim_3">Without the shim</h4> + +<p>In multiprocess Firefox, if you want to register an event listener on some content DOM node, that needs to happen in the content process.</p> + +<p>It used to be that if you registered a listener on the <a href="/en-US/docs/XUL/browser">XUL <code><browser></code></a> or <a href="/en-US/docs/XUL/tab"><code><tab></code></a> element that hosted some DOM content, then events in the content would bubble up to the XUL and you could handle them there. This no longer happens in multiprocess Firefox.</p> + +<h4 id="With_the_shim_3">With the shim</h4> + +<p>The shim intercepts chrome process code that adds listeners to XUL elements and sets up listeners in the content process, relaying the result back to the chrome process. The <a href="/en-US/docs/Web/API/Event"><code>Event</code></a> object itself is relayed to the chrome process as a <a href="/en-US/Firefox/Multiprocess_Firefox/Cross_Process_Object_Wrappers">CPOW</a>.</p> + +<p>To make the shim unnecessary: register event listeners on the global object inside a <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">frame script</a>. For example:</p> + +<pre class="brush: js">addEventListener("load", handler, true) // for example</pre> + +<div>If you need to contact the chrome process when that happens, send it a message.</div> + +<div> </div> + +<h2 id="Content_process_pitfalls">Content process pitfalls</h2> + +<p>Many privileged APIs will just work in a content process. Anything that just manipulates data structures will just work. XHR and Workers will work.</p> + +<h3 id="File_IO">File I/O</h3> + +<p>You should not write to or read from the disk from a frame script, in particular the profile directory. Even if this is possible, you should not do it and may expect that it could stop working at any time. File I/O should all be done in the chrome process. For example:</p> + +<ul> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsIFileStreams.idl"><code>nsIFileInputStream</code></a></li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/netwerk/base/public/nsIFileStreams.idl"><code>nsIFileOutputStream</code></a></li> +</ul> + +<h3 id="XUL_and_browser_UI">XUL and browser UI</h3> + +<p>Anything that tries to touch the browser UI or anything to do with XUL is likely to not work in the content process. For example:</p> + +<ul> + <li><code><a href="http://dxr.mozilla.org/mozilla-central/source/embedding/components/windowwatcher/nsIPromptService.idl">nsIPromptService</a></code></li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/widget/nsIFilePicker.idl"><code>nsIFilePicker</code></a></li> + <li><code>nsIXUL*</code></li> + <li><need more examples></li> +</ul> + +<h3 id="Chrome_windows">Chrome windows</h3> + +<p>Anything that needs to use chrome windows will not work in the content process. For example:</p> + +<ul> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/mobile/android/components/SessionStore.idl"><code>nsISessionStore</code></a></li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/xpfe/appshell/nsIWindowMediator.idl"><code>nsIWindowMediator</code></a></li> + <li><need more examples></li> +</ul> + +<h3 id="Places_API">Places API</h3> + +<p>The <a href="/en-US/docs/Mozilla/Tech/Places">Places API</a> can't be used inside a frame script. For example:</p> + +<ul> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/nsINavHistoryService.idl"><code>nsINavHistoryService</code></a></li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/toolkit/components/places/nsINavBookmarksService.idl"><code>nsINavBookmarksService</code></a></li> +</ul> + +<h3 id="Observers_in_the_content_process">Observers in the content process</h3> + +<p>As noted in <a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/Problem_areas_for_add-on_developers#Observers_in_the_chrome_process">Observers in the chrome process</a>, most <a href="http://dxr.mozilla.org/mozilla-central/source/xpcom/ds/nsIObserver.idl">observers</a> should be registered in the chrome process and will not work in the content process. The exceptions are <a class="new" href="https://developer.mozilla.org/en/docs/Observer_Notifications#Documents"><code>content-document-global-created</code> and <code>document-element-inserted</code></a> , which must be registered in a frame script.</p> + +<h3 id="QI_from_content_window_to_chrome_window">QI from content window to chrome window</h3> + +<div>There's a particular pattern often used to get from a content window to the associated chrome window. It looks something like this:</div> + +<div> </div> + +<pre class="brush: js">window.QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIWebNavigation) + .QueryInterface(Ci.nsIDocShellTreeItem) + .rootTreeItem + .QueryInterface(Ci.nsIInterfaceRequestor) + .getInterface(Ci.nsIDOMWindow);</pre> + +<div>This will no longer work. In the content process the root tree item is an <a href="http://dxr.mozilla.org/mozilla-central/source/dom/interfaces/base/nsITabChild.idl"><code>nsITabChild</code></a>, that cannot be converted to an <code>nsIDOMWindow</code>, so the second <code>getInterface</code> call here will fail.</div> + +<div> </div> + +<p>If you want a chrome window: send a message from the content process using the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager</a>. The <a href="/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListener#receiveMessage()"><code>target</code></a> property of the object passed into the message handler in the chrome process is the XUL <a href="/en-US/docs/XUL/browser"><code><browser></code></a> receiving the message, and you can get the chrome window from that (Note: I'm not really sure how...).</p> + +<h3 id="nsIAboutModule">nsIAboutModule</h3> + +<p>By default, custom <code>about:</code> pages registered using <a href="http://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/nsIAboutModule.idl"><code>nsIAboutModule</code></a> are loaded in the chrome process. This means that you can't access their content from the content process (via XHR, for example).</p> + +<p>There is a shim for this, that makes the content of <code>about:</code> pages registered by the add-on transparently available in the content process.</p> + +<p>To avoid the shim: if you need to access the content of your about page from the content process, you need to register the <code>nsIAboutModule</code> in the content process as well as the chrome process. By default, <code>about:</code> pages (except for a small whitelist) are loaded in the chrome process when browsed to from the AwesomeBar.</p> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/remotepagemanager/index.html b/files/es/mozilla/firefox/multiprocess_firefox/remotepagemanager/index.html new file mode 100644 index 0000000000..083b13f1e0 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/remotepagemanager/index.html @@ -0,0 +1,127 @@ +--- +title: RemotePageManager +slug: Mozilla/Firefox/Multiprocess_Firefox/RemotePageManager +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/RemotePageManager +--- +<div>{{FirefoxSidebar}}</div><p>{{ gecko_minversion_header('39') }}</p> + +<p>One of the challenges of converting Firefox features and add-ons to <a href="/en-US/Firefox/Multiprocess_Firefox">multiprocess Firefox</a> involves in-content pages. These pages (like about:addons) display in a tab but for now still render in the main process. There can be many reasons for wanting to move these into the content process, particularly if the page interacts with web content in any way but more generally just to keep the main UI as responsive as possible.</p> + +<p>This raises the problem of how the page communicates back to the main process to get information and trigger actions. Commonly this is done with a frame script listening for DOM events from inside the page, performing the necessary message passing and then passing results back to the page. However, this middleman approach has problems. The frame code is maintained separately from the page code leading to three different pieces of code handling behavior for the page. Add-ons also have to be careful to choose unique names for messages to avoid conflicting with other add-ons and Firefox code.</p> + +<p><code>RemotePageManager</code> is an API designed to simplify this. It acts as the middleman between code in the main process and code in the page without needing to write custom code in a frame script. Code in the main process registers URLs that it is interested in. Whenever a frame loads a page with that URL, a pseudo message manager is created to allow message passing between just that page and the code in the main process. Code running in the page itself can access the message manager directly without needing to use a frame script at all.</p> + +<h2 id="RemotePageManager">RemotePageManager</h2> + +<p><code>RemotePageManager</code> is the low-level way to interact with in-content pages. It includes the following methods:</p> + +<dl> + <dt><code>addRemotePageListener(url, callback)</code></dt> + <dd>Registers interest in a URL. Whenever a new page loads at that URL callback is called and passed the message channel to use to communicate with the page. Only one callback can be registered per URL.</dd> + <dt><code>removeRemotePageListener(url)</code></dt> + <dd>Unregisters interest in a URL. The callback passed above will not be called again.</dd> +</dl> + +<h2 id="RemotePages">RemotePages</h2> + +<p><code>RemotePages</code> is a higher-level option. As well as the methods listed here it also has the <a href="/en-US/Firefox/Multiprocess_Firefox/RemotePageManager#Message_channel_methods">message channel methods</a> which will send messages to, and receive messages from, every page currently loaded at the URL.</p> + +<dl> + <dt><code>RemotePages(url)</code></dt> + <dd>Creates a new <code>RemotePages</code> instance for a URL.</dd> + <dt><code>destroy()</code></dt> + <dd>Destroys the instance.</dd> +</dl> + +<h2 id="Message_channel_methods">Message channel methods</h2> + +<p>All of these methods are available directly in the page, on <code>RemotePages</code> instances, or on the channel passed to callbacks registered with <code>RemotePageManager.addRemotePageListener</code>.</p> + +<dl> + <dt><code>sendAsyncMessage(name, data)</code></dt> + <dd>Sends a named message to the other side of the channel. <code>data</code> is copied as a structured clone.</dd> + <dt><code>addMessageListener(name, listener)</code></dt> + <dd>Adds a listener for a named message. <code>listener</code> will be called when the other side of the channel sends a message for <code>name</code>. <code>listener</code> will be passed an object with the properties <code>target</code>, <code>name</code>, and <code>data</code>.</dd> + <dt><code>removeMessageListener(name, listener)</code></dt> + <dd>Removed a listener for a named message.</dd> +</dl> + +<h2 id="Special_messages">Special messages</h2> + +<p>As well as any messages that Firefox or add-on code sends through the message channels, some special messages will be sent. Generally any message name starting with "RemotePage:" should be considered reserved for future use.</p> + +<dl> + <dt>RemotePage:Init</dt> + <dd>Sent to a <code>RemotePages</code> instance when a new page is loaded with the matching URL. The <code>target</code> property of the object passed to any listener is a message channel for just that page.</dd> + <dt>RemotePage:Load</dt> + <dd>Sent when the load event for a matching page in the content process is fired.</dd> + <dt>RemotePage.Unload</dt> + <dd>Sent when a matching page in the content process is unloaded.</dd> +</dl> + +<h2 id="Low_level_example">Low level example</h2> + +<p>This example waits for a page to load and then passes it some information.</p> + +<pre class="brush: js">// code running in the main process somewhere +Components.utils.import("resource://gre/modules/RemotePageManager.jsm"); + +RemotePageManager.addRemotePageListener("about:foo", (channel) => { + // Wait for page load here to be sure the page has had chance to register for this message + channel.addMessageListener("RemotePage:Load", function() { + channel.sendAsyncMessage("MyMessage", { somedata: 42 }); + }); +}); +</pre> + +<p>Here is the code that runs in the page. Note that it has direct access to <code>addMessageListener</code> (as well as the other message channel methods).</p> + +<pre class="brush: js">// code running in the content webpage +addMessageListener("MyMessage", function(msg) { + alert(msg.data.somedata); +}); +</pre> + +<h2 id="High_level_example">High level example</h2> + +<p>The code above uses a callback that is called every time a page is loaded. In reality it is going to be more common for code in the main process to simply respond to requests from the page and want to update all pages at once. <code>RemotePages</code> is more suited to this:</p> + +<pre class="brush: js">// code running in the main process somewhere +Components.utils.import("resource://gre/modules/Preferences.jsm"); +Components.utils.import("resource://gre/modules/RemotePageManager.jsm"); + +let listener = new RemotePages("about:bar"); + +// Listens to messages from all current and future pages +listener.addMessageListener("GetLabel", ({ target }) => { + // target is the channel for just the page that sent this message + target.sendAsyncMessage("SetLabel", Preferences.get("extensions.label.text")); +}); + +Preferences.observe("extensions.label.text", (newLabel) => { + // Sends messages to all currently open pages + listener.sendAsyncMessage("SetLabel", newLabel); +}); + +listener.addMessageListener("ButtonClicked", () => { + // Do something here +}); +</pre> + +<pre class="brush: js">// code running in the content webpage +var button = document.getElementById("button"); +var label = document.getElementById("label"); + +sendAsyncMessage("GetLabel"); +addMessageListener("SetLabel", function(msg) { + label.textContent = msg.data; +}); + +function buttonClicked() { + sendAsyncMessage("ButtonClicked"); +} + +button.addEventListener("click", buttonClicked, false); +</pre> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/tab_selection_in_multiprocess_firefox/index.html b/files/es/mozilla/firefox/multiprocess_firefox/tab_selection_in_multiprocess_firefox/index.html new file mode 100644 index 0000000000..255fe18315 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/tab_selection_in_multiprocess_firefox/index.html @@ -0,0 +1,23 @@ +--- +title: Tab selection in multiprocess Firefox +slug: Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Tab_selection_in_multiprocess_Firefox +--- +<div>{{FirefoxSidebar}}</div><p>In single-process Firefox, when the user switches tabs, this is a synchronous operation. The browser blocks while it loads content into the newly selected tab, then switches to that tab. It indicates that the tab is selected by setting the <code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/Attribute/selected">selected</a></code> attribute on the XUL <code>tab</code> object. Code (including browser code, extensions, or themes) that wants to change the appearance of the selected tab can use the <code>selected</code> attribute to apply CSS for that tab.</p> + +<p>In multiprocess Firefox, tab switching is asynchronous. When the user switches tabs, the chrome process sends a request to the content process to load the page into the newly selected tab. The function in the chrome process then returns immediately, so other code can run. Once the content process is ready, it sends a message back to the chrome process, which then switches tabs in the user interface.</p> + +<p>There's also a timer in the chrome process: if the content process has not responded before the timer expires, then the browser switches tabs anyway, and just displays an empty tab containing a spinner, until the content process has finished loading the page. Currently the timer is set to 300 milliseconds.</p> + +<p>There are, correspondingly, two attributes used to signal tab selection:</p> + +<ul> + <li>The old <code><a href="/en-US/docs/XUL/Attribute/selected">selected</a></code> attribute is set synchronously, at the start of the process. It signals that tab selection has started, but at this point the user interface has not yet been updated.</li> + <li>A new attribute <code><a href="/en-US/docs/Mozilla/Tech/XUL/Attribute/visuallyselected">visuallyselected</a></code> is now used once the browser has actually updated the user interface, either because the content process is ready or because the timer has expired.</li> +</ul> + +<p>This means that code which wants to style the currently selected tab needs to use the <code>visuallyselected</code> attribute to do so. If it uses the <code>selected</code> attribute, then there will be a momentary disconnect in which the newly selected tab's style is updated, but the browser is still displaying the old tab's content.</p> + +<footer class="entry-meta"> </footer> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/technical_overview/index.html b/files/es/mozilla/firefox/multiprocess_firefox/technical_overview/index.html new file mode 100644 index 0000000000..bc743d1dfb --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/technical_overview/index.html @@ -0,0 +1,166 @@ +--- +title: Technical overview +slug: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Technical_overview +--- +<div>{{FirefoxSidebar}}</div><div class="note"> +<p>This page is an edited extract from Bill McCloskey's blog post on multiprocess Firefox: <a class="external external-icon" href="http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/">http://billmccloskey.wordpress.com/2013/12/05/multiprocess-firefox/</a></p> +</div> + +<p>At a very high level, multiprocess Firefox works as follows. The process that starts up when Firefox launches is called the <em>parent process</em>. Initially, this process works similarly to single-process Firefox: it opens a window displaying <a href="http://mxr.mozilla.org/mozilla-central/source/browser/base/content/browser.xul"><code>browser.xul</code></a>, which contains all the principal UI elements for Firefox. Firefox has a flexible GUI toolkit called XUL that allows GUI elements to be declared and laid out declaratively, similar to web content. Just like web content, the Firefox UI has a <code>window</code> object, which has a <code>document</code> property, and this document contains all the XML elements from <code>browser.xul</code>. All the Firefox menus, toolbars, sidebars, and tabs are XML elements in this document. Each tab element contains a <code><browser></code> element to display web content.</p> + +<p>The first place where multiprocess Firefox diverges from single-process Firefox is that each <code><browser></code> element has a <code>remote="true"</code> attribute. When such a browser element is added to the document, a new content process is started. This process is called a <em>child process</em>. An IPC channel is created that links the parent and child processes. Initially, the child displays <code>about:blank</code>, but the parent can send the child a command to navigate elsewhere.</p> + +<h2 id="Drawing"><strong id="drawing">Drawing</strong></h2> + +<p>Somehow, displayed web content needs to get from the child process to the parent and then to the screen. Multiprocess Firefox depends on a new Firefox feature called <a href="http://benoitgirard.wordpress.com/2012/05/15/off-main-thread-compositing-omtc-and-why-it-matters/"><em>off main thread compositing</em></a> (OMTC). In brief, each Firefox window is broken into a series of <em>layers</em>, somewhat similar to layers in Photoshop. Each time Firefox draws, these layers are submitted to a compositor thread that clips and translates the layers and combines them together into a single image that is then drawn.</p> + +<p>Layers are structured as a tree. The root layer of the tree is responsible for the entire Firefox window. This layer contains other layers, some of which are responsible for drawing the menus and tabs. One subtree displays all the web content. Web content itself may be broken into multiple layers, but they’re all rooted at a single “content” layer.</p> + +<p>In multiprocess Firefox, the content layer subtree is actually a shim. Most of the time, it contains a placeholder node that simply keeps a reference to the IPC link with the child process. The content process retains the actual layer tree for web content. It builds and draws to this layer tree. When it’s done, it sends the structure of its layer tree to the parent process via IPC. Backing buffers are shared with the parent either through shared memory or GPU memory. References to this memory are sent as part of the layer tree. When the parent receives the layer tree, it removes its placeholder content node and replaces it with the actual tree from content. Then it composites and draws as normal. When it’s done, it puts the placeholder back.</p> + +<p>The basic architecture of how OMTC works with multiple processes has existed for some time, since it is needed for Firefox OS. However, Matt Woodrow and David Anderson have done a lot of work to get everything working properly on Windows, Mac, and Linux. One of the big challenges for multiprocess Firefox will be getting OMTC enabled on all platforms. Right now, only Macs use it by default.</p> + +<h2 id="User_input"><strong id="input">User input</strong></h2> + +<p>Events in Firefox work the same way as they do on the web. Namely, there is a DOM tree for the entire window, and events are threaded through this tree in capture and bubbling phases. Imagine that the user clicks on a button on a web page. In single-process Firefox, the root DOM node of the Firefox window gets the first chance to process the event. Then, nodes lower down in the DOM tree get a chance. The event handling proceeds down through to the XUL <code><browser></code> element. At this point, nodes in the web page’s DOM tree are given a chance to handle the event, all the way down to the button. The bubble phase follows, running in the opposite order, all the way back up to the root node of the Firefox window.</p> + +<p>With multiple processes, event handling works the same way until the <code><browser></code> element is hit. At that point, if the event hasn’t been handled yet, it gets sent to the child process by IPC, where handling starts at the root of the content DOM tree. The parent process then waits to run its bubbling phase until the content process has finished handling the event.</p> + +<h2 id="Inter-process_communication"><strong id="ipc">Inter-process communication</strong></h2> + +<p>All IPC happens using the Chromium IPC libraries. Each child process has its own separate IPC link with the parent. Children cannot communicate directly with each other. To prevent deadlocks and to ensure responsiveness, the parent process is not allowed to sit around waiting for messages from the child. However, the child is allowed to block on messages from the parent.</p> + +<p>Rather than directly sending packets of data over IPC as one might expect, we use code generation to make the process much nicer. The IPC protocol is defined in <a href="https://wiki.mozilla.org/IPDL">IPDL</a>, which sort of stands for “inter-* protocol definition language”. A typical IPDL file is <code><a href="http://mxr.mozilla.org/mozilla-central/source/netwerk/ipc/PNecko.ipdl">PNecko.ipdl</a></code>. It defines a set messages and their parameters. Parameters are serialized and included in the message. To send a message <code>M</code>, C++ code just needs to call the method <code>SendM</code>. To receive the message, it implements the method <code>RecvM</code>.</p> + +<p>IPDL is used in all the low-level C++ parts of Gecko where IPC is required. In many cases, IPC is just used to forward actions from the child to the parent. This is a common pattern in Gecko:</p> + +<pre class="brush: cpp">void AddHistoryEntry(param) { + if (XRE_GetProcessType() == GeckoProcessType_Content) { + // If we're in the child, ask the parent to do this for us. + SendAddHistoryEntry(param); + return; + } + + // Actually add the history entry... +} + +bool RecvAddHistoryEntry(param) { + // Got a message from the child. Do the work for it. + AddHistoryEntry(param); + return true; +} +</pre> + +<p>When <code>AddHistoryEntry</code> is called in the child, we detect that we’re inside the child process and send an IPC message to the parent. When the parent receives that message, it calls <code>AddHistoryEntry</code> on its side.</p> + +<p>For a more realistic illustration, consider the Places database, which stores visited URLs for populating the awesome bar. Whenever the user visits a URL in the content process, we call <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/History.cpp?rev=8b9687f6c602#2326">this code</a>. Notice the content process check followed by the <code>SendVisitURI</code> call and an immediate return. The message is received <a href="http://mxr.mozilla.org/mozilla-central/source/dom/ipc/ContentParent.cpp?rev=fecda5f4a0df#2666">here</a>; this code just calls <code>VisitURI</code> in the parent.</p> + +<p>The code for IndexedDB, the places database, and HTTP connections all runs in the parent process, and they all use roughly the same proxying mechanism in the child.</p> + +<h2 id="Frame_scripts"><strong id="contentscripts">Frame scripts</strong></h2> + +<p>IPDL takes care of passing messages in C++, but much of Firefox is actually written in JavaScript. Instead of using IPDL directly, JavaScript code relies on <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">the message manager</a> to communicate between processes. To use the message manager in JS, you need to get hold of a message manager object. There is a global message manager, message managers for each Firefox window, and message managers for each <code><browser></code> element. A message manager can be used to load JS code into the child process and to exchange messages with it.</p> + +<p>As a simple example, imagine that we want to be informed every time a <code>load</code> event triggers in web content. We’re not interested in any particular browser or window, so we use the global message manager. The basic process is as follows:</p> + +<pre class="brush: js">// Get the global message manager. +let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. + getService(Ci.nsIMessageListenerManager); + +// Wait for load event. +mm.addMessageListener("GotLoadEvent", function (msg) { + dump("Received load event: " + <span class="skimlinks-unlinked">msg.data.url</span> + "\n"); +}); + +// Load code into the child process to listen for the event. +mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); +</pre> + +<p>For this to work, we also need to have a file <code>content-script.js</code>:</p> + +<pre class="brush: js">// Listen for the load event. +addEventListener("load", function (e) { + // Inform the parent process. + let docURL = content.document.documentURI; + sendAsyncMessage("GotLoadEvent", {url: docURL}); +}, false); +</pre> + +<p>This file is called a <em>frame script</em>. When the <code>loadFrameScript</code> function call runs, the code for the script is run once for each <code><browser></code> element. This includes both remote browsers and regular ones. If we had used a per-window message manager, the code would only be run for the browser elements in that window. Any time a new browser element is added, the script is run automatically (this is the purpose of the <code>true</code> parameter to <code>loadFrameScript</code>). Since the script is run once per browser, it can access the browser’s window object and docshell via the <code>content</code> and <code>docShell</code> globals.</p> + +<p>The great thing about frame scripts is that they work in both single-process and multiprocess Firefox. To learn more about the message manager, see the <a href="/en-US/Firefox/Multiprocess_Firefox/The_message_manager">message manager guide</a>.</p> + +<h2 id="Cross-process_APIs"><strong id="shims">Cross-process APIs</strong></h2> + +<p>There are a lot of APIs in Firefox that cross between the parent and child processes. An example is the <code>webNavigation</code> property of XUL <code><browser></code> elements. The <code>webNavigation</code> property is an object that provides methods like <code>loadURI</code>, <code>goBack</code>, and <code>goForward</code>. These methods are called in the parent process, but the actions need to happen in the child. First I’ll cover how these methods work in single-process Firefox, and then I’ll describe how we adapted them for multiple processes.</p> + +<p>The <code>webNavigation</code> property is defined using the XML Binding Language (XBL). XBL is a declarative language for customizing how XML elements work. Its syntax is a combination of XML and JavaScript. Firefox uses XBL extensively to customize XUL elements like <code><browser></code> and <code><tabbrowser></code>. The <code><browser></code> customizations reside in <code><a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd">browser.xml</a></code>. <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/browser.xml?rev=754cf7fc84cd#262">Here</a> is how <code>browser.webNavigation</code> is defined:</p> + +<pre class="brush: xml"><field name="_webNavigation">null</field> + +<property name="webNavigation" readonly="true"> + <getter> + <![CDATA[ + if (!this._webNavigation) + this._webNavigation = this.docShell.QueryInterface(Components.interfaces.nsIWebNavigation); + return this._webNavigation; + ]]> + </getter> +</property> +</pre> + +<p>This code is invoked whenever JavaScript code in Firefox accesses <code>browser.webNavigation</code>, where <code>browser</code> is some <code><browser></code> element. It checks if the result has already been cached in the <code>browser._webNavigation</code> field. If it hasn’t been cached, then it fetches the navigation object based off the browser’s <em>docshell</em>. The docshell is a Firefox-specific object that encapsulates a lot of functionality for loading new pages, navigating back and forth, and saving page history. In multiprocess Firefox, the docshell lives in the child process. Since the <code>webNavigation</code> accessor runs in the parent process, <code>this.docShell</code> above will just return null. As a consequence, this code will fail completely.</p> + +<p>One way to fix this problem would be to create a fake docshell in C++ that could be returned. It would operate by sending IPDL messages to the real docshell in the child to get work done. We may eventually take this route in the future. We decided to do the message passing in JavaScript instead, since it’s easier and faster to prototype things there. Rather than change every docshell-using accessor to test if we’re using multiprocess browsing, we decided to create a new XBL binding that applies only to remote <code><browser></code> elements. It is called <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/widgets/remote-browser.xml?rev=9583bd3099ae"><code>remote-browser.xml</code></a>, and it extends the existing <code>browser.xml</code> binding.</p> + +<p>The <code>remote-browser.xml</code> binding returns a JavaScript <em>shim object</em> whenever anyone uses <code>browser.webNavigation</code> or other similar objects. The shim object is implemented <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/modules/RemoteWebNavigation.jsm">in its own JavaScript module</a>. It uses the message manager to send messages like <code>"WebNavigation:LoadURI"</code> to <a href="http://mxr.mozilla.org/mozilla-central/source/toolkit/content/browser-child.js?rev=9583bd3099ae#107">a content script loaded by <code>remote-browser.xml</code></a>. The content script performs the actual action.</p> + +<p>The shims we provide emulate their real counterparts imperfectly. They offer enough functionality to make Firefox work, but add-ons that use them may find them insufficient. I’ll discuss strategies for making add-ons work in more detail later.</p> + +<h2 id="Cross-process_object_wrappers"><strong id="cpows">Cross-process object wrappers</strong></h2> + +<p>The message manager API does not allow the parent process to call <code>sendSyncMessage</code>; that is, the parent is not allowed to wait for a response from the child. It’s detrimental for the parent to wait on the child, since we don’t want the browser UI to be unresponsive because of slow content. However, converting Firefox code to be asynchronous (i.e., to use <code>sendAsyncMessage</code> instead) can sometimes be onerous. As an expedient, we’ve introduced a new primitive that allows code in the parent process to access objects in the child process synchronously.</p> + +<p>These objects are called cross-process object wrappers, frequently abbreviated to CPOWs. They’re created using the message manager. Consider this example content script:</p> + +<pre class="brush: js">addEventListener("load", function (e) { + let doc = content.document; + sendAsyncMessage("GotLoadEvent", <strong>{}, {document: doc}</strong>); +}, false); +</pre> + +<p>In this code, we want to be able to send a reference to the document to the parent process. We can’t use the second parameter to <code>sendAsyncMessage</code> to do this: that argument is converted to JSON before it is sent up. The optional third parameter allows us to send object references. Each property of this argument becomes accessible in the parent process as a CPOW. Here’s what the parent code might look like:</p> + +<pre class="brush: js">let mm = Cc["@<span class="skimlinks-unlinked">mozilla.org/globalmessagemanager;1</span>"]. + getService(Ci.nsIMessageListenerManager); + +mm.addMessageListener("GotLoadEvent", function (msg) { + let uri = <strong>msg.objects.document.documentURI</strong>; + dump("Received load event: " + uri + "\n"); +}); +mm.loadFrameScript("chrome://content/<span class="skimlinks-unlinked">content-script.js</span>", true); +</pre> + +<p>It’s important to realize that we’re send object <em>references</em>. The <code>msg.objects.document</code> object is only a wrapper. The access to its <code>documentURI</code> property sends a synchronous message down to the child asking for the value. The dump statement only happens after a reply has come back from the child.</p> + +<p>Because every property access sends a message, CPOWs can be slow to use. There is no caching, so 1,000 accesses to the same property will send 1,000 messages.</p> + +<p>Another problem with CPOWs is that they violate some assumptions people might have about message ordering. Consider this code:</p> + +<pre class="brush: js">mm.addMessageListener("GotLoadEvent", function (msg) { + mm.sendAsyncMessage("ChangeDocumentURI", {newURI: "<span class="skimlinks-unlinked">hello.com</span>"}); + let uri = <strong>msg.objects.document.documentURI</strong>; + dump("Received load event: " + uri + "\n"); +}); +</pre> + +<p>This code sends a message asking the child to change the current document URI. Then it accesses the current document URI via a CPOW. You might expect the value of <code>uri</code> to come back as <code>"hello.com"</code>. But it might not. In order to avoid deadlocks, CPOW messages can bypass normal messages and be processed first. It’s possible that the request for the <code>documentURI</code> property will be processed before the <code>"ChangeDocumentURI"</code> message, in which case <code>uri</code> will have some other value.</p> + +<p>For this reason, it’s best not to mix CPOWs with normal message manager messages. It’s also a bad idea to use CPOWs for anything security-related, since you may not get results that are consistent with surrounding code that might use the message manager.</p> + +<p>Despite these problems, we’ve found CPOWs to be useful for converting certain parts of Firefox to be multiprocess-compatible. It’s best to use them in cases where users are less likely to notice poor responsiveness. As an example, we use CPOWs to implement the context menu that pops up when users right-click on content elements. Whether this code is asynchronous or synchronous, the menu cannot be displayed until content has responded with data about the element that has been clicked. The user is unlikely to notice if, for example, tab animations don’t run while waiting for the menu to pop up. Their only concern is for the menu to come up as quickly as possible, which is entirely gated on the response time of the content process. For this reason, we chose to use CPOWs, since they’re easier than converting the code to be asynchronous.</p> + +<p>It’s possible that CPOWs will be phased out in the future. Asynchronous messaging using the message manager gives a user experience that is at least as good as, and often strictly better than, CPOWs. We strongly recommend that people use the message manager over CPOWs when possible. Nevertheless, CPOWs are sometimes useful.</p> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/types_of_message_manager/index.html b/files/es/mozilla/firefox/multiprocess_firefox/types_of_message_manager/index.html new file mode 100644 index 0000000000..fe2917686b --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/types_of_message_manager/index.html @@ -0,0 +1,179 @@ +--- +title: Message manager overview +slug: Mozilla/Firefox/Multiprocess_Firefox/Types_of_message_manager +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Types_of_message_manager +--- +<div>{{FirefoxSidebar}}</div><p>In the initial version of multiprocess Firefox there are two processes:</p> + +<ul> + <li>the chrome process, also called the parent process, runs the browser UI (chrome) code and code inserted by extensions</li> + <li>the content process, also called the child process, runs all web content. In future versions of multiprocess Firefox different tabs may run in different processes, but for now, all content tabs share a single content process.</li> +</ul> + +<p>Message managers are designed to enable code in one process to communicate with code in a different process. At the top level, there are two different sorts of message managers:</p> + +<ul> + <li><em>Frame message managers</em>: these enable chrome process code to load a script into a browser frame (essentially, a single browser tab) in the content process. These scripts are called <em>frame scripts</em>, and as the name suggests, they are scoped to a specific browser frame. If chrome code wants to run code in the content process so it can access web content, this is usually the sort of message manager to use.</li> + <li><em>Process message managers</em>: these correspond to process boundaries, and enable code running in the parent (chrome) process to communicate with code running in the child (content) process. From Firefox 38 onwards, they also enable code running in the parent process to load <em>process scripts</em> into the child process. These are like frame scripts, except they are global to the child process. Process scripts are most likely to be useful when chrome code wants to run some code only once in the content process, to access some global service: for example, to register an observer or a content policy.</li> +</ul> + +<h2 id="Frame_message_managers">Frame message managers</h2> + +<p>In multiprocess Firefox, when chrome code needs to interact with web content, it needs to:</p> + +<ul> + <li>factor the code that needs direct access to content into separate scripts, which are called "frame scripts"</li> + <li>use a frame message manager to load these frame scripts into the content process</li> + <li>use the frame message manager API to communicate with the frame script</li> +</ul> + +<div class="note"> +<p>Some older articles on multiprocess Firefox and the message manager might refer to "content scripts" instead of "frame scripts", but this usage is deprecated because the Add-on SDK uses "content script" to refer to a <a href="https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts">similar but different kind of script</a>.</p> +</div> + +<p>There are three different subtypes of frame message manager: the global message manager, the window message manager, and the browser message manager. All three enable chrome code to:</p> + +<ul> + <li>load a script into a frame in the content the content process using a <code>loadFrameScript()</code> function. These scripts are called "frame scripts".</li> + <li>communicate with frame scripts using <code>addMessageListener()</code> and <code>broadcastAsyncMessage() </code>or <code>sendAsyncMessage() </code>functions.</li> +</ul> + +<div class="note"> +<p>Note that in this context, "browser" refers to the <a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XUL/browser">XUL <browser> object</a>, which is a frame that hosts a single Web document. It does not refer to the more general sense of a Web browser.</p> +</div> + +<h3 id="Global_message_manager">Global message manager</h3> + +<p>The <strong>global message manager</strong> operates on every <code><browser></code> (that is, every open content tab).<code> </code></p> + +<ul> + <li><code>loadFrameScript()</code> loads the given script into every <code><browser></code> in every browser window.</li> + <li><code>broadcastAsyncMessage()</code> sends the message to every <code><browser></code> in every browser window.</li> +</ul> + +<p>It's a <code>ChromeMessageBroadcaster</code> object, which implements the following interfaces:</p> + +<ul> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></li> +</ul> + +<p>You can access the global message manager like this:</p> + +<pre class="brush: js language-js"><code class="language-js"><span class="comment token">// chrome script +</span><span class="keyword token">let</span> globalMM <span class="operator token">=</span> Cc<span class="punctuation token">[</span><span class="string token">"@mozilla.org/globalmessagemanager;1"</span><span class="punctuation token">]</span> + <span class="punctuation token">.</span><span class="function token">getService<span class="punctuation token">(</span></span>Ci<span class="punctuation token">.</span>nsIMessageListenerManager<span class="punctuation token">)</span><span class="punctuation token">;</span></code></pre> + +<h3 id="Window_message_manager">Window message manager</h3> + +<p>The <strong>window message manager</strong> is associated with a specific browser window, and operates on every <code><browser></code> (that is, every content tab) loaded into that window:</p> + +<ul> + <li><code>loadFrameScript()</code> loads the given script into every <code><browser></code> in that browser window</li> + <li><code>broadcastAsyncMessage()</code> sends the message to every <code><browser></code> in that browser window.</li> +</ul> + +<p>It's a <code>ChromeMessageBroadcaster</code> object, which implements the following interfaces:</p> + +<ul> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></li> +</ul> + +<p>The window message manager can be accessed as a property of the browser window:</p> + +<pre class="brush: js language-js"><code class="language-js"><span class="comment token">// chrome script +</span><span class="keyword token">let</span> windowMM <span class="operator token">=</span> window<span class="punctuation token">.</span>messageManager<span class="punctuation token">;</span></code></pre> + +<h3 id="Browser_message_manager">Browser message manager</h3> + +<p>The <strong>browser message manager</strong> is specific to a single XUL <code><browser></code> element (which essentially corresponds to a single tab):</p> + +<ul> + <li><code>loadFrameScript()</code> loads the given script only into its <code><browser></code></li> + <li><code>sendAsyncMessage()</code> sends the message only to that <code><browser></code>.</li> +</ul> + +<p>You can mix and match: so for example, you could load a script into every <code><browser></code> using the global message manager, but then send a message to the script instance loaded into a specific <code><browser></code> using the browser message manager.</p> + +<p>It's a <code>ChromeMessageSender</code> object, which implements the following interfaces:</p> + +<ul> + <li><code><a class="new" href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIProcessChecker" title="">nsIProcessChecker</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFrameScriptLoader" title="">nsIFrameScriptLoader</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender" title="">nsIMessageSender</a></code></li> +</ul> + +<p>The browser message manager can be accessed as a property of the XUL <code><browser></code> element:</p> + +<pre class="brush: js language-js"><code class="language-js"><span class="comment token">// chrome script +</span><span class="keyword token">let</span> browserMM <span class="operator token">=</span> gBrowser<span class="punctuation token">.</span>selectedBrowser<span class="punctuation token">.</span>messageManager<span class="punctuation token">;</span></code></pre> + +<h2 id="Process_message_managers">Process message managers</h2> + +<p>Process message managers correspond to process boundaries, and enable code running in different processes to communicate. Multiprocess Firefox has the concept of:</p> + +<ul> + <li>a "parent process"</li> + <li>"child processes" which are processes spawned by the parent process.</li> +</ul> + +<p>For practical purposes, in multiprocess Firefox the parent process is the chrome process, and child processes are content processes. </p> + +<p>In each child process, there's a single <em>child process message manager</em> (CPMM). For each child process message manager, there's a <em>parent process message manager</em> (PPMM) in the parent process. There's also a single <em>global parent process message manager</em> (GPPMM) in the parent process, that provides access to all the parent process message managers:</p> + +<p><img alt="" src="https://mdn.mozillademos.org/files/10791/process-message-managers.png" style="display: block; height: 477px; margin-left: auto; margin-right: auto; width: 524px;"></p> + +<p> </p> + +<p>With the GPPMM, you can broadcast messages to all CPMMs. With a PPMM, you can send a message to its corresponding CPMM. With a CPMM, you can send messages to the parent process: these messages are received first by the corresponding PPMM, then by the GPPMM.</p> + +<p>From Firefox 38 onwards, you can also use a parent process message manager to load a script into a child process. This is the recommended way to load a script that executes just once per child process, which is something you might want to do if you are interacting with some global service (for example, adding listeners to observer notifications or registering components).</p> + +<h3 id="Accessing_process_message_managers">Accessing process message managers</h3> + +<p>You can access the global parent process manager with code like this:</p> + +<pre class="brush: js">// parent process +let parentProcessMessageManager = Cc["@mozilla.org/parentprocessmessagemanager;1"] + .getService(Ci.nsIMessageBroadcaster);</pre> + +<p>You can also access it as the <code>ppmm</code> property of <a href="/en-US/docs/Mozilla/JavaScript_code_modules/Services.jsm">Services.jsm</a>.</p> + +<pre class="brush: js">// child process script +let childProcessMessageManager = Cc["@mozilla.org/childprocessmessagemanager;1"] + .getService(Ci.nsISyncMessageSender);</pre> + +<h3 id="Parent_process_message_manager">Parent process message manager</h3> + +<p>The parent process message manager lives in the</p> + +<p>implements</p> + +<ul> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageBroadcaster" title="">nsIMessageBroadcaster</a></code></li> +</ul> + +<p> </p> + +<h3 id="Child_process_message_manager">Child process message manager</h3> + +<p>implements</p> + +<ul> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageListenerManager" title="">nsIMessageListenerManager</a></code></li> + <li><code><a href="https://developer.mozilla.org/en-US/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIMessageSender" title="">nsIMessageSender</a></code></li> +</ul> + +<h4 id="Loading_scripts_per_child_process">Loading scripts per child process</h4> + +<p>Since the process message managers do not support script loading the only way to implement per-child process code is to use a <a href="https://developer.mozilla.org/en-US/Firefox/Multiprocess_Firefox/The_message_manager#frame-scripts">frame script</a> which imports a custom <a href="https://developer.mozilla.org/en-US/docs/JavaScript_code_modules/Using">javascript module (JSM)</a>. Since javascript modules are singletons they will only be executed once per process even when they are loaded in multiple frame scripts.<br> + The JSM can then use the child process message manager to exchange messages with the parent process message manager.</p> + +<p>This can be useful for addons to register categories, observers and components in child processes.</p> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html b/files/es/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html new file mode 100644 index 0000000000..3089e24000 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/web_content_compatibility/index.html @@ -0,0 +1,28 @@ +--- +title: Web content compatibility +slug: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Web_content_compatibility +--- +<div>{{FirefoxSidebar}}</div><p><span class="seoSummary">While the introduction of multi-process capabilities to Firefox should be seamless and invisible to Web content, there are some exceptions and subtle changes from past behavior. This article discusses the known differences you may encounter.</span></p> + +<h2 id="Events">Events</h2> + +<p>Here you'll find information about events whose behaviors have changed due to multiprocess Firefox's implementation.</p> + +<h3 id="No_bubbling_of_events_from_<option>_to_<select>">No bubbling of events from <code><option></code> to <code><select></code></h3> + +<p>Historically, Firefox has allowed keyboard and mouse events to bubble up from the <code><option></code> element to the parent {{HTMLElement("select")}} element. This doesn't happen in Chrome, however, although this behavior is inconsistent across many browsers. For better Web compatibility (and for technical reasons), when Firefox is in multi-process mode and the <code><select></code> element is displayed as a drop-down list. This behavior is unchanged if the <code><select></code> is presented inline and it has either the <code>multiple</code> attribute defined or a <code>size</code> attribute set to more than 1.</p> + +<p>Rather than watching <code><option></code> elements for events, you should watch for {event("change")}} events on {{HTMLElement("select")}}. See {{bug(1090602)}} for details.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li>Multiprocess Firefox</li> + <li>{{HTMLElement("option")}}</li> + <li>{{HTMLElement("select")}}</li> + <li>{{domxref("HTMLOptionElement")}}</li> + <li>{{domxref("HTMLSelectElement")}}</li> +</ul> diff --git a/files/es/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html b/files/es/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html new file mode 100644 index 0000000000..7f9ee69755 --- /dev/null +++ b/files/es/mozilla/firefox/multiprocess_firefox/which_uris_load_where/index.html @@ -0,0 +1,61 @@ +--- +title: Which URIs load where +slug: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where +tags: + - Necesita traducción +translation_of: Mozilla/Firefox/Multiprocess_Firefox/Which_URIs_load_where +--- +<div>{{FirefoxSidebar}}</div><p>Based initially on the page's URI scheme, the browser can decide whether to load a page in the chrome process or a content process. For some schemes, you can change the default behavior.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Scheme</th> + <th scope="col">Behavior</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>about:</code></td> + <td> + <p>By default, <code>about:</code> pages are always loaded in the chrome process. However, when you register a new <code>about:</code> page, you can change this default.</p> + + <p>Two new flags are defined in <code><a href="https://dxr.mozilla.org/mozilla-central/source/netwerk/protocol/about/nsIAboutModule.idl">nsIAboutModule</a></code>:</p> + + <ul> + <li><code>URI_CAN_LOAD_IN_CHILD</code>: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li> + <li><code>URI_MUST_LOAD_IN_CHILD</code>: the page will always be loaded in a child process.</li> + </ul> + + <p>To use one of these flags, return it from your implementation of <code>getURIFlags</code> in the <a href="/en-US/docs/Custom_about:_URLs">code that registers the <code>about:</code> URI</a>.</p> + + <p>If you use these flags, you must register the about page in the framescript for each tab. If you do not set multiprocessCompatible to true in your install.rdf then shims will be used. But the e10s shims will be deprecated soon. Read more here - <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1257201">Bug 1257201</a>.</p> + </td> + </tr> + <tr> + <td><code>chrome:</code></td> + <td> + <p>By default, <code>chrome:</code> pages are always loaded in the chrome process. However, when you register a new <code>chrome:</code> page, you can change this default.</p> + + <p>Two new flags are defined in the <a href="/en-US/docs/Chrome_Registration">chrome.manifest file</a>:</p> + + <ul> + <li>remoteenabled: the page will be loaded in the same process as the <code><a href="/en-US/docs/XUL/browser">browser</a></code> that has loaded it.</li> + <li>remoterequired: the page will always be loaded in a child process.</li> + </ul> + </td> + </tr> + <tr> + <td><code>file:</code></td> + <td> + <p>Always loaded in a content process.</p> + + <p><strong>Note:</strong> This does not mean <code>file:</code> URIs can be used freely by code in content processes. Sandboxing may blacklist particular directories and future changes may restrict <code>file:</code> URIs to a separate content process, isolated from regular web content. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1187099">bug 1187099</a> how this can affect addons attempting to load files from the profile directory.</p> + </td> + </tr> + <tr> + <td><code>resource:</code></td> + <td>Always loaded in a content process.</td> + </tr> + </tbody> +</table> diff --git a/files/es/mozilla/firefox/privacy/index.html b/files/es/mozilla/firefox/privacy/index.html new file mode 100644 index 0000000000..c6a9e69b09 --- /dev/null +++ b/files/es/mozilla/firefox/privacy/index.html @@ -0,0 +1,9 @@ +--- +title: Privacy +slug: Mozilla/Firefox/Privacy +tags: + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Privacy +--- +<div>{{FirefoxSidebar}}</div><p>{{ ListSubpages () }}</p> diff --git a/files/es/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html b/files/es/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html new file mode 100644 index 0000000000..a66c128f8f --- /dev/null +++ b/files/es/mozilla/firefox/privacy/storage_access_policy/errors/cookieblockedtracker/index.html @@ -0,0 +1,97 @@ +--- +title: 'Blocked: Storage access requests from trackers' +slug: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker +translation_of: Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker +--- +<h2 id="Mensaje">Mensaje</h2> + +<p>Firefox:</p> + +<pre class="syntaxbox"> <span class="tlid-translation translation" lang="es"><span title="">CookieBlockedTracker = La solicitud de acceso a cookies o almacenamiento en "X" se bloqueó porque provenía de un rastreador y el bloqueo de contenido está habilitado.</span></span> +</pre> + +<h2 id="¿Qué_salió_mal"><span class="tlid-translation translation" lang="es"><span title="">¿Qué salió mal</span></span>?</h2> + +<p><span class="tlid-translation translation" lang="es"><span title="">Se bloqueó una solicitud de acceso a cookies o almacenamiento porque el navegador la identificó como proveniente de un rastreador y el bloqueo de contenido está habilitado</span></span> .</p> + +<p><span class="tlid-translation translation" lang="es"><span title="">El permiso puede ser cambiado o eliminado por</span></span>:</p> + +<ul> + <li>Going to <em>Preferences > Content Blocking </em>and either + + <ul> + <li>adding an exception with the <em>Manage Exceptions</em>… button</li> + <li>choosing the <em>Custom</em> Content Blocking and unchecking the <em>Tracker</em> checkbox</li> + </ul> + </li> +</ul> + +<p>If the blocked resource doesn't need authentication, you can fix the warning message by adding a <code>crossorigin="anonymous"</code> attribute to the relevant element.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://support.mozilla.org/en-US/kb/content-blocking">Content blocking</a> on <a href="https://support.mozilla.org">support.mozilla.org</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_settings_attributes">The <code>crossorigin</code> attribute</a></li> +</ul> + +<div class="boxed translate-source hidden"><textarea><div>{{FirefoxSidebar}}</div> + +<h2 id="Message">Message</h2> + +<p>Firefox:</p> + +<pre class="syntaxbox">CookieBlockedTracker=Request to access cookies or storage on “X” was blocked because it came from a tracker and content blocking is enabled. +</pre> + +<h2 id="What_went_wrong">What went wrong?</h2> + +<p>A request to access cookies or storage was blocked because the browser identified it as coming from a tracker and content blocking is enabled.</p> + +<p>The permission can be changed or removed by:</p> + +<ul> + <li>Going to <em>Preferences &gt; Content Blocking </em>and either + + <ul> + <li>adding an exception with the <em>Manage Exceptions</em>… button</li> + <li>choosing the <em>Custom</em> Content Blocking and unchecking the <em>Tracker</em> checkbox</li> + </ul> + </li> +</ul> + +<p>If the blocked resource doesn't need authentication, you can fix the warning message by adding a <code>crossorigin="anonymous"</code> attribute to the relevant element.</p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://support.mozilla.org/en-US/kb/content-blocking">Content blocking</a> on <a href="https://support.mozilla.org">support.mozilla.org</a></li> + <li><a href="/en-US/docs/Web/HTML/CORS_settings_attributes">The <code>crossorigin</code> attribute</a></li> +</ul></textarea></div> + +<article class="localized"> +<header> +<h3 id="Traducción_en_Español">Traducción en Español:</h3> +</header> + +<div class="guide-links"><a href="/es/docs/MDN/Community" rel="noopener">¿Necesitas ayuda?</a> • <a href="/es/docs/MDN/Contribute/Editor" rel="noopener">Guía editorial</a> • <a href="/es/docs/MDN/Contribute/Content/Style_guide" rel="noopener">Guía de estilo</a></div> + +<div class="editor-wrapper" id="editor-wrapper"> +<div class="draft-container"> +<div class="draft-old"></div> + +<div class="draft-status">Autoguardado activado.</div> +</div> + +<div class="ckeditor-container editor-container dirty"> +<div class="editor"> +<div class="editor-tools"></div> +<textarea><p>La solicitud para acceder a la cookie o al almacenamiento en "https://www.dominio.com/" se bloqueó porque provenía de un rastreador y el bloqueador de contenido está habilitado.</p></textarea> + +<div style="height: 172px;"> +<div style="border: 1px solid rgb(182, 182, 182); width: 617px; position: fixed; top: 0px;"></div> +</div> +</div> +</div> +</div> +</article> diff --git a/files/es/mozilla/firefox/privacy/storage_access_policy/errors/index.html b/files/es/mozilla/firefox/privacy/storage_access_policy/errors/index.html new file mode 100644 index 0000000000..e34540eb06 --- /dev/null +++ b/files/es/mozilla/firefox/privacy/storage_access_policy/errors/index.html @@ -0,0 +1,24 @@ +--- +title: Errors +slug: Mozilla/Firefox/Privacy/Storage_access_policy/Errors +tags: + - Cookies + - Errors + - NeedsTranslation + - Storage + - TopicStub + - storage access policy +translation_of: Mozilla/Firefox/Privacy/Storage_access_policy/Errors +--- +<div>{{FirefoxSidebar}}</div> + +<p>This page lists the errors that can be raised due to Firefox's anti-tracking functionality, governed by the <a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy">Storage access policy</a>. You can find further information about them by clicking on the links below:</p> + +<p>A request to access cookies or storage was blocked because</p> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedByPermission">of custom cookie permission</a>.</li> + <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedTracker">it came from a tracker and content blocking is enabled</a>.</li> + <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedAll">we are blocking all storage access requests</a>.</li> + <li><a href="/en-US/docs/Mozilla/Firefox/Privacy/Storage_access_policy/Errors/CookieBlockedForeign">we are blocking all third-party storage access requests and content blocking is enabled</a>.</li> +</ul> diff --git a/files/es/mozilla/firefox/privacy/storage_access_policy/index.html b/files/es/mozilla/firefox/privacy/storage_access_policy/index.html new file mode 100644 index 0000000000..14d79a009c --- /dev/null +++ b/files/es/mozilla/firefox/privacy/storage_access_policy/index.html @@ -0,0 +1,267 @@ +--- +title: 'Storage access policy: Block cookies from trackers' +slug: Mozilla/Firefox/Privacy/Storage_access_policy +tags: + - NeedsTranslation + - Privacy + - TopicStub + - storage access policy + - tracking protection +translation_of: Mozilla/Firefox/Privacy/Storage_access_policy +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Firefox includes a new storage access policy that blocks cookies and other site data from third-party tracking resources. This new policy is designed as an alternative to the <a href="/en-US/docs/Mozilla/Cookies_Preferences">current policies</a>, which have been available in Firefox for many years. The new policy protects against cross-site tracking while minimizing the site breakage associated with traditional cookie blocking. This article explains how the new policy works and how you can test it.</p> + +<h2 id="Testing_in_Firefox">Testing in Firefox</h2> + +<p>You can test how your website works under the new policy in Firefox version 63+. Those who want to test the absolute newest version of the policy can download <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a>, but note that Nightly may include versions of the policy that end up changing before they reach our Release users. You can enable it through the “Content Blocking” menu in the <a href="https://support.mozilla.org/en-US/kb/control-center-site-privacy-and-security-firefox">Control Center</a> in Firefox:</p> + +<ul> + <li>Open up any version of Firefox version 63 or above. (for those who want to test the newest policy revision: download, install, and open up <a href="https://www.mozilla.org/en-US/firefox/channel/desktop/#nightly">Firefox Nightly</a>.)</li> + <li>Open the Content Blocking menu in the Control Center.</li> + <li>Click "Add Blocking…" next to "Third-party Cookies".</li> + <li>On the page that follows check "Third-party Cookies" and set the radio button to "Trackers".</li> +</ul> + +<p>As this is an experimental policy, it will likely change as we discover site breakage and fix bugs. We’ll keep this page updated with the newest information.</p> + +<h3 id="Report_Broken_Sites">Report Broken Sites</h3> + +<p>If you find a website broken as a result of this change, file a bug under the Tracking Protection component within the Firefox product on <a href="https://bugzilla.mozilla.org/enter_bug.cgi?assigned_to=nobody%40mozilla.org&blocked=1480137&bug_file_loc=http%3A%2F%2F&bug_ignored=0&bug_severity=normal&bug_status=NEW&cf_fx_iteration=---&cf_fx_points=---&cf_platform_rel=---&cf_status_firefox62=---&cf_status_firefox63=---&cf_status_firefox64=---&cf_status_firefox_esr60=---&cf_status_geckoview62=---&cf_tracking_firefox62=---&cf_tracking_firefox63=---&cf_tracking_firefox64=---&cf_tracking_firefox_esr60=---&cf_tracking_firefox_relnote=---&cf_tracking_geckoview62=---&component=Tracking%20Protection&contenttypemethod=list&contenttypeselection=text%2Fplain&defined_groups=1&flag_type-203=X&flag_type-37=X&flag_type-41=X&flag_type-5=X&flag_type-607=X&flag_type-721=X&flag_type-737=X&flag_type-748=X&flag_type-787=X&flag_type-799=X&flag_type-800=X&flag_type-803=X&flag_type-835=X&flag_type-846=X&flag_type-855=X&flag_type-864=X&flag_type-914=X&flag_type-916=X&flag_type-929=X&flag_type-930=X&flag_type-933=X&form_name=enter_bug&maketemplate=Remember%20values%20as%20bookmarkable%20template&op_sys=Unspecified&priority=--&product=Firefox&rep_platform=Unspecified&target_milestone=---&version=unspecified">Bugzilla</a>. Alternatively you can report a broken sites directly in Firefox by clicking "Report a Problem" in the Content Blocking section of the Control Center.</p> + +<p><img alt="diagram showing the report a problem button within the Content Blocking section of the Control Center" src="https://mdn.mozillademos.org/files/16249/control_center_report_problem.png" style="height: 475px; width: 509px;"></p> + +<h2 id="Tracking_protection_explained">Tracking protection explained</h2> + +<p>How does Firefox determine which resources are tracking resources?</p> + +<p>Firefox uses the Tracking Protection list to determine which resources are tracking resources. The Tracking Protection list is <a href="https://github.com/disconnectme/disconnect-tracking-protection/issues">maintained by Disconnect</a>. When the list is applied in Firefox, we make two important changes:</p> + +<ul> + <li>First, we only use the "Basic Protection" version of the list, which <a href="https://github.com/mozilla-services/shavar-prod-lists#blacklist">excludes some categories of trackers</a>. In the future, we may expand our protections to use the "Strict Protection" version of the list.</li> + <li>Second, Firefox uses an additional "<a href="https://github.com/mozilla-services/shavar-prod-lists/blob/master/disconnect-entitylist.json">entity list</a>", which prevents <a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">domains from being classified as trackers when they are loaded on a top-level site owned by the same organization</a>.</li> +</ul> + +<p>Firefox uses the built-in <a href="https://support.mozilla.org/en-US/kb/tracking-protection">Tracking Protection</a> URL classifier to determine which resources match the tracking protection list. Domains are matched against the list in accordance with the <a href="https://developers.google.com/safe-browsing/v4/urls-hashing#suffixprefix-expressions">SafeBrowsing v4 specification</a>. Specifically, we check the exact hostname of the resource against the list, as well as the last four hostnames formed by starting with the last five components and successively removing the leading component. Consider the following examples:</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Hostname on the list</th> + <th scope="col">Hostname of resource</th> + <th scope="col">Matched</th> + </tr> + </thead> + <tbody> + <tr> + <td><code>example.com</code></td> + <td><code>example.com</code></td> + <td>Yes</td> + </tr> + <tr> + <td><code>example.com</code></td> + <td><code>a.b.example.com</code></td> + <td>Yes</td> + </tr> + <tr> + <td><code>blah.example.com</code></td> + <td><code>example.com</code></td> + <td>No</td> + </tr> + <tr> + <td><code>a.b.example.com</code></td> + <td><code>c.d.example.com</code></td> + <td>No</td> + </tr> + <tr> + <td><code>blah.example.com</code></td> + <td><code>foo.blah.example.com</code></td> + <td>Yes</td> + </tr> + </tbody> +</table> + +<h2 id="What_does_the_storage_access_policy_block">What does the storage access policy block?</h2> + +<p>The storage access policy blocks resources identified as trackers from accessing their cookies and other site storage when they are loaded in a third-party context. This prevents those resources from retrieving tracking identifiers stored in cookies or site storage and using them to identify users across visits to multiple first parties. Specifically, Firefox does this by imposing the following restrictions:</p> + +<p>Cookies:</p> + +<ul> + <li>Block {{httpheader("Cookie")}} request headers and ignore {{httpheader("Set-Cookie")}} response headers.</li> + <li>Return an empty string for calls to {{domxref("Document.cookie")}} and ignore requests to set cookies via <code>Document.cookie</code>.</li> +</ul> + +<p>DOM Storage:</p> + +<ul> + <li><a href="/en-US/docs/Web/API/Web_Storage_API">localStorage</a>: window.localStorage is null. Thus, attempts to read and write using this object will throw a <code>TypeError</code> exception</li> + <li><a href="/en-US/docs/Web/API/Web_Storage_API">sessionStorage</a>: read and write attempts are permitted.</li> + <li><a href="/en-US/docs/Web/API/IndexedDB_API">IndexedDB</a>: read and write attempts throw a <code>SecurityError</code> exception.</li> +</ul> + +<p>Messaging and Workers:</p> + +<ul> + <li><a href="/en-US/docs/Web/API/Broadcast_Channel_API">Broadcast Channel</a>: attempts to create a new {{domxref("BroadcastChannel")}} will throw a <code>SecurityError</code> exception.</li> + <li><a href="/en-US/docs/Web/API/Web_Workers_API">Shared Worker</a>: attempts to create a new {{domxref("SharedWorker")}} will throw a <code>SecurityError</code> exception.</li> + <li><a href="/en-US/docs/Web/API/Service_Worker_API">Service Worker</a>: attempts to create a new {{domxref("ServiceWorker")}} will throw a <code>SecurityError</code> exception.</li> +</ul> + +<p>DOM Cache:</p> + +<ul> + <li>Calls to {{domxref("CacheStorage")}} will always reject with a <code>SecurityError</code>.</li> +</ul> + +<p>Browser caches:</p> + +<ul> + <li>The <a href="/en-US/docs/Mozilla/HTTP_cache">HTTP cache</a> and the Image cache are partitioned for tracking resources, such that each top-level origin will have a separate partition and tracking resources on different top-level origins will be cached separate from each other.</li> +</ul> + +<h3 id="What_is_not_blocked_by_the_policy">What is not blocked by the policy?</h3> + +<ol> + <li>This policy does not currently restrict third-party storage access for resources that are not classified as tracking resources. We may choose to apply additional restrictions to third-party storage access in the future.</li> + <li>The restrictions applied by the policy will not prevent third-party scripts classified as tracking resources from accessing storage in the main context of the page. These scripts can continue to use storage scoped to the top-level origin.</li> + <li>Origins classified as trackers will have access to their own storage when they are loaded in a first-party context.</li> + <li>Cross-origin resources loaded from the same eTLD+1 as the top-level context will still have access to their storage.</li> + <li>Origins normally classified as trackers will <a href="https://github.com/mozilla-services/shavar-prod-lists#entity-list">not be blocked if the top-level page origin is determined to be from the same organization as them</a>.</li> +</ol> + +<h2 id="Storage_access_grants">Storage access grants</h2> + +<p>In order to improve web compatibility and permit third-party integrations that require storage access, Firefox will grant storage access scoped to the first party for a particular third-party origin as described in this section. Currently, Firefox includes some web compatibility heuristics that grant storage access to third-party resources classified as trackers when a user interacts with those third parties. We do this when we expect that not granting access would cause the web page to break. We also support an initial implementation of the <a href="https://developer.mozilla.org/en-US/docs/Web/API/Storage_Access_API">Storage Access API</a>, through which embedded {{htmlelement("iframe")}}s can request storage access by calling {{domxref("Document.requestStorageAccess()")}}. Although both of these approaches provide the same level of storage access, we recommend third parties switch to using the Storage Access API in order to guarantee their access to storage.</p> + +<h3 id="Automatic_storage_access_upon_interaction">Automatic storage access upon interaction</h3> + +<p>In order to improve web compatibility, Firefox currently includes some heuristics to grant storage access automatically to third parties that receive user interaction. These heuristics are intended to allow some third-party integrations that are common on the web to continue to function. They are intended to be temporary and will be removed in a future version of Firefox. They should not be relied upon for current and future web development.</p> + +<p>Third-party storage access may be granted to resources that have been classified as tracking resources when a user gesture triggers a pop-up window that has <a href="/en-US/docs/Web/API/Window/opener">opener access</a> to the originating document. When that occurs, there are two possible ways a third-party origin can be granted access:</p> + +<ul> + <li>The origin of the resource that is initially loaded in the pop-up window is granted storage access on the opener document if that origin has received user interaction as a first party within the past 30 days.</li> + <li>After the initial resource is loaded in the pop-up window, the window may go through a series of redirects to other hosts. If a user interacts with the pop-up window following a redirect, the origin of the content loaded in the pop-up window is given storage access on the opener document.</li> +</ul> + +<h3 id="Scope_of_storage_access">Scope of storage access</h3> + +<p>When storage access is granted, it is scoped to the origin of the opener document or subdomains of that origin. Access that is granted on the subdomain of an origin does not extend to the top-level origin. As an example, if a resource from <code>tracker.example</code> is granted storage access on <code>foo.example.com</code>, then <code>tracker.example</code> will be able to access its cookies on <code>bar.foo.example.com</code> but not <code>example.com</code>. Instead, if <code>tracker.example</code> were granted access on <code>example.com</code> it would be able to access its storage on <code>bar.foo.example.com</code>, <code>foo.example.com</code>, and <code>example.com</code>.</p> + +<p>When storage access is granted to <code>tracker.example</code> on <code>example.com</code>, all resources loaded from <code>tracker.example</code> on any top-level document loaded from <code>example.com</code> are immediately given storage access. This includes all resources loaded in the main context of the page, embedded <code><iframe></code>s, and resources loaded within embedded <code><iframe></code>s. Storage access is not extended to other resources loaded on <code>example.com</code> (e.g. <code>other-tracker.example</code>), nor to other first parties on which <code>tracker.example</code> is embedded (e.g. <code>example.org</code>).</p> + +<p>Storage access grants extend into the first level of nested contexts, but no further. This means that <code><iframe></code>s embedded in the main context of the page and loaded from a domain classified as a tracker will have full access to all storage locations accessible through JavaScript. Similarly, requests for resources loaded in <code><iframe></code>s embedded in the main context of the page will have access to HTTP cookies. However, further nested contexts, including but not limited to those from the origin classified as a tracker, will not be granted storage access.</p> + +<p>Consider the following embedding scenarios on a top-level page loaded from <code>example.com</code> on which <code>tracker.example</code> has been granted storage access.</p> + +<table class="standard-table"> + <thead> + <tr> + <th scope="col">Embedding</th> + <th scope="col">tracker.example resource storage access</th> + </tr> + </thead> + <tbody> + <tr> + <td>An image is loaded from <code>tracker.example</code> and embedded in the main context of <code>example.com</code>.</td> + <td>HTTP: Yes<br> + JS: N/A</td> + </tr> + <tr> + <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.org</code>. That <code><iframe></code> goes on to load an image from <code>tracker.example</code>.</td> + <td>HTTP: Yes<br> + JS: N/A</td> + </tr> + <tr> + <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.org</code>. That <code><iframe></code> goes on to embed an <code><iframe></code> from <code>tracker.example</code>.</td> + <td>HTTP: Yes<br> + JS: No</td> + </tr> + <tr> + <td><code>example.com</code> embeds an <code><iframe></code> from <code>tracker.example</code>.</td> + <td>HTTP: Yes<br> + JS: Yes</td> + </tr> + <tr> + <td><code>example.com</code> embeds an <code><iframe></code> from <code>example.com</code> (same origin). The nested <code><iframe></code> embeds an <code><iframe></code> from <code>tracker.example</code>.</td> + <td>HTTP: Yes<br> + JS: No</td> + </tr> + </tbody> +</table> + +<h3 id="Storage_access_expiration">Storage access expiration</h3> + +<p>The storage access grant expires after 30 days. Domains classified as tracking resources may be granted third-party storage access on multiple first parties, and the storage permission for each party expires independently. The above heuristics will also serve to extend the lifetime of a third-party storage permission on origins that have already been granted access. Each time the heuristic is activated, or a success call to the Storage Access API is made, the pre-existing storage access expiration will be extended by 30 days, counting from the time the previous access was granted.</p> + +<p>Please note that in the future we expect to make changes to how long storage access will remain valid for. As mentioned before, the way to know that you will be able to use storage as a third-party going forward will be using the Storage Access API.</p> + +<h2 id="Debugging">Debugging</h2> + +<p>We encourage site owners to test their sites, particularly those that rely on third-party content integrations. We’ve added several new features to Firefox to make testing easier.</p> + +<h3 id="Developer_Tools_notifications">Developer Tools notifications</h3> + +<p>The <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> in Firefox Developer Tools now includes an indicator for all resource requests that have been classified as tracking resources. This indicator is shown as a shield icon in the domain column. In the sample image below, <code>trackertest.org</code> is classified as a tracking resource, while the request to example.com is not.</p> + +<p><img alt="network requests in Firefox devtools indicating which ones are tracking resources with a small shield icon" src="https://mdn.mozillademos.org/files/16181/Screen_Shot_2018-09-21_at_10.34.22_AM.png" style="border-style: solid; border-width: 1px; display: block; height: 57px; margin: 0px auto; width: 600px;"></p> + +<h3 id="Adding_custom_domains_to_the_Tracking_Protection_list">Adding custom domains to the Tracking Protection list</h3> + +<p>Curious how things will work if a third-party domain on your site were classified as a tracker? We’ve added a preference that allows you to add custom domains to the Tracking Protection URL classifier. To do so:</p> + +<ol> + <li>Type <code>about:config</code> in your address bar. If you are presented with a page that warns you "This may void your warranty!", click "I accept the risk!"</li> + <li>Right click on the next page and click "New" > "String".</li> + <li>For the preference name enter "urlclassifier.trackingAnnotationTable.testEntries".</li> + <li>For the preference value enter comma separated origins that you’d like to have classified as trackers. E.g. "example.net,example.org".</li> +</ol> + +<div class="warning"> +<p><strong>Warning</strong>: Be sure to remove these entries after you have finished testing.</p> +</div> + +<h2 id="FAQ">FAQ</h2> + +<p>This cookie policy has the potential to lead to site breakage, but has been designed to allow common third-party integrations to continue to work while preventing cross-site tracking. In this section we describe the functionality you can expect in different integration scenarios.</p> + +<h3 id="Will_this_storage_access_policy_block_ads_from_displaying_on_my_website">Will this storage access policy block ads from displaying on my website?</h3> + +<p>No — this feature only restricts access to cookies and site data that can be used to track users across websites. Blocking tracking identifiers does not prevent the display of advertisements.</p> + +<h3 id="I_use_a_third-party_analytics_service_that_is_classified_as_a_tracker._Will_I_still_receive_analytics_data">I use a third-party analytics service that is classified as a tracker. Will I still receive analytics data?</h3> + +<p>This depends on how the third-party analytics service is implemented. Third-party analytics providers will no longer be able to user their third-party storage to collect data. This means that providers using cookies which are scoped to their third-party domain, or local storage and other site data stored under their origin, will no longer have access to those identifiers across other websites.</p> + +<p>If these services are embedded into the main context of the page, they can continue to use first-party cookies and site storage to track users across page visits on that specific first-party domain.</p> + +<h3 id="I_use_third-party_services_for_social_login_like_and_share_button_integration._Will_my_users_still_be_able_to_make_use_of_these_services">I use third-party services for social login, like, and share button integration. Will my users still be able to make use of these services?</h3> + +<p>This depends on how the social integration is implemented. We expect that many of the popular social integrations will continue to function as they do under Firefox’s current cookie policy with some minor differences in the user experience.</p> + +<p>A social content provider that is classified as a tracker will not have access to their third-party cookies when the user first visits a new first party. Thus, the user may appear logged out to the service despite being logged in when they visit the provider’s website directly. Depending on the type of integration, the user may have to take some action to interact with the social content provider before the provider is given access to their cookies. For example:</p> + +<ul> + <li>For social login, the user may have to click a login button on the first party.</li> + <li>For social like or share buttons, the user will have to first interact with the button in a logged-out state. Once they do, many social content providers will prompt them to log in.</li> +</ul> + +<p>After these interactions, the provider will receive third-party storage access if they prompt the user in a way that is captured by the storage access activation heuristics described above. These providers should consider switching to explicitly request storage access through the Storage Access API as soon as possible. An <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1469714">initial implementation of this API</a> is currently available in Nightly.</p> + +<p> </p> + +<h3 id="I_use_third-party_pixels_and_other_tools_to_measure_the_effectiveness_of_my_ad_campaigns._Will_I_still_be_able_to_measure_the_conversion_rate_of_my_ads">I use third-party pixels and other tools to measure the effectiveness of my ad campaigns. Will I still be able to measure the conversion rate of my ads?</h3> + +<p>This depends on how the third party has implemented the measurement tool, but generally ad conversion measurement will be more difficult. Consider the following examples:</p> + +<ol> + <li>You run an ad on a social media website that is seen several times by a user, but never clicked. That user later visits your website, which includes a conversion tracking tag from the same social media website. This type of conversion is often referred to as a “view-through conversion.” Since the social media website does not have access to their third-party storage, they will not recognize the user as the same user that saw the advertisements on their website and the conversion will not be tracked. We expect that most view-through conversion tracking techniques will no longer work, including those offered by display networks.</li> + <li>You run an ad on a display network or social media website that is clicked by a user. That user lands on your website, which includes a conversion tracking tag from the same website that displayed your ad. This type of conversion is often referred to as a “click-through conversion.” Since the social media site or display network will not have access to their third-party storage, they will not recognize the user as the same user that saw the advertisements on their website and the conversion will not be tracked. We expect that this version of click-through conversion will no longer work.</li> + <li>You run an ad that appears on a social media website. A user clicks on your advertisement and is taken to a landing page that contains a conversion tracking tag from the third-party network. On the social media website, the network annotates the advertisement landing page URL with a query parameter that signals that the visit was the result of a click on an advertisement. On your website, the display network’s tag checks the URL query parameters and saves any ad tracking parameters to first-party storage. If a user later completes a conversion event, the network’s tag checks first-party storage to determine which click (or clicks) was responsible for the visit. We expect that click-through conversion implemented in this way will continue to work.</li> +</ol> + +<p> </p> + +<p> </p> diff --git a/files/es/mozilla/firefox/privacy/tracking_protection/index.html b/files/es/mozilla/firefox/privacy/tracking_protection/index.html new file mode 100644 index 0000000000..50dfda6984 --- /dev/null +++ b/files/es/mozilla/firefox/privacy/tracking_protection/index.html @@ -0,0 +1,80 @@ +--- +title: Protección contra el rastreo +slug: Mozilla/Firefox/Privacy/Tracking_Protection +tags: + - bloqueo + - navegación privada + - privacidad + - rastreo + - seguimiento +translation_of: Mozilla/Firefox/Privacy/Tracking_Protection +--- +<div>{{FirefoxSidebar}}</div><h2 id="¿Qué_es_la_protección_contra_el_rastreo">¿Qué es la protección contra el rastreo?</h2> + +<p>A partir de la versión 42, Firefox para PC y Firefox para Android cuentan con protección contra el rastreo integrada. En las ventanas de Navegación Privada (o pestañas privadas, en Firefox para Android), Firefox bloqueará el contenido de dominios que rastrean la navegación de los usuarios entre diferentes sitios.</p> + +<p>A veces, algunos contenidos bloqueados son parte de la estructura de la página, y los usuarios notarán problemas de disposición de elementos cuando Firefox realice estos bloqueos. Otras veces los usuarios no notarán nada, si la estructura de la página está diseñada de tal manera que los espacios vacíos dejados por los elementos bloqueados los ocupen otros contenidos.</p> + +<p>Cuando Firefox bloquee contenido, registrará un mensaje como el siguiente en la consola web:</p> + +<pre>The resource at "http://some/url" was blocked because tracking protection is enabled.</pre> + +<p>Nótese que en Firefox para Android uno puede acceder a la salida de la consola usando el depurador remoto.</p> + +<p>La interfaz de usuario de Firefox indica a los usuarios cuándo se ha producido un bloqueo de contenido y les permite desbloquearlo en esa sesión. Si lo desean, también pueden desactivar completamente la protección contra el rastreo. Descubre más en <a href="https://support.mozilla.org/es/kb/navegacion-privada-con-proteccion-contra-el-rastreo">este artículo.</a></p> + +<h2 id="¿Cómo_elige_Firefox_qué_bloquear">¿Cómo elige Firefox qué bloquear?</h2> + +<p>El contenido se bloquea en base al dominio desde el que se carga.</p> + +<p>Firefox se lanza junto con una lista de sitios en los que se ha detectado actividades de rastreo entre diferentes sitios web. Cuando la protección está activada, Firefox bloqueará el contenido de todos los sitios que se encuentran en esa lista.</p> + +<p>Por norma general,, los sitios que hacen este tipo de rastreo son analíticos y de publicidad de terceras partes.</p> + +<h2 id="¿Qué_significa_esto_para_tu_sitio">¿Qué significa esto para tu sitio?</h2> + +<p>Lo más común es que cuando la protección contra rastreo esté activada:</p> + +<ul> + <li>el contenido servido por rastreadores de terceros no será visible para los usuarios;</li> + <li>tu sitio no podrá usar publicidad de terceros o servicios de analíticas cuando estén haciendo seguimiento de tus usuarios.</li> +</ul> + +<p>Lo menos común es que si otras partes de tu sitio dependen de la carga de estos rastreadores, entonces estas partes no funcionarán cuando la protección esté habilitada. Por ejemplo, si tu sitio incluye una llamada (<em>callback</em>) que se ejecuta cuando se carga el contenido de un sitio que rastrea, entonces no se ejecutará esa llamada.</p> + +<p>Por ejemplo, no deberías usar Google Analytics de la siguiente forma:</p> + +<pre class="brush:html example-bad"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> +<script> +function trackLink(url,event) { + event.preventDefault(); + ga('send', 'event', 'outbound', 'click', url, { + 'transport': 'beacon', + 'hitCallback': function() { + document.location = url; + } + }); +} +</script></pre> + +<p>En cambio, deberías tener cuenta la posibilidad de que no se cargue Google Analytics. Para ello, comprueba si se ha iniciado el objeto <code>ga</code>:</p> + +<pre class="brush:html example-good"><a href="http://www.example.com" onclick="trackLink('http://www.example.com', event);">Visit example.com</a> +<script> +function trackLink(url,event) { + event.preventDefault(); + if (window.ga && <span class="pl-smi">ga</span>.loaded) { + ga('send', 'event', 'outbound', 'click', url, { + 'transport': 'beacon', + 'hitCallback': function() { document.location = url; } + }); + } else { + document.location = url; + } +} +</script> +</pre> + +<p>Encontrarás más información sobre esta técnica en <a href="https://hacks.mozilla.org/2016/01/google-analytics-privacy-and-event-tracking/">este artículo (en inglés).</a></p> + +<p>Nótese que, de cualquier manera, la dependencia de terceras partes no es una buena práctica, ya que implica que tu sitio no funcione si la tercera parte va lenta o es inaccesible, o si un complemento bloquea ese elemento rastreador.</p> diff --git a/files/es/mozilla/firefox/releases/30/index.html b/files/es/mozilla/firefox/releases/30/index.html new file mode 100644 index 0000000000..01c5be6cda --- /dev/null +++ b/files/es/mozilla/firefox/releases/30/index.html @@ -0,0 +1,92 @@ +--- +title: Firefox 30 for developers +slug: Mozilla/Firefox/Releases/30 +translation_of: Mozilla/Firefox/Releases/30 +--- +<div>{{FirefoxSidebar}}</div><p>Want to help document Firefox 30? See the <a class="external" href="http://beta.elchi3.de/doctracker/#list=fx&version=30.0">list of bugs that need to be written about</a> and pitch in!</p> + +<h2 id="Cambios_para_los_Desarrolladores_Web">Cambios para los Desarrolladores Web</h2> + +<h3 id="Herramientas_para_Desarrolladores">Herramientas para Desarrolladores</h3> + +<ul> + <li>Ha sido implementado el Modelo de Caja Resaltado (Box Model Highlighter) ({{bug(663778)}}).</li> + <li>En cualquier parte el nodo DOM aparece en la salida de la consola, se resalta cuando se encima la salida de esa consola ({{bug(757866)}}). Sucede lo mismo con todas las funciones y objetos JS, son resaltados en la salida de la consola ({{bug(584733)}}). Más información acerca de las mejoras de la consola pueden econtrarse en el siguiente <a href="http://www.robodesign.ro/mihai/blog/web-console-improvements-episode-30">post del blog</a>.</li> + <li>Sopoerte para {{domxref("Console.count()")}} ha sido agregado ({{bug(922208)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>La propiedad {{cssxref("background-blend-mode")}} ha sido habilitada por defecto ({{bug(970600)}}).</li> + <li>La propiedad no estándar {{cssxref("overflow-clip-box")}} ha sido implementada para utilizarse solamente en las hojas de estilo UA ({{bug(966992)}}).</li> + <li>La propiedad {{cssxref("line-height")}} afecta ahora a las entradas de lineas de texto sencillas (<code><input type=text|password|email|search|tel|url|unknown></code> types) aunque no puede reducir su tamaño por debajo de una altura de la línea de <code>1.0</code> ({{bug(349259)}}).</li> + <li>La propiedad {{cssxref("line-height")}} ahora también afecta el <code>type=button</code>, sin restricciones ({{bug(697451)}}).</li> + <li>El cambio al nombre de los keyframes no afecta los elementos actuales ({{bug(978648)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p><em>Sin cambios.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>New ES6-compatible <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Array_comprehensions">array comprehensions</a> <code>[for (item of iterable) item]</code> and <a href="/en-US/docs/Web/JavaScript/Reference/Operators/Generator_comprehensions">generator comprehensions</a> <code>(for (item of iterable) item)</code> have been implemented ({{bug(979865)}}).</li> + <li><a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/TypedArray#Property_access">Typed arrays</a> are now extensible and support new named properties ({{bug(695438)}}).</li> + <li>The {{jsxref("Error.prototype.stack")}} property now contains column numbers ({{bug(762556)}}) and has been improved <a href="/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error/Stack#Stack_of_eval'ed_code">when using <code>Function()</code> and <code>eval()</code> calls</a>. This can help you to better debug minified or generated JavaScript code.</li> + <li>The <code>Promise.cast()</code> method has been renamed to {{jsxref("Promise.resolve()")}} ({{bug(966348)}}).</li> +</ul> + +<h3 id="InterfacesAPIsDOM">Interfaces/APIs/DOM</h3> + +<ul> + <li>{{domxref("Navigator.sendBeacon")}} has been implemented, easing telemetry collection ({{bug(936340)}}).</li> + <li>Added a <code>relList</code> property returning a {{domxref("DOMTokenList")}} to {{domxref("HTMLLinkElement")}}, {{domxref("HTMLAreaElement")}} and {{domxref("HTMLAnchorElement")}} ({{bug(968637)}}).</li> + <li>As per the latest specification, the first argument of {{domxref("OscillatorNode.start")}} and {{domxref("OscillatorNode.stop")}} is now optional and defaults to <code>0</code> ({{bug(982541)}}).</li> + <li>The method {{domxref("Navigator.requestWakeLock()")}} and the non-standard {{domxref("MozWakeLock")}} are no longer available from the Web on Desktop ({{bug(963366)}}).</li> + <li>The <code>DOM_VK_ENTER</code> constant has been removed from {{domxref("KeyboardEvent")}} ({{bug(969247)}}).</li> + <li>Web components' {{domxref("Document.register")}} has been adapted to follow the behavior described in the latest version of the specification ({{bug(856140)}}).</li> + <li>Basic support for Hit regions on canvas has been added: the methods {{domxref("CanvasRenderingContext2D.addHitRegion()")}} and {{domxref("CanvasRenderingContext2D.removeHitRegion()")}} have been added. These are disabled by default; to activate them set the preference <code>canvas.hitregions.enabled</code> to <code>true</code>. ({{bug(966591)}})</li> + <li>The non-standard, and deprecated since Firefox 15, {{domxref("Blob.mozSlice")}} is no longer supported ({{bug(961804)}}).</li> + <li>The non-standard {{domxref("ArchiveReader")}} and {{domxref("ArchiveRequest")}} are no longer exposed to the Web ({{bug(968883)}}).</li> + <li><a href="http://dxr.mozilla.org/mozilla-central/source/dom/webidl/">WebIDL constructors</a> cannot be called as functions anymore. They need to be preceded by the keyword <code>new</code>. ({{bug(916644)}})</li> + <li>Added support for a new value (<code>alpha</code>) for the second, optional, parameter of the {{domxref("Canvas.getContext()")}} method allowing to define if alpha blending must be stored or not for this context. When not, the per-pixel alpha value in this store is always <code>1.0</code>. This allows the back-end to implement a fast-track. ({{bug(982480)}})</li> + <li>{{domxref("GlobalWorkerScope.consle")}} now returns for the regular {{domxref("Console")}}; {{domxref("WorkerConsole")}} has been removed ({{bug(965860)}}).</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<p><em>No change.</em></p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>{{SVGElement("feDropShadow")}}, and its interface {{domxref("SVGFEDropShadowElement")}}, from the Filter Effects Module are now supported ({{bug(964200)}}).</li> +</ul> + +<h3 id="AudioVideo">Audio/Video</h3> + +<ul> + <li>On Linux, Gstreamer 1.0 is now supported (instead of 0.10) ({{bug(806917)}}).</li> +</ul> + +<h2 id="Security">Security</h2> + +<p><em>No change.</em></p> + +<h2 id="Changes_for_add-on_and_Mozilla_developers">Changes for add-on and Mozilla developers</h2> + +<ul> + <li>The interface <code>nsIDOMWindowUtils</code> now supports the Boolean attribute <code>audioMuted</code> and <code>audioVolume</code>, a float in the range <code>[0.0</code> , <code>1.0]</code>, allowing to control the sound produced by a window (that is any tab or iframe). There is no UI for this, but is available to add-ons. ({{bug(923247)}})</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox/Releases/30/Site_Compatibility">Site Compatibility for Firefox 30</a></li> +</ul> + +<h3 id="Older_versions">Older versions</h3> + +<p>{{Firefox_for_developers('29')}}</p> diff --git a/files/es/mozilla/firefox/releases/50/index.html b/files/es/mozilla/firefox/releases/50/index.html new file mode 100644 index 0000000000..bac952686e --- /dev/null +++ b/files/es/mozilla/firefox/releases/50/index.html @@ -0,0 +1,203 @@ +--- +title: Firefox 50 para desarrolladores +slug: Mozilla/Firefox/Releases/50 +tags: + - Firefox + - Release Notes +translation_of: Mozilla/Firefox/Releases/50 +--- +<div>{{FirefoxSidebar}}</div> + +<p>Firefox 50 was released on November 15, 2016. This article lists key changes that are useful not only for web developers, but also Firefox and Gecko developers as well as add-on developers.</p> + +<h2 id="Cambios_para_desarrolladores_Web">Cambios para desarrolladores Web</h2> + +<ul> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>El estilo por defecto {{HTMLElement("bdo")}} ahora asigna {{cssxref("unicode-bidi")}} con el valor <code>isolate-override</code> ({{bug(1249497)}}).</li> + <li>Asignar el atributo {{htmlattrxref("src", "track")}} del elemento {{HTMLElement("track")}} ahora funciona correctamente ({{bug(1281418)}}).</li> + <li>El atributo <code>referrerpolicy</code> en los elementos {{HTMLElement("area")}}, {{HTMLElement("a")}}, {{HTMLElement("img")}}, {{HTMLElement("iframe")}} y {{HTMLElement("link")}} ahora está disponible por defecto ({{bug(1223838)}}, {{bug(1264165)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Esquinas con estilos punteados y rayados (<code>dashed, dotted</code>) Border-radiused ahora son mostradas con el estilo especificado en lugar de estilo sólido ({{bug(382721)}}).</li> + <li>El selector pseudo-clase no estándar {{cssxref(":-moz-full-screen-ancestor")}} fue removido ({{bug(1199529)}}).</li> + <li>{{cssxref("box-sizing")}}<code>: padding-box</code> fue removido, dado que ya no forma parte de la especificación y Firefox era el unico entre los principales navegadores que lo implementaba ({{bug(1166728)}}).</li> + <li>Se removió el prefijo de los tres valores <code>isolate</code>, <code>isolate-override</code>, y <code>plaintext</code> de la propiedad {{cssxref("unicode-bidi")}} ({{bug(1141895)}}).</li> + <li>En modo de compatibilidad, la etiqueta de un elemento de lista ahora hereda el tamaño de la lista, como en el modo estandar ({{bug(648331)}}).</li> + <li>Las pseudo-clases {{cssxref(":in-range")}} y {{cssxref(":out-of-range")}} cambiaron su comportamiento para no coincidir elementos input deshabilitados o de solo lectura ({{bug(1264157)}}).</li> + <li>Se removió el prefijo de la pseudo-clase {{cssxref(":any-link")}}({{bug(843579)}}).</li> + <li>El valor <code>space</code> para {{cssxref("border-image-repeat")}} fue implementado ({{bug(720531)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>La propiedad del ES2015 {{jsxref("Symbol.hasInstance")}} ha sido implementada ({{bug(1054906)}}).</li> + <li>El método de ES2017 {{jsxref("Object.getOwnPropertyDescriptors()")}} ha sido implementado ({{bug(1245024)}}).</li> + <li>El comportamiento de \W in {{jsxref("RegExp")}} con los flags unicode e ignoreCase cambió para estar de acuerdo con el borrador mas reciente de la especificación. Ahora no coincide con K, S, k, s, and KELVIN SIGN (U+212A), y LATIN SMALL LETTER LONG S (U+017F) ({{bug(1281739)}}).</li> +</ul> + +<h3 id="Herramientas_de_desarrollador">Herramientas de desarrollador</h3> + +<ul> + <li><a href="https://developer.mozilla.org/es/docs/Tools/Web_Console/Console_messages#Source_maps">La consola Web ahora entiende los source maps.</a></li> + <li><a href="https://developer.mozilla.org/es/docs/Tools/Storage_Inspector#IndexedDB">El inspector de almacenamiento ahora permite borrar elementos individuales desde los objetos de almacenamiento de IndexedDB.</a></li> + <li><a href="https://developer.mozilla.org/es/docs/Tools/Memory">La herramienta de memoria está habilitada por defecto.</a></li> + <li><a href="https://developer.mozilla.org/es/docs/Tools/Page_Inspector/UI_Tour#Computed_view">La panel de "Modelo de caja" fue movido al panel lateral Computado.</a></li> + <li><a href="https://developer.mozilla.org/es/docs/Tools/Web_Console/Console_messages#Viewing_network_request_details">La consola Web ahora muestra las trazas de pila para las peticiones de red XHR o Fetch().</a></li> + <li> + <p><a class="external external-icon" href="https://bugzilla.mozilla.org/buglist.cgi?list_id=13263766&chfield=resolution&chfieldfrom=2016-06-06&chfieldvalue=FIXED&resolution=FIXED&classification=Client%20Software&chfieldto=2016-08-01&query_format=advanced&bug_status=RESOLVED&bug_status=VERIFIED&component=Developer%20Tools&component=Developer%20Tools%3A%20about%3Adebugging&component=Developer%20Tools%3A%20Animation%20Inspector&component=Developer%20Tools%3A%20Canvas%20Debugger&component=Developer%20Tools%3A%20Computed%20Styles%20Inspector&component=Developer%20Tools%3A%20Console&component=Developer%20Tools%3A%20CSS%20Rules%20Inspector&component=Developer%20Tools%3A%20Debugger&component=Developer%20Tools%3A%20DOM&component=Developer%20Tools%3A%20Font%20Inspector&component=Developer%20Tools%3A%20Framework&component=Developer%20Tools%3A%20Graphic%20Commandline%20and%20Toolbar&component=Developer%20Tools%3A%20Inspector&component=Developer%20Tools%3A%20JSON%20Viewer&component=Developer%20Tools%3A%20Memory&component=Developer%20Tools%3A%20Netmonitor&component=Developer%20Tools%3A%20Object%20Inspector&component=Developer%20Tools%3A%20Performance%20Tools%20%28Profiler%2FTimeline%29&component=Developer%20Tools%3A%20Responsive%20Design%20Mode&component=Developer%20Tools%3A%20Scratchpad&component=Developer%20Tools%3A%20Shared%20Components&component=Developer%20Tools%3A%20Source%20Editor&component=Developer%20Tools%3A%20Storage%20Inspector&component=Developer%20Tools%3A%20Style%20Editor&component=Developer%20Tools%3A%20User%20Stories&component=Developer%20Tools%3A%20Web%20Audio%20Editor&component=Developer%20Tools%3A%20WebGL%20Shader%20Editor&component=Developer%20Tools%3A%20WebIDE&product=Firefox">Todos los bugs corregidos entre Firefox 49 y Firefox 50</a>.</p> + </li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>El protocolo experimental (y obsoleto) <a href="https://es.wikipedia.org/wiki/SPDY">SPDY</a> 3.1 ahora está deshabilitado por defecto {{bug(1287132)}}.</li> + <li>Se añadió soporte para {{HTTPHeader("X-Content-Type-Options")}} ({{bug(471020)}}).</li> + <li>Los prefijos de cookies <strong><code>__Host-</code></strong> and <strong><code>__Secure-</code></strong> han sido implementados. Ver {{HTTPHeader("Set-Cookie")}} y {{bug(1283368)}}.</li> + <li>El encabezado {{HTTPHeader("Referrer-Policy")}} ha sido implementado {{bug(1264164)}}.</li> +</ul> + +<h3 id="Seguridad">Seguridad</h3> + +<ul> + <li>El atributo {{htmlattrxref("ping", "a")}} del elemento {{htmlelement("a")}} ahora se apega al <code><a href="https://developer.mozilla.org/es/docs/Web/Security/CSP/CSP_policy_directives#connect-src">connect-src</a></code> <a href="https://developer.mozilla.org/es/docs/Web/Security/CSP/CSP_policy_directives">CSP 1.1 policy directive</a> ({{bug(1100181)}}).</li> + <li>Agregado soporte para la directiva <code><a href="https://developer.mozilla.org/es/docs/Web/Security/CSP/CSP_policy_directives#sandbox">sandbox</a></code> <a href="/en-US/docs/Web/Security/CSP">CSP</a> ({{bug(671389)}}).</li> + <li>Ahora es posible indicar una política <a href="/es/docs/Web/API/Web_Workers_API/Using_web_workers#Content_security_policy">content security policy for workers</a> ({{bug (959388)}}).</li> + <li>El método {{domxref("Navigator.sendBeacon()")}} ya no lanza una excepción si los datos de la baliza (Beacon Data) no pudieron ser enviados devido a una política de restricción consentimiento method <a href="/es/docs/Web/Security/CSP">Content Security Policy</a>; en su lugar, retorna <code>false</code> como es esperado ({{bug(1234813)}}).</li> +</ul> + +<h3 id="Redes">Redes</h3> + +<ul> + <li>Cuando un error es encontrado durante una {{domxref("XMLHttpRequest")}} asíncrona, el método {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} ahora retorna un string vacio ({{bug(1286744)}}).</li> + <li>En lugar de retornar un <code>NetworkError</code>, ahora el asynchronous {{domxref("XMLHttpRequest")}} asíncrono que falla por CORS u otras restricciones de red, ahora lanza un {{event("error")}} que puede ser capturado como cualquier otro error ({{bug(709991)}}).</li> + <li>{{domxref("XMLHttpRequest.getResponseHeader()")}} y {{domxref("XMLHttpRequest.getAllResponseHeaders()")}} ahora también retornan encabezados vacíos por defecto. Esto puede ser controlado mediante la preferencia <code>network.http.keep_empty_response_headers_as_empty_string</code> ({{bug(918721)}}).</li> + <li>La opción <code>only-if-cached</code> fue agregada a <code><a href="https://developer.mozilla.org/es/docs/Web/API/Request/cache">Request.cache</a></code> ({{bug(1272436)}}).</li> +</ul> + +<h3 id="DOM">DOM</h3> + +<ul> + <li>Ahora la opción <code>once</code> para {{domxref("EventTarget.addEventListener()")}} es soportada ({{bug(1287706)}}).</li> + <li>La interfaz {{domxref("NodeList")}} are now iterable and the methods {{domxref("NodeList.forEach()", "forEach()")}}, {{domxref("NodeList.values()", "values()")}}, {{domxref("NodeList.entries()")}} and {{domxref("NodeList.keys()")}} are now available ({{bug(1290636)}}).</li> + <li>The interface {{domxref("DOMTokenList")}} are now iterable and the methods {{domxref("DOMTokenList.forEach()", "forEach()")}}, {{domxref("DOMTokenList.values()", "values()")}}, {{domxref("DOMTokenList.entries()")}} and {{domxref("DOMTokenList.keys()")}} are now available ({{bug(1290636)}}).</li> + <li>The methods {{domxref("Document.createElement()")}} and {{domxref("Document.createElementNS()")}} now have an optional <code>options</code> parameter for creating <a href="/en-US/docs/Web/Web_Components/Custom_Elements">custom elements</a> ({{bug(1276579)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>The <code>allowReorder</code> attribute has been dropped and the behavior it was setting is now the default for SVG {{SVGElement("switch")}} elements ({{bug(1279690)}}).</li> + <li>The <code>defer</code> keyword for the {{SVGAttr("preserveAspectRatio")}} attribute on SVG {{SVGElement("image")}} elements has been removed to follow the latest SVG2 specification ({{bug(1280425)}}).</li> +</ul> + +<h3 id="Drag_and_Drop_API">Drag and Drop API</h3> + +<ul> + <li>The {{domxref("DataTransfer.items")}} property has been implemented, allowing access to multiple items being dragged and dropped using the HTML Drag and Drop API. To allow this, the {{domxref("DataTransferItem")}} and {{domxref("DataTransferItemList")}} interfaces are now supported as well ({{bug(906420)}}). This is enabled by default.</li> + <li>The old, obsolete Firefox specific drag and drop API events <code>dragdrop</code> and <code>draggesture</code> are no longer supported. Be sure to update any code still using them to use the <a href="/en-US/docs/Web/API/HTML_Drag_and_Drop_API">HTML drag and drop API</a> ({{bug(1162050)}}.</li> +</ul> + +<h3 id="Pointer_Lock_API">Pointer Lock API</h3> + +<ul> + <li>The <a href="/en-US/docs/Web/API/Pointer_Lock_API">Pointer Lock API</a> is now unprefixed ({{bug(991899)}}).</li> + <li>Before Firefox 50, <code><a href="/en-US/docs/Web/API/Element/requestPointerLock">requestPointerLock()</a></code> asked for permission using a doorhanger, and pointer lock would not be enabled until the user granted permission. From Firefox 50, pointer lock is like the <a href="/en-US/docs/Web/API/Fullscreen_API">fullscreen API</a>: it's granted immediately, but a notification is displayed explaining to the user how to exit ({{bug(1273351)}}).</li> +</ul> + +<h3 id="IndexedDB">IndexedDB</h3> + +<ul> + <li>Ahora se envía un evento {{event("close")}} al objeto {{domxref("IDBDatabase")}} cuando la base de datos respectiva es cerrada de forma inesperada ({{bug(1151017)}}).</li> +</ul> + +<h3 id="Service_Workers">Service Workers</h3> + +<ul> + <li>The {{domxref("WindowClient.navigate()")}} method has been implemented. This method lets you open a specified URL into a client window which is being controlled by the service worker ({{bug(1218148)}}).</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>The {{domxref("EXT_shader_texture_lod")}} WebGL extension has been implemented ({{bug(1111689)}}).</li> + <li>The texImage methods have been updated for <a href="/en-US/docs/Web/API/WebGL2RenderingContext">WebGL 2</a> to implement PBOs (<code>PIXEL_UNPACK_BUFFER</code>) ({{bug(1280499)}}).</li> +</ul> + +<h3 id="WebRTC">WebRTC</h3> + +<ul> + <li>Adding a track to a {{domxref("MediaStream")}} now generates the {{event("addtrack")}} event as described in the specification. The event is of type {{domxref("MediaStreamTrackEvent")}} and is fired on the stream to which the track was added. You can use either {{domxref("EventTarget.addEventListener", "MediaStream.addEventListener('addtrack', ...)")}} or the {{domxref("MediaStream.onaddtrack")}} property to handle <code>"addtrack"</code> events.</li> + <li>The {{domxref("MediaStreamTrack")}} interface now supports the {{event("ended")}} event and the {{domxref("MediaStreamTrack.onended")}} event handler.</li> + <li>Firefox now supports the {{domxref("MediaStreamTrack.readyState")}} property, which indicates whether the track is live or permanently ended.</li> + <li>The {{domxref("MediaStreamTrack")}} methods {{domxref("MediaStreamTrack.getConstraints", "getConstraints()")}} and {{domxref("MediaStreamTrack.getSettings", "getSettings()")}} have been implemented; these let you get the most recently applied set of customized property constraints and the actual values of all of the track's constrainable properties, respectively. The accompanying data types have been documented as well.</li> + <li>The {{domxref("RTCDataChannel.stream")}} property has been removed. This was replaced with {{domxref("RTCDataChannel.id")}} in <a href="/en-US/docs/Mozilla/Firefox/Releases/24">Firefox 24</a>, but was supported for backward compatibility. Please be sure to update your code to use the <code>id</code> property if you haven't done so yet.</li> +</ul> + +<h3 id="Web_Audio_API">Web Audio API</h3> + +<ul> + <li>The {{domxref("PannerNode")}} interface now supports the 3D Cartesian space properties for the position ({{domxref("PannerNode.positionX")}}, {{domxref("PannerNode.positionY")}}, and {{domxref("PannerNode.positionZ")}}) and directionality ({{domxref("PannerNode.orientationX")}}, {{domxref("PannerNode.orientationY")}}, {{domxref("PannerNode.orientationZ")}}) of an audio source.</li> + <li>The interface {{domxref("IIRFilterNode")}}, which implements a general {{interwiki("wikipedia", "infinite impulse response")}} (IIR) filter, has been implemented.</li> + <li>Throttling in background tabs of timers created by {{domxref("WindowTimers.setInterval", "Window.setInterval()")}} and {{domxref("WindowTimers.setTimeout", "Window.setTimeout()")}} no longer occurs if a <a href="/en-US/docs/Web/API/Web_Audio_API">Web Audio API</a> {{domxref("AudioContext")}} is actively playing sound. This should help prevent issues with timing-sensitive audio playback (such as music players generating individual notes using timers) in the background ({{bug(1181073)}}).</li> +</ul> + +<h3 id="AudioVideo">Audio/Video</h3> + +<ul> + <li>The <code>AlignSetting</code> enum (representing possible values for {{domxref("VTTCue.align")}}) incorrectly previously included the value <code>"middle"</code> instead of <code>"center"</code>. This has been corrected ({{bug(1276130)}}).</li> + <li>The non-standard and experimental method {{domxref("HTMLMediaElement.seekToNextFrame()")}} now seeks to the next frame in the media asynchronously, rather than synchronously, and returns a {{jsxref("Promise")}} which resolves once the seek is complete.</li> + <li>The implementation of {{domxref("HTMLTrackElement")}} has been corrected to allow {{HTMLElement("track")}} elements to load resources even if not in a document ({{bug(871747)}}).</li> +</ul> + +<h3 id="API_de_batería">API de batería</h3> + +<ul> + <li>The {{domxref("navigator.battery")}} property, which has been deprecated since Firefox 43, is now obsolete and has been removed. Use the {{domxref("navigator.getBattery()")}} method instead to get a battery {{jsxref("Promise")}}, which will resolve when the {{domxref("BatteryManager")}} is available for use; the {{domxref("BatteryManager")}} is passed into the fulfillment handler for the promise ({{bug(12593355)}}).</li> +</ul> + +<h3 id="Archivos_y_directorios">Archivos y directorios</h3> + +<ul> + <li>A subset of the <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a> has been implemented, to improve compatibility with sites that were previously only compatible with Google Chrome ({{bug(1265767)}}). + + <ul> + <li>The asynchronous API interfaces have been implemented, with the caveat that only reading of files is supported; for example, the {{domxref("FileSystemFileEntry.createWriter()")}} method is a no-op.</li> + <li>These interfaces have been implemented: + <ul> + <li>{{domxref("FileSystem")}}</li> + <li>{{domxref("FileSystemEntry")}} (properties only; the methods have not been implemented)</li> + <li>{{domxref("FileSystemFileEntry")}} (except for {{domxref("FileSystemFileEntry.createWriter", "createWriter()")}})</li> + <li>{{domxref("FileSystemDirectoryEntry")}} (except for {{domxref("FileSystemDirectoryEntry.removeRecursively", "removeRecursively()")}})</li> + <li>{{domxref("FileSystemDirectoryReader")}}</li> + </ul> + </li> + <li>{{domxref("HTMLInputElement.webkitdirectory")}} as well as the {{HTMLattrxref("webkitdirectory", "input")}} attribute of the {{HTMLElement("input")}} element have been implemented; this lets you configure a file input to accept directories instead of files ({{bug(1258489)}}).</li> + <li>{{domxref("HTMLInputElement.webkitEntries")}} has been implemented; this returns an array of {{domxref("FileSystemEntry")}}-based objects representing the selected items.</li> + <li>{{domxref("File.webkitRelativePath")}} has been implemented; this contains the path of the file relative to the root of the containing {{domxref("FileSystemDirectoryEntry")}} that was among the items in the list returned by {{domxref("HTMLInputElement.webkitGetEntries()")}}.</li> + <li>See <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API/Firefox_support">File and Directory Entries API support in Firefox</a> for details about what we do and do not support in this API.</li> + <li>These APIs are now enabled by default; some were previously available but only behind a preference ({{bug(1288683)}}).</li> + </ul> + </li> + <li>We've implemented {{domxref("DataTransferItem.webkitGetAsEntry()")}} as part of the <a href="/en-US/docs/Web/API/File_and_Directory_Entries_API">File and Directory Entries API</a>; this lets you obtain a {{domxref("FileSystemEntry")}} representing a dropped file ({{bug(1289255)}}). This is enabled by default.</li> + <li>The <code>HTMLInputElement.directory</code> property, part of the <a href="https://wicg.github.io/directory-upload/proposal.html">Directory Upload API</a> proposal, has been renamed to <code>allowdirs</code> ({{bug(1288681)}}). This property is hidden behind a preference.</li> +</ul> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/50">Compatibilidad de sitios para Firefox 50</a></li> +</ul> + +<h2 id="Versiones_anteriores">Versiones anteriores</h2> + +<p>{{Firefox_for_developers(49)}}</p> diff --git a/files/es/mozilla/firefox/releases/57/index.html b/files/es/mozilla/firefox/releases/57/index.html new file mode 100644 index 0000000000..557684e1fa --- /dev/null +++ b/files/es/mozilla/firefox/releases/57/index.html @@ -0,0 +1,299 @@ +--- +title: Firefox Quantum 57 para programadores +slug: Mozilla/Firefox/Releases/57 +tags: + - '57' + - Firefox + - Notas de publicación +translation_of: Mozilla/Firefox/Releases/57 +--- +<div>{{FirefoxSidebar}}</div><p class="summary">Este artículo proporciona información sobre los cambios incluidos en Firefox 57 (también conocido como Firefox Quantum) que conciernen a los desarrolladores. Firefox 57 se disponibilizó al público el <a href="https://wiki.mozilla.org/RapidRelease/Calendar#Future_branch_dates">14 de noviembre de 2017</a>.</p> + +<h2 id="Firefox_57_Firefox_Quantum">Firefox 57 === Firefox Quantum</h2> + +<p>Hemos bautizado a Firefox 57 como <strong>Quantum</strong> por el proyecto de ingeniería <a href="https://wiki.mozilla.org/Quantum">Firefox Quantum</a>, cuyo objetivo ha sido el de reconstruir Firefox desde cero para darle un rendimiento y una estabilidad excelentes, así como mejorar su apariencia visual. Esta es la primera versión de Firefox en incluir algunos de estos cambios, así que quisimos conmemorar el acontecimiento.</p> + +<div class="note"> +<p><strong>Nota</strong>: para obtener más información sobre las funciones de Quantum incluidas en esta versión, consúltese el artículo <a href="https://hacks.mozilla.org/2017/09/firefox-quantum-developer-edition-fastest-firefox-ever/">«Firefox Quantum Developer Edition: el Firefox más rápido, con IU Photon y mejores herramientas»</a>, escrito por Dan Callahan.</p> +</div> + +<p><a href="https://hacks.mozilla.org/2017/08/inside-a-super-fast-css-engine-quantum-css-aka-stylo/">El nuevo procesador de CSS en paralelo de Firefox</a> ―también denominado <strong>Quantum CSS</strong> o <strong>Stylo</strong>― está activado de manera predeterminada en Firefox 57 para escritorio; las versiones para móviles darán el salto en el futuro. Los programadores no deberían notar ninguna diferencia importante, aparte de la amplia gama de mejoras de rendimiento. Sin embargo, existen algunas diferencias menores de funcionalidad en Stylo, las cuales se han implementado para corregir comportamientos no estándares de Gecko que habrían de desaparecer. Informaremos de esas diferencias en las páginas de referencia y en las notas de publicación según proceda (véanse {{anch("Notas sobre Quantum CSS")}}).</p> + +<article class="text-content" id="wikiArticle"> +<h2 id="Cambios_para_programadores_web">Cambios para programadores web</h2> + +<h3 id="Herramientas_de_desarrollo">Herramientas de desarrollo</h3> + +<p><em>No hay ningún cambio.</em></p> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Los tipos <a href="/en-US/docs/Web/HTML/Element/input/date">«date»</a> y <a href="/en-US/docs/Web/HTML/Element/input/time">«time»</a> de {{htmlelement("input")}} ya están activados en todas las compilaciones ({{bug("1399036")}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Ahora admitimos los valores <code>minimal-ui</code> y <code>standalone</code> de la consulta <code><a href="/en-US/docs/Web/CSS/@media/display-mode">display-mode</a></code> ({{bug(1369815)}}). Consúltese también el <a href="/en-US/docs/Web/Manifest#display">campo de manifiesto de aplicación web <code>display</code></a>.</li> + <li>Se corrigió un problema que causaba que la notación abreviada de la cuadrícula quedara restablecida al utilizar {{cssxref("grid-row-gap")}} y {{cssxref("grid-column-gap")}} ({{bug(1387410)}}).</li> + <li>Se ha eliminado la preferencia <code>layout.css.clip-path-shapes.enabled</code>, que permitía activar o desactivar la compatibilidad de {{cssxref("<basic-shape>")}} con {{cssxref("clip-path")}} ({{bug(1399767)}}).</li> +</ul> + +<h4 id="Notas_sobre_Quantum_CSS">Notas sobre Quantum CSS</h4> + +<ul> + <li>Los valores de degradados radiales tales como <code>radial-gradient(circle gold,red)</code> funcionan en el sistema de estilos de Gecko anterior, pero no debería por la coma faltante entre <code>circle</code> y <code>gold</code> ({{bug(1383323)}}). Quantum corrige este defecto.</li> + <li>Cuando se da animación a un elemento ubicado fuera de la pantalla y se establece un tiempo de retardo, Gecko no actualiza la visualización correctamente en algunas plataformas, como Windows ({{bug(1383239)}}). Esto ha quedado corregido en Quantum.</li> + <li>En Gecko, no es posible desplegar de manera predeterminada los elementos {{htmlelement("details")}} mediante el atributo <code>open</code> si tienen una propiedad {{cssxref("animation")}} activa ({{bug(1382124)}}). Quantum corrige este problema.</li> + <li>En Gecko, los efectos {{cssxref("transition", "transitions")}} no funcionan si se transiciona desde un {{cssxref("text-shadow")}} con un color especificado a un <code>text-shadow</code> sin ningún color ({{bug(726550)}}). Este comportamiento se ha corregido en Quantum.</li> + <li>En Gecko, cancelar una animación de relleno (p. ej., con <code>animation-fill-mode: forwards</code> definido) puede desencadenar un conjunto de transiciones en el mismo elemento, aunque únicamente una vez (véase el {{bug(1192592)}} y <a href="https://bug1192592.bmoattachments.org/attachment.cgi?id=8843824">estas pruebas</a> para más información). Por lo general, las animaciones declaratorias no deberían desencadenar animaciones. Esto se ha corregido en Quantum.</li> + <li>En Gecko, las animaciones que utilizan ems como unidad no reciben las modificaciones realizadas en {{cssxref("font-size")}} en el elemento padre del elemento animado, aunque deberían ({{bug(1254424)}}). Quantum CSS corrige esto.</li> + <li>Gecko además maneja la herencia de <code>font-size</code> de manera diferente a la de Quantum CSS, por lo que para algunas configuraciones de idioma, los tamaños de letra heredados quedaban más pequeños de lo esperado (véase {{bug(1391341)}}). Quantum corrige esto.</li> + <li>Gecko reutiliza el mismo mecanismo empleado al analizar una ficha de URL durante el análisis de las funciones <code>domain()</code> o <code>url-prefix()</code> para la regla {{cssxref("@document", "@-moz-document")}}. Quantum CSS no utiliza el mismo mecanismo y no considera las fichas como no válidas cuando contienen paréntesis o comillas ({{bug(1362333)}}).</li> + <li>En Gecko, cuando se define un tipo de letra del sistema como el valor del {{domxref("CanvasRenderingContext2D.font", "tipo de letra")}} de algún contexto del lienzo 2D (p. ej., <code>menu</code>), la obtención del valor del tipo de letra no devuelve el resultado correcto (no devuelve nada). Este problema quedó solucionado en Quantum. ({{bug(1374885)}}).</li> + <li>En Gecko, cuando se crea un subárbol desligado (p. ej., un {{htmlelement("div")}} creado a través de {{domxref("Document.createElement","createElement()")}} que todavía no se inserta en el DOM), el elemento raíz del subárbol se define como un elemento de nivel bloque. En Quantum CSS, el elemento se define como alineado, tal como se define en la especificación ({{bug(1374994)}}).</li> + <li>Gecko rechaza las expresiones {{cssxref("calc")}} ―lo que invalida el valor― cuando se utilizan como el componente radial de una función {{cssxref("radial-gradient")}} ({{bug(1376019)}}). Quantum CSS lo resuelve.</li> + <li>En Gecko, <code>calc(1*2*3)</code> no es analizado debidamente; Quantum CSS soluciona el problema ({{bug(1379467)}}).</li> + <li>En Quantum CSS, <a href="https://drafts.csswg.org/css-values-3/#calc-notation"><code>calc()</code> se admite en todos los sitios que la especificación indica</a> ({{bug(1350857)}}). En Gecko, este no es el caso.</li> + <li>Gecko contiene un defecto que provoca que los pseudoelementos {{cssxref("::before")}} y {{cssxref("::after")}} se generen aun si el valor de la propiedad {{cssxref("content")}} se define como <code>normal</code> o <code>none</code>. Este comportamiento es contrario a la especificación ({{bug(1387931)}}) y se ha corregido en Quantum.</li> + <li>Otro defecto de Gecko provoca que la propiedad {{cssxref("background-position")}} no pueda transicionarse entre dos valores que contengan números diferentes de valores {{cssxref("<position>")}}, por ejemplo, <code>background-position: 10px 10px;</code> y <code>background-position: 20px 20px, 30px 30px;</code> (véase {{bug(1390446)}}). Quantum resuelve el error.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No hay ningún cambio.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>El bucle no estándar {{jsxref("Statements/for_each...in", "for each...in")}} (E4X) fue eliminado. En su lugar, utilícese {{jsxref("Statements/for...of", "for...of")}} y consúltese <a href="/en-US/docs/Web/JavaScript/Reference/Errors/For-each-in_loops_are_deprecated">Atención: los bucles de JavaScript 1.6 «for-each-in» son obsoletos</a> para obtener ayuda en la migración. ({{bug(1083470)}}).</li> + <li>Se marcaron como obsoletos los métodos {{jsxref("Object.prototype.watch()")}} y {{jsxref("Object.unwatch", "unwatch()")}}. Se emitirá una alerta si se utilizan y serán eliminados en el futuro próximo ({{bug(934669)}}).</li> + <li>Se eliminaron los objetos {{jsxref("Iterator")}} y {{jsxref("StopIteration")}} y el protocolo de iteración heredado ({{bug(1098412)}}).</li> +</ul> + +<h3 id="API">API</h3> + +<h4 id="API_nuevas">API nuevas</h4> + +<ul> + <li>Se ha activado de manera predeterminada la API {{domxref("PerformanceObserver")}} ({{bug(1386021)}}).</li> + <li>Añadimos las interfaces {{domxref("AbortController")}} y {{domxref("AbortSignal")}} (conocidas como la API «Abort»), que permiten interrumpir las solicitudes del DOM (como las de <a href="/en-US/docs/Web/API/WindowOrWorkerGlobalScope/fetch">recuperación</a>) si así se desea ({{bug(1378342)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>Se ha implementado la propiedad {{domxref("Selection.type")}} de la <a href="/en-US/docs/Web/API/Selection_API">API Selection</a> ({{bug(1359157)}}).</li> + <li>Se admite {{domxref("Document.createEvent", "Document.createEvent('FocusEvent')")}} ahora ({{bug(1388069)}}).</li> + <li>La propiedad <code>files</code> de la interfaz {{domxref("HTMLInputElement")}} puede definirse ahora ({{bug(1384030)}}).</li> + <li>El método <code>HTMLDocument.getSelection()</code> se ha trasladado a la interfaz {{domxref("Document.getSelection","Document")}} para que quede disponible para los documentos XML ({{bug(718711)}}).</li> + <li>Hemos implementado el suceso {{Event("messageerror")}}, el cual puede ejecutar código tras su desencadenamiento por parte de manejadores de sucesos utilizados en destinos de mensajes. Véase {{domxref("MessagePort.onmessageerror")}}, {{domxref("DedicatedWorkerGlobalScope.onmessageerror")}}, {{domxref("Worker.onmessageerror")}}, {{domxref("BroadcastChannel.onmessageerror")}} y {{domxref("Window.onmessageerror")}} ({{bug(1359017)}}).</li> + <li>Cuando se emplea la iteración en valores {{domxref("Headers")}}, estos quedarán organizados en orden lexicográfico y se combinarán los valores de los nombres de cabeceras duplicados ({{bug(1396848)}}).</li> +</ul> + +<h4 id="Sucesos_de_DOM">Sucesos de DOM</h4> + +<p><em>No hay ningún cambio.</em></p> + +<h4 id="Multimedia_y_WebRTC">Multimedia y WebRTC</h4> + +<ul> + <li>Ahora se admiten mensajes de cualquier tamaño (hasta 1 GiB, aunque 256 kiB es más interoperativo) en {{domxref("RTCDataChannel")}} por medio del uso de la opción «end-of-record» (EOR) en los mensajes de SCTP. Consúltese {{SectionOnPage("/en-US/docs/Web/API/WebRTC_API/Using_data_channels", "Understanding message size limits")}} para obtener más información ({{bug(979417)}}). + <div class="note">Como Firefox aún no admite el protocolo ndata de SCTP, que permite intercalar mensajes de SCTP de varias fuentes, enviar objetos de datos grandes puede causar retardos importantes en el resto del tránsito SCTP. Véase el {{bug(1381145)}} para estar al tanto de la implementación de ndata en Firefox.</div> + </li> + <li>El método {{domxref("RTCDataChannel.send()")}} ahora puede emitir una excepción <code>TypeError</code> si el tamaño del mensaje que se intenta enviar no es compatible con el agente de usuario de destino (esto se implementó como parte del {{bug(979417)}}).</li> + <li>La <a href="/en-US/docs/Web/API/MediaStream_Recording_API">API MediaStream Recording</a> se ha actualizado de modo que los sucesos {{event("error")}} que se envíen para notificar problemas acaecidos durante la grabación son ahora del tipo {{domxref("MediaRecorderErrorEvent")}} en lugar de sucesos genéricos.</li> + <li>Se actualizó la documentación concerniente a {{domxref("OfflineAudioContext")}}, dado que sus entradas de constructores pueden especificarse ahora dentro de un objeto en lugar de una lista de parámetros ({{bug(1388591)}}).</li> +</ul> + +<h3 id="Seguridad">Seguridad</h3> + +<ul> + <li>Los URL <code>resource://</code> ya no filtran información ({{bug(863246)}})</li> + <li>Los URI de datos ahora se manipulan como orígenes opacos únicos, en vez de heredar el origen del objeto de configuración responsable de la navegación ({{bug(1324406)}}).</li> +</ul> + +<h3 id="Plugins"><em>Plugins</em></h3> + +<p><em>No hay ningún cambio.</em></p> + +<h3 id="Otros">Otros</h3> + +<ul> + <li>El valor <code>fullscreen</code> del campo <code>display</code> del <a href="/en-US/docs/Web/Manifest">manifiesto de aplicación web</a> ahora funciona en Firefox para Android 57 ({{bug(1126479)}}).</li> + <li>La <a href="/en-US/docs/Mozilla/Firefox/Headless_mode">modalidad sin periféricos</a> de Firefox ahora incluye el parámetro <code>-screenshot</code>, que permite a los usuarios tomar capturas de pantalla de sitios web directamente desde la consola ({{bug(1378010)}}).</li> +</ul> + +<h2 id="Eliminaciones_de_la_plataforma_web">Eliminaciones de la plataforma web</h2> + +<h3 id="HTML_2">HTML</h3> + +<ul> + <li><code><link rel="preload"></code> (véase <a href="/en-US/docs/Web/HTML/Preloading_content">Precargar contenido con rel="preload"</a>) fue desactivado en Firefox 57 a causa de varios problemas de compatibilidad con la web (p. ej., {{bug(1405761)}}). Se espera que para Firefox 58 quede lista la versión de reemplazo, la cual funcionará para recursos no almacenables en la antememoria.</li> +</ul> + +<h3 id="API_2">API</h3> + +<ul> + <li>La <a href="/en-US/docs/Archive/Social_API">API Social</a>, privativa de Mozilla, se ha eliminado completamente ({{bug(1388902)}}).</li> +</ul> + +<h3 id="SVG_2">SVG</h3> + +<p><em>No hay ningún cambio.</em></p> + +<h2 id="Cambios_relativos_a_los_complementos_y_los_programadores_de_Mozilla">Cambios relativos a los complementos y los programadores de Mozilla</h2> + +<div class="note"> +<p>A partir de Firefox 57, se ha eliminado por completo la compatibilidad con los complementos basados en la tecnología XPCOM. Todas las extensiones deben convertirse para emplear la <a href="/en-US/Add-ons/WebExtensions">tecnología nueva</a>, conocida como WebExtensions, o de lo contrario dejarán de funcionar.</p> +</div> + +<h3 id="WebExtensions">WebExtensions</h3> + +<p>Se añadieron o ampliaron las API siguientes:</p> + +<ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks">bookmarks</a></code> + + <ul> + <li>compatibilidad con separadores mediante <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/bookmarks/BookmarkTreeNodeType">bookmarks.BookmarkTreeNodeType</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> + <ul> + <li>propiedad <code>theme_icons</code> para iconos claros u oscuros en función del tema</li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction">browserAction</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserAction/openPopup">browserAction.openPopup()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings">browserSettings</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/allowPopupsForUserEvents">allowPopupsForUserEvents</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/homepageOverride">homepageOverride</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/imageAnimationBehavior">imageAnimationBehavior</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings/newTabPageOverride">newTabPageOverride</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browsingData">browsingData</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browsingData/removeLocalStorage">browsingData.removeLocalStorage()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/clipboard">clipboard</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/clipboard/setImageData">setImageData()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities">contextualIdentities</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onCreated">onCreated</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onRemoved">onRemoved</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/onUpdated">onUpdated</a></code></li> + <li><code>colorCode</code> y <code>iconUrl</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/contextualIdentities/ContextualIdentity">contextualIdentitities.ContextualIdentity</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels">devtools.panels</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/devtools.panels/ElementsPanel/createSidebarPane">devtools.panels.ElementsPanel.createSidebarPane()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads">downloads</a></code> + <ul> + <li>opción <code>incognito</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads/download">downloads.download()</a></code></li> + <li>propiedad <code>estimatedEndTime</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/downloads/DownloadItem">downloads.DownloadItem</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/Add-ons/WebExtensions/API/find">find</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/find/find">find()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/find/highlightResults">highlightResults()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/find/removeHighlighting">removeHighlighting()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/pageAction/openPopup">pageAction.openPopup()</a></code></li> + <li><code><a href="/en-US/Add-ons/WebExtensions/API/privacy/websites">privacy</a></code> + <ul> + <li><code><a href="/en-US/Add-ons/WebExtensions/API/privacy/websites">websites.trackingProtectionMode</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/proxy">proxy</a></code> + <ul> + <li><code>FindProxyForURL()</code> puede devolver un objeto ahora</li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime">runtime</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/runtime/openOptionsPage">runtime.openOptionsPage()</a></code> funciona en Android</li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions">sessions</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/setTabValue">setTabValue()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/getTabValue">getTabValue()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/removeTabValue">removeTabValue()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/setWindowValue">setWindowValue()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/getWindowValue">getWindowValue()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sessions/removeWindowValue">removeWindowValue()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction">sidebarAction</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/sidebarAction/open">sidebarAction.open()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage">storage</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/storage/managed">storage.managed</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs">tabs</a></code> + <ul> + <li>opción <code>loadReplace</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update">tabs.update()</a></code></li> + <li>propiedad <code>discarded</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">tabs.Tab</a></code>, <code><a href="/en-US/docs/">tabs.onUpdated</a></code> y <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code></li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create">tabs.create()</a></code> puede abrir URL con «view-source:»</li> + <li>propiedad <code>openerTabId</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/Tab">tabs.Tab</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/create">tabs.create()</a></code>, <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/query">tabs.query()</a></code> y <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/update">tabs.update()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> + <ul> + <li><code>colors.toolbar</code></li> + <li><code>colors.toolbar_field</code></li> + <li><code>colors.toolbar_field_text</code></li> + <li><code>colors.toolbar_text</code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/theme">theme</a></code> + <ul> + <li>opción <code>windowId</code> para <code><a href="/en-US/Add-ons/WebExtensions/API/theme/update">theme.update()</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code> + <ul> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest/filterResponseData">filterResponseData()</a></code></li> + <li>propiedad <code>proxyInfo</code> en sucesos <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/webRequest">webRequest</a></code></li> + </ul> + </li> + <li><code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows">windows</a></code> + <ul> + <li>opción <code>allowScriptsToClose</code> en <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/windows/create">windows.create()</a></code></li> + </ul> + </li> +</ul> + +<h2 id="Véase_también">Véase también</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/57">Compatibilidad de sitios con Firefox 57</a></li> +</ul> +</article> + +<ul> +</ul> + +<h2 id="Versiones_anteriores"> Versiones anteriores</h2> + +<p>{{Firefox_for_developers(56)}}</p> diff --git a/files/es/mozilla/firefox/releases/61/index.html b/files/es/mozilla/firefox/releases/61/index.html new file mode 100644 index 0000000000..49fbfdb07c --- /dev/null +++ b/files/es/mozilla/firefox/releases/61/index.html @@ -0,0 +1,135 @@ +--- +title: Firefox 61 for developers +slug: Mozilla/Firefox/Releases/61 +translation_of: Mozilla/Firefox/Releases/61 +--- +<div>{{FirefoxSidebar}}</div><div>{{draft}}</div> + +<p class="summary">Este artículo muestra información sobre los cambios en Firefox 61 que afectarán a los desarrolladores. Firefox 61 es la versión beta actual de Firefox, y se lanzará el 26 de Junio de 2018.</p> + +<h2 id="Cambios_para_desarrolladores_web">Cambios para desarrolladores web</h2> + +<h3 id="Herramientas_de_desarrollador">Herramientas de desarrollador</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="HTML">HTML</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="CSS">CSS</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="SVG">SVG</h3> + +<ul> + <li>Las propiedades <code>ping</code>, <code>rel</code>, <code>referrerPolicy</code>, <code>relList</code>, <code>hreflang</code>, <code>type</code> y <code>text</code> han sido añadidas al elemento {{SVGElement("a")}} ({{domxref("SVGAElement")}}) para ser consistente con el elemento HTML {{HTMLElement("a")}} ({{bug("1451823")}}).</li> + <li> El elemento {{SVGElement("textPath")}}({{domxref("SVGTextPathElement")}}) ahora soporta el <code>path</code> SVG2 y los atributos <code>side</code> ({{bug("1446617")}} y {{bug("1446650")}}).</li> + <li>La interfaz {{domxref("SVGGeometryElement")}} ahora es soportada por más elementos y no solo para el elemento {{SVGElement("path")}} ({{bug("1325320")}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>Los metodos {{jsxref("String.prototype.trimStart()")}} y {{jsxref("String.prototype.trimEnd()")}} han sido implementados (mira {{bug(1434007)}}). <code>trimLeft</code> y <code>trimRight</code> permanecen como alias por razones de compatibilidad web.</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="Nueva_APIs">Nueva APIs</h4> + +<p><em>No hay cambios.</em></p> + +<h4 id="DOM">DOM</h4> + +<p><em>No hay cambios.</em></p> + +<h4 id="Eventos_DOM">Eventos DOM</h4> + +<p><em>No hay cambios.</em></p> + +<h4 id="Trabajadores_del_servicio">Trabajadores del servicio</h4> + +<p><em>No hay cambios.</em></p> + +<h4 id="Media_y_WebRTC">Media y WebRTC</h4> + +<p><em>No hay cambios.</em></p> + +<h4 id="Canvas_y_WebGL">Canvas y WebGL</h4> + +<p><em>No hay cambios.</em></p> + +<h3 id="CSSOM">CSSOM</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>La cookie <code><strong>SameSite</strong></code> ha sido implementada. Mira <a href="/en-US/docs/Web/HTTP/Headers/Set-Cookie">Set-Cookie</a> y <a href="/en-US/docs/Web/HTTP/Cookies">HTTP cookies</a> ({{bug(795346)}}).</li> +</ul> + +<h3 id="Seguridad">Seguridad</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="Otros">Otros</h3> + +<p><em>No hay cambios.</em></p> + +<h2 id="Eliminaciones_de_la_plataforma_web">Eliminaciones de la plataforma web</h2> + +<h3 id="HTML_2">HTML</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="CSS_2">CSS</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="APIs_2">APIs</h3> + +<p><em>No hay cambios.</em></p> + +<h3 id="SVG_2">SVG</h3> + +<ul> + <li>La obsoleta (y nunca implementada correctamente) propiedad {{domxref("SVGViewElement")}}<code>.viewTarget</code> ha sido eliminada ({{bug(1455763)}}).</li> + <li>Las siguientes propiedades obsoletas han sido eliminadas de {{domxref("SVGSVGElement")}} ({{bug(1133172)}}): + <ul> + <li><code>pixelUnitToMillimeterX</code></li> + <li><code>pixelUnitToMillimeterY</code></li> + <li><code>screenPixelToMillimeterX</code></li> + <li><code>screenPixelToMillimeterY</code></li> + </ul> + </li> + <li>El constructor no-estandar <code>SVGNumber()</code> ha sido eliminado ({{bug("1455940")}}).</li> +</ul> + +<h3 id="Otros_2">Otros</h3> + +<p><em>No hay cambios.</em></p> + +<h2 id="Cambios_para_modificaciones_y_desarrolladores_de_Mozilla">Cambios para modificaciones y desarrolladores de Mozilla</h2> + +<h3 id="Extensiones_web">Extensiones web</h3> + +<p><em>No hay cambios.</em></p> + +<h2 id="También_puedes_ver">También puedes ver</h2> + +<ul> + <li>Compatibilidad de sitios para Firefox 61</li> +</ul> + +<h2 id="Versiones_anteriores">Versiones anteriores</h2> + +<p>{{Firefox_for_developers(60)}}</p> + +<p> </p> diff --git a/files/es/mozilla/firefox/releases/62/index.html b/files/es/mozilla/firefox/releases/62/index.html new file mode 100644 index 0000000000..ccc68fce29 --- /dev/null +++ b/files/es/mozilla/firefox/releases/62/index.html @@ -0,0 +1,235 @@ +--- +title: Firefox 62 for developers +slug: Mozilla/Firefox/Releases/62 +translation_of: Mozilla/Firefox/Releases/62 +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Este artículo provee información sobre los cambios de Firefox 62 que van a afectar a los programadores. Firefox 62 ha sido lanzado en 5 de septiembre, 2018.</p> + +<h2 id="Cambios_para_programadores_de_red">Cambios para programadores de red</h2> + +<h3 id="Herramientas_para_programadores">Herramientas para programadores</h3> + +<ul> + <li>La editor de formas ya está disponible por defecto -- vea a <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_CSS_shapes">Editar formas en CSS </a>para más informacion.</li> + <li>You can now split the Rules view out into its own pane, separate from the other tabs on the CSS pane. See <a href="/en-US/docs/Tools/Page_Inspector/3-pane_mode">Page inspector 3-pane mode</a> for more details.</li> + <li>The Grid inspector has updated features, and all new documentation — see <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_grid_layouts">CSS Grid Inspector: Examine grid layouts</a>.</li> + <li>You now have four options for the location of the Developer Tools. In addition to the default location on the bottom of the window, you can choose to locate the tools on either the left or right sides of the main window or in a separate window ({{bug(1192642)}}).</li> + <li>The <a href="/en-US/docs/Tools/Accessibility_inspector">Accessibility inspector</a> has had a couple of minor updates: + <ul> + <li>It no longer exposes the <code>help</code> property, which isn't properly implemented in Gecko ({{bug(1467643)}}).</li> + <li>The <code>keyboardShortcut</code> property now correctly exposes any keyboard shortcut available to activate the currently inspected node ({{bug(1467381)}}).</li> + </ul> + </li> + <li>A close button has been added to the <a href="/en-US/docs/Tools/Web_Console/Split_console">split console</a> toolbar.</li> + <li>If the option to "Select an iframe as the currently targeted document" is checked, the icon will appear in the toolbar while the Settings tab is displayed, even if the current page doesn't include any iframes ({{bug(1456069)}}).</li> + <li>The <a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a>'s <a href="/en-US/docs/Tools/Network_Monitor#Cookies">Cookies tab</a> now shows the cookie <code>samesite</code> attribute ({{bug(1452715)}}).</li> + <li><a href="/en-US/docs/Tools/Responsive_Design_Mode">Responsive design mode</a> now works inside container tabs ({{bug(1306975)}}).</li> + <li>When {{Glossary("CORS")}} errors occur and are reported on the console, Firefox now provides a link to the corresponding page in our <a href="/en-US/docs/Web/HTTP/CORS/Errors">CORS error documentation</a> ({{bug(1475391)}}).</li> + <li>Create a screenshot of the current page (with an optional filename) from the Console tab ({{bug(1464461)}}) using the following command:<br> + <br> + <code>:screenshot <filename.png> --fullpage</code><br> + <br> + where <code><filename.png></code> is the desired filename. The file will be saved to your downloads folder. The <code>--fullpage</code> parameter is optional, but if included, it will save the full web page. This option also adds <code>-fullpage</code> to the name of the file. For a list of all options available for this command, enter: <code>:screenshot --help</code></li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>The <a href="/en-US/docs/Tools/GCLI">Developer Toolbar/GCLI</a> (accessed with <kbd>Shift</kbd> + <kbd>F2</kbd>), <strong>has been removed</strong> from Firefox ({{bug(1461970)}}). Both the Developer Toolbar UI and the GCLI upstream library have become unmaintained, some of its features are broken (some ever since e10s), it is blocking the <code><span class="quote">unsafeSetInnerHTML</span></code> work, usage numbers are very low, alternatives exist for the most used commands.</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<p><em>No changes.</em></p> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><code>:-moz-selection</code> has been unprefixed to {{cssxref("::selection")}} ({{bug(509958)}}).</li> + <li><code>x</code> is now supported as a unit for the {{cssxref("<resolution>")}} type ({{bug(1460655)}}).</li> + <li>{{cssxref("shape-margin")}}, {{cssxref("shape-outside")}}, and {{cssxref("shape-image-threshold")}} are now enabled by default ({{bug(1457297)}}).</li> +</ul> + +<h4 id="Removals_2">Removals</h4> + +<ul> + <li>All <a href="/en-US/docs/Web/CSS/display#XUL_values">XUL <code>display</code> values</a> with the exception of <code>-moz-box</code> and <code>-moz-inline-box</code> have been removed from non-XUL documents in {{bug(1288572)}}.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The {{jsxref("WebAssembly.Global()")}} constructor is now supported, along with global variables in WebAssembly ({{bug(1464656)}}).</li> + <li>The {{jsxref("Array.prototype.flat()")}} and {{jsxref("Array.prototype.flatMap()")}} methods are now enabled by default ({{bug(1435813)}}).</li> + <li>The <code><a href="/en-US/docs/Web/JavaScript/Reference/Statements/import.meta">import.meta</a></code> property has been implemented to expose context-specific metadata to a JavaScript module ({{bug(1427610)}}).</li> + <li>JavaScript <a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#String_literals">string literals</a> may now directly contain the U+2028 LINE SEPARATOR and U+2029 PARAGRAPH SEPARATOR characters. As a consequence, {{jsxref("JSON")}} syntax is now a subset of JavaScript literal syntax (see {{bug(1435828)}} and the TC39 proposal <a href="https://github.com/tc39/proposal-json-superset">json-superset</a>).</li> + <li>For out-of-bounds <a href="/en-US/docs/Web/JavaScript/Typed_arrays">typed array</a> indexes, {{jsxref("Reflect.defineProperty()")}} and {{jsxref("Reflect.set()")}} will now return <code>false</code> instead of <code>true</code> ({{bug(1308735)}}).</li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<ul> + <li>The <code>DOMPoint</code> and <code>DOMPointReadOnly</code> constructors no longer support an input parameter of type <code>DOMPointInit</code>; the values of the properties must be specified using the <code>x</code>, <code>y</code>, <code>z</code>, and <code>w</code> parameters ({{bug(1186265)}}).</li> + <li>The {{domxref("URL.createObjectURL()")}} method no longer supports creating object URLs to represent a {{domxref("MediaStream")}}. This capability has been obsolete for some time now, since you can now simply set {{domxref("HTMLMediaElement.srcObject")}} to the <code>MediaStream</code> directly ({{bug(1454889)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="New_APIs">New APIs</h4> + +<ul> + <li>The {{domxref("Web_Speech_API", "Speech Synthesis API (Text-to-Speech)", "", "1")}} is now enabled by default on Firefox for Android ({{bug(1463496)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The {{domxref("DOMPointReadOnly")}} interface now supports the static function {{domxref("DOMPointReadOnly.fromPoint()")}}, which creates a new point object from a dictionary that's compatible with {{domxref("DOMPointInit")}}, which includes any {{domxref("DOMPoint")}} object. This function is also available on {{domxref("DOMPoint")}} ({{bug(1186265)}}).</li> + <li>For compatibility purposes, the {{domxref("Event.srcElement")}} property is now supported. It is an alias for {{domxref("Event.target")}} ({{bug(453968)}}).</li> + <li>{{domxref("Navigator.registerProtocolHandler()")}} now must only be called from a secure context ({{bug(1460506)}}).</li> + <li>The {{domxref("Navigator.registerContentHandler()")}} method has been disabled by default in preparation for being removed entirely, as it's been obsolete for some time ({{bug(1460481)}}).</li> + <li>The {{domxref("DataTransfer.DataTransfer", "DataTransfer()")}} constructor has been implemented ({{bug(1351193)}}).</li> + <li>{{domxref("Document.domain")}} can no longer return <code>null</code> ({{bug(819475)}}). If the domain cannot be identified, then <code>domain</code> returns an empty string instead of <code>null</code>.</li> + <li>Added the {{domxref("Console.timeLog()")}} method to display the current value of a console timer while continuing to track the time ({{bug(1458466)}}).</li> + <li>Added {{domxref("Console.countReset()")}} to reset a console counter value ({{bug(1459279)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<p><em>No changes.</em></p> + +<h4 id="Service_workers">Service workers</h4> + +<p><em>No changes.</em></p> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>The <code>"media.autoplay.enabled"</code> preference now controls automatic playback of both audio and video media, instead of just video media ({{bug(1413098)}}).</li> + <li>The {{domxref("ChannelSplitterNode")}} has been fixed to correctly default to having 6 channels with the <code>channelInterpretation</code> set to <code>"discrete"</code> and the <code>channelCountMode</code> set to <code>"explicit"</code>, as per the specification ({{bug(1456265)}}).</li> +</ul> + +<h4 id="Removals_4">Removals</h4> + +<ul> + <li>The {{event("userproximity")}} and {{event("deviceproximity")}} events (see also {{domxref("UserProximityEvent")}} and {{domxref("DeviceProximityEvent")}}) have been disabled by default behind the <code>device.sensors.proximity.enabled</code> preference ({{bug(1462308)}}).</li> + <li>The {{event("devicelight")}} event (see also {{domxref("DeviceLightEvent")}}) has been disabled by default behind the <code>device.sensors.ambientLight.enabled</code> preference ({{bug(1462308)}}).</li> + <li>The {{event("DOMSubtreeModified")}} and {{event("DOMAttrModified")}} <a href="/en-US/docs/Web/Guide/Events/Mutation_events">mutation events</a> are no longer thrown when the {{htmlattrxref("style")}} attribute is changed via the CSSOM ({{bug(1460295)}}, see also this <a href="https://www.fxsitecompat.com/en-CA/docs/2018/domattrmodified-and-domsubtreemodified-events-are-no-longer-fired-when-style-attribute-is-changed-via-cssom/">site compatibility post</a>).</li> + <li>Support for {{domxref("CSSStyleDeclaration.getPropertyCSSValue()")}} has been removed ({{bug(1408301)}}).</li> + <li>Support for {{domxref("CSSValue")}}, {{domxref("CSSPrimitiveValue")}}, and {{domxref("CSSValueList")}} has been removed ({{bug(1459871)}}).</li> + <li>{{domxref("window.getComputedStyle()")}} no longer returns <code>null</code> when called on a <code>Window</code> which has no presentation ({{bug(1467722)}}).</li> +</ul> + +<ul> +</ul> + +<ul> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<h4 id="Removals_5">Removals</h4> + +<ul> + <li>The deprecated CSP {{CSP("referrer")}} directive has been removed. Please use the {{HTTPHeader("Referrer-Policy")}} header instead ({{bug(1302449)}}).</li> +</ul> + +<h3 id="Security">Security</h3> + +<p><em>No changes.</em></p> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="New_features">New features</h4> + +<ul> + <li> + <p>Command "<code>WebDriver:ElementSendKeys</code>" has been made WebDriver conforming for file uploads ({{bug(1448792)}})</p> + </li> + <li> + <p>User prompts as raised by "<code>beforeunload</code>" events are automatically dismissed for "<code>WebDriver:Get</code>", "<code>WebDriver:Back</code>", "<code>WebDriver:Forward</code>", "<code>WebDriver:Refresh</code>", and "<code>WebDriver:Close</code>" commands ({{bug(1434872)}})</p> + </li> + <li> + <p>"<code>WebDriver:PerformActions</code>" for <kbd>Ctrl</kbd> + <code>Click</code> synthesizes a {{event("contextmenu")}} event ({{bug(1421323)}})</p> + </li> +</ul> + +<h4 id="API_changes">API changes</h4> + +<ul> + <li>Removed obsolete endpoints including "<code>getWindowPosition</code>", "<code>setWindowPosition</code>", "<code>getWindowSize</code>", and "<code>setWindowSize</code>" ({{bug(1348145)}})</li> + <li>WebDriver commands which return success with data "<code>null</code>" now return an empty dictionary ({{bug(1461463)}})</li> +</ul> + +<h4 id="Bug_fixes">Bug fixes</h4> + +<ul> + <li> + <p>"<code>WebDriver:ExecuteScript</code>" caused cyclic reference error for <a href="/en-US/docs/Web/WebDriver/WebElement">WebElement</a> collections ({{bug(1447977)}})</p> + </li> + <li> + <p>Dispatching a "<code>pointerMove</code>" or "<code>pause</code>" action primitive could cause a hang, and the command to never send a reply ({{bug(1467743)}}, {{bug(1447449)}})</p> + + <p> </p> + </li> +</ul> + +<h3 id="Other">Other</h3> + +<p><em>No changes.</em></p> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes_2">API changes</h3> + +<ul> + <li>Added the {{WebExtAPIRef("webRequest.getSecurityInfo()")}} API to examine details of TLS connections ({{bug(1322748)}}).</li> + <li>Added the {{WebExtAPIRef("browserSettings.newTabPosition")}} to customize where new tabs open ({{bug(1344749)}}).</li> + <li><code>windowTypes</code> has been deprecated in {{WebExtAPIRef("windows.get()")}}, {{WebExtAPIRef("windows.getCurrent()")}}, and {{WebExtAPIRef("windows.getLastFocused()")}} ({{bug(1419132)}}).</li> + <li>It's now possible to modify a browser action on a per-window basis ({{bug(1419893)}}).</li> +</ul> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<ul> + <li>New <code>open_at_install</code> property of the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> manifest key enables extensions to control whether their sidebars should open automatically on install or not ({{bug(1460910)}}).</li> + <li>Changes to the <code>browser_style</code> property of various manifest keys: + <ul> + <li>In <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/page_action">page_action</a></code> and <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/browser_action">browser_action</a></code> it defaults to <code>false</code>.</li> + <li>In <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/sidebar_action">sidebar_action</a></code> and <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/options_ui">options_ui</a></code> it defaults to <code>true</code>.</li> + </ul> + </li> +</ul> + +<h3 id="Theme_changes">Theme changes</h3> + +<ul> + <li>New <code>tab_background_separator</code> property of the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> manifest key enables extensions to change the color of the tab separator ({{bug(1459455)}}).</li> +</ul> + +<h3 id="Removals_6">Removals</h3> + +<ul> + <li>Support for unpacked sideloaded extensions has been removed ({{bug(1385057)}}).</li> + <li>The warning about <code>browser_style</code> displayed when temporarily loading an extension for testing is no longer displayed ({{bug(1404724)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-US/versions/62">Site compatibility for Firefox 62</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(61)}}</p> diff --git a/files/es/mozilla/firefox/releases/63/index.html b/files/es/mozilla/firefox/releases/63/index.html new file mode 100644 index 0000000000..cd63bb1eac --- /dev/null +++ b/files/es/mozilla/firefox/releases/63/index.html @@ -0,0 +1,274 @@ +--- +title: Firefox 63 para desarrolladores +slug: Mozilla/Firefox/Releases/63 +tags: + - Firefox + - Mozilla + - Release +translation_of: Mozilla/Firefox/Releases/63 +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary">Este articulo proporciona información sobre los cambios en Firefox 63, que afectara a los desarrolladores. La versión de Firefox 63 fue publicada el 23 de octubre del 2018.</p> + +<h2 id="Cambios_para_los_desarrolladores_web">Cambios para los desarrolladores web</h2> + +<h3 id="Herramientas_de_desarrollo">Herramientas de desarrollo</h3> + +<ul> + <li>La pestaña de fuentes en el <a href="/en-US/docs/Tools/Page_Inspector">Inspector de Pagina</a> ahora incluye un editor que facilita ver y editar los ajustes de fuente en tu página. ver <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_fonts">editar fuentes </a>para más detalles.</li> + <li>El <a href="/en-US/docs/Tools/Accessibility_inspector">Inspector de accesibilidad</a> ahora está habilitado por defecto. ({{bug(1482454)}}).</li> + <li>Cuando flotas sobre un objeto en el <a href="/en-US/docs/Tools/Accessibility_inspector">Inspector de accesibilidad</a>, <a href="/en-US/docs/Tools/Accessibility_inspector#Highlighting_of_UI_items">el objeto es resaltado </a>y su rol y nombre serán mostrados en una barra de información de la página. ({{bug(1473030)}}).</li> + <li>La consola de comandos en la <a href="/en-US/docs/Tools/Web_Console">Consola Web</a> es ahora mostrada inmediatamente con su respectivo resultado. ({{bug(1136299)}}).</li> + <li>Un nuevo icono ha sido añadido al contenido <a href="/en-US/docs/Tools/Network_Monitor">Monitor de Red</a> para indicar cuando una URL pertenece a un rastreador desconocido — ver <a href="/en-US/docs/Tools/Network_Monitor/request_list#Security_icons">iconos de seguridad.</a> ({{bug(1333994)}}).</li> + <li>El valor por defecto de <code>devtools.aboutdebugging.showSystemAddons</code> es ahora <code>false</code>, significa que los complementos del sistema no serán listados en el <code>about:debugging</code> página. Puedes cambiar los ajustes navegando en <code>about:config</code> ({{bug(1425347)}}).</li> + <li>la barra de tareas <a href="/en-US/docs/Tools/Responsive_Design_Mode">Modo de diseño responsivo</a> fue simplificada, y añadimos la opción de alinear a la izquierda left-align la ventanilla.</li> + <li>El inspector de página incluye un <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_HTML#Custom_element_definition">enlace a la definición de clases</a> para un elemento personalizado. ({{bug(1443923)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>Soporte para los {{HTMLElement("img")}} elementos <code>decoding</code> el atributo ha sido añadido ({{bug(1416328)}}); ver tambien {{DOMxRef("HTMLImageElement.decoding")}}.</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>Soporte para la <code>sidebar</code> (barralateral) tipo de enlace (<code>rel="sidebar"</code>) ha sido removido. si una etiqueta de anclaje incluye este atributo, sera ignorado. ({{bug(1452645)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>Soporte para {{CSSxRef(":defined")}} pseudo-clase ha sido añadida ({{bug(1331334)}}).</li> + <li>soporte para {{CSSxRef("row-gap")}}, {{CSSxRef("column-gap")}} y {{CSSxRef("gap")}} ha sido añadida en <a href="/en-US/docs/Web/CSS/CSS_Box_Alignment/Box_Alignment_in_Flexbox#The_gap_properties">diseño flexbox</a> ({{bug(1398483)}}).</li> + <li>Soporte reactivado para <a href="/en-US/docs/Web/CSS/@media/-webkit-device-pixel-ratio">webkit-prefixed pixel-density @media queries</a> ({{bug(1444139)}}).</li> + <li>Soporte añadido para <a href="/en-US/docs/Web/CSS/CSS_Flexible_Box_Layout">CSS Caja de diseño flexible</a> (Flexbox) propiedades {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}}, y {{CSSxRef("align-items")}} también como {{CSSxRef("justify-content")}} propiedad ({{bug(1472843)}}).</li> + <li>implementado el path()función para {{CSSxRef("offset-path")}} ({{bug(1429298)}}).</li> + <li>Implementado <a href="/en-US/docs/Web/CSS/Media_Queries/Using_media_queries#Syntax_improvements_in_Level_4">mejoras en la sintaxis de la petición de medios nivel 4</a> ({{bug(1472843)}}).</li> + <li>Cambio de nombre offset-* propiedades a {{CSSxRef("inset-block-start")}}, {{CSSxRef("inset-block-end")}}, {{CSSxRef("inset-inline-start")}}, and {{CSSxRef("inset-inline-end")}} ({{bug(1464782)}}).</li> + <li>Adiciona soporte para <a href="/en-US/docs/Web/CSS/@media/prefers-reduced-motion">preferencia-movimiento-reducido</a> implementación contenido media. ({{bug(1365045)}}, {{bug(1475462)}}).</li> + <li>Added flow relative values (<code>block</code>, <code>inline</code>) for the {{CSSxRef("resize")}} property ({{bug(1464786)}}).</li> + <li>Implemented flexbox layout for <code>safe</code> & <code>unsafe</code> values in {{CSSxRef("align-self")}}, {{CSSxRef("align-content")}}, and {{CSSxRef("justify-content")}} ({{bug(1297774)}}).</li> + <li>The <a href="/en-US/docs/Web/CSS/CSS_Logical_Properties">logical properties</a> (where appropriate) are now animatable ({{bug(1309752)}}).</li> +</ul> + +<h4 id="Removals_2">Removals</h4> + +<ul> + <li>Removed <code>offset-block-start</code>, <code>offset-block-end</code>, <code>offset-inline-start</code> and <code>offset-inline-end</code>; these have been renamed to <code>inset-*</code>, as described above ({{bug(1464782)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The {{JSxRef("Symbol.prototype.description")}} property has been implemented ({{bug(1472170)}}).</li> + <li>The {{JSxRef("Object.fromEntries()")}} method has been added ({{bug(1469019)}}).</li> + <li>When you try to access a property of an undefined object, the error message is now much improved. Considering the case where <code>x</code> is undefined and you try to access <code>x.y</code>, instead of <code>TypeError: x is undefined</code> the console now returns the more descriptive <code><a href="/en-US/docs/Web/JavaScript/Reference/Errors/cant_access_property">x is undefined; can't access its "y" property</a></code> ({{bug(1259822)}}).</li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<ul> + <li>Experimental WebAssembly Module IndexedDB serialization support has been removed ({{bug(1469395)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="New_APIs">New APIs</h4> + +<ul> + <li>The Shadow DOM ({{bug(1471947)}}) and Custom Elements ({{bug(1471948)}}) APIs have been enabled by default; See <a href="/en-US/docs/Web/Web_Components">Web components</a> for more details.</li> + <li>The {{domxref("Media_Capabilities_API", "Media Capabilities API", "", "1")}} been implemented ({{bug(1409664)}}).</li> + <li>The {{domxref("Clipboard", "Async Clipboard API", "", "1")}} has been implemented and enabled by default for all channels ({{bug(1461465)}}). As is the case with Chrome, Firefox currently implements only the {{domxref("Clipboard.writeText", "writeText()")}} and {{domxref("Clipboard.readText", "readText()")}} methods; however, unlike Chrome, <code>readText()</code> is only available in <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions">browser extensions</a>.</li> + <li>The {{DOMxRef("SecurityPolicyViolationEvent")}} interface is now supported. It allows sending events when the {{HTTPHeader("Content-Security-Policy")}} is violated ({{bug(1472661)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The following portions of the {{domxref("Web_Animations_API", "Web Animations API", "", "1")}} have been enabled by default (see {{bug(1476158)}}): + <ul> + <li>The {{DOMxRef("Animation")}} properties {{DOMxRef("Animation.ready", "ready")}} and {{DOMxRef("Animation.finished", "finished")}}, specifying the <code>Animation</code> object's <code>ready</code> and <code>finished</code> {{JSxRef("Promise")}}s.</li> + <li>The {{DOMxRef("Animation")}} object's {{DOMxRef("Animation.effect", "effect")}} property.</li> + <li>The interfaces {{DOMxRef("KeyframeEffect")}} and {{DOMxRef("AnimationEffect")}}.</li> + </ul> + </li> + <li>The {{DOMxRef("Element.toggleAttribute()")}} method has been implemented ({{bug(1469592)}}).</li> + <li>The historical, previously non-standard, {{DOMxRef("Event.returnValue")}} property is now supported for compatibility purposes ({{bug(1452569)}}).</li> + <li>We implemented the {{DOMxRef("Window.event")}} property to improve web compatibility, now that it's become standard ({{bug(218415)}}).</li> + <li>To bring Firefox into alignment with Edge and Chrome, the {{DOMxRef("NavigatorID.platform", "navigator.platform")}} property now returns <code>"Win32"</code> even when running on 64-bit Windows ({{bug(1472618)}}).</li> + <li>Prior to Firefox 63, links that open new windows that had <code>rel="noopener"</code>, as well as calls to {{DOMxRef("Window.open()")}} with the <code><a href="/en-US/docs/Web/API/Window/open#noopener">noopener</a></code> window feature enabled would default to having all window features disabled, so that you had to explicitly re-enable any standard features you wanted. Now these windows have the same set of features enabled as any other window, and you need to explicitly turn off any you don't want ({{bug(1419960)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<ul> + <li>Handling of the <kbd>Alt</kbd> key <em>on the right side</em> of the keyboard has been improved on Windows. If the user's current keyboard layout maps the <kbd>Alt</kbd> key to the <kbd>AltGr</kbd> modifier key, the value of {{DOMxRef("KeyboardEvent.key")}} is now reported as <code>"AltGraph"</code>. This behavior matches the behavior recently introduced in Chrome ({{bug(900750)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>Microphone access now works simultaneously in multiple tabs, even within the same content process ({{bug(1404977)}}).</li> + <li>{{DOMxRef("RTCDataChannel")}} has been updated to support the sctp-sdp-21 data format for the data, in addition to the older sctp-sdp-05 format previously supported.</li> + <li>The {{DOMxRef("ConstantSourceNode")}} node type for Web Audio API now has a default channel count of 2 rather than 1, in order to match the specification ({{bug(1413283)}}).</li> + <li>The {{domxref("Web_Audio_API", "Web Audio API", "", "1")}} interface {{DOMxRef("AudioScheduledSourceNode")}} (and by extension, all the other node types based on it) now throw the correct exception when a negative value is specified for the node start time. That error is <code>RangeError</code> ({{bug(1413284)}}).</li> + <li>The minimum and maximum permitted values for an {{DOMxRef("AudioParam")}} object's {{DOMxRef("AudioParam.value", "value")}} have been changed to the minimum negative single-precision floating-point value (-340,282,346,638,528,859,811,704,183,484,516,925,440) and the maximum positive single-precision floating-point value (+340,282,346,638,528,859,811,704,183,484,516,925,440) respectively ({{bug(1476695)}}).</li> + <li>The {{DOMxRef("SourceBuffer.changeType")}} method, which allows you to change codecs during an active stream, has been enabled by default. This is part of the {{domxref("Media_Source_Extensions_API", "Media Source Extensions API", "", "1")}} ({{bug(1481166)}}).</li> + <li>The {{DOMxRef("AudioParam.setValueCurveAtTime()")}} method has been updated to correctly accept an array of floating-point values to indicate the parameter's values to change to over time. Previously, it required a {{DOMxRef("Float32Array")}} ({{bug(1421091)}}).</li> + <li>{{DOMxRef("AudioParam.setValueCurveAtTime()")}} has also been updated to correctly return a proper <code>TypeError</code> when a non-finite value is found in the <code>values</code> array ({{bug(1472095)}}).</li> + <li>In addition, <code>setValueCurveAtTime()</code> has been updated to ensure that, when the parameter finishes following the specified value curve after the duration elapses, the value of the parameter is set to the last value in the list of values to curve through ({{bug(1308436)}}).</li> + <li>The <code>RTCRTPStreamStats</code> dictionary has been renamed to {{DOMxRef("RTCRtpStreamStats")}} for consistency with other WebRTC dictionaries and the specification ({{bug(1480498)}}).</li> + <li>Support for the <code>RTCRtpStreamStats</code> dictionary's {{DOMxRef("RTCRtpStreamStats.kind", "kind")}} property has been added ({{bug(1481851)}}).</li> + <li>The {{DOMxRef("RTCRtpStreamStats")}} dictionary's {{DOMxRef("RTCRtpStreamStats.isRemote", "isRemote")}} property is deprecated and will be removed in Firefox 65. A warning is now output to console when this property is accessed. See <a href="https://blog.mozilla.org/webrtc/getstats-isremote-65/">this blog post on the Advancing WebRTC blog</a> for details ({{bug(1393306)}}).</li> +</ul> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<ul> + <li>A new <code>powerPreference</code> context attribute has been added to {{DOMxRef("HTMLCanvasElement.getContext()")}}. On macOS this allows WebGL non-performance-critical applications and applets to request the low-power GPU instead of the high-power GPU in multi-GPU systems ({{bug(1349799)}}).</li> +</ul> + +<h4 id="Removals_4">Removals</h4> + +<ul> + <li>The obsolete and non-standard Firefox-only methods {{DOMxRef("Window.back()")}} and {{DOMxRef("Window.forward()")}} have been removed. Please use the {{DOMxRef("History.back", "window.history.back()")}} and {{DOMxRef("History.forward", "window.history.forward()")}} methods instead ({{bug(1479486)}}).</li> + <li>The {{DOMxRef("URL.createObjectURL", "createObjectURL()")}} and {{DOMxRef("URL.revokeObjectURL", "revokeObjectURL()")}} methods are no longer available on {{DOMxRef("ServiceWorker")}} instances due to the potential they introduced for memory leaks to occur ({{bug(1264182)}}).</li> + <li>Since it was deprecated in the specification anyway, the limited support for Doppler effects on {{DOMxRef("PannerNode")}} has been removed from the Web Audio API. The {{DOMxRef("AudioListener")}} properties {{DOMxRef("AudioListener.dopplerFactor", "dopplerFactor")}} and {{DOMxRef("AudioListener.speedOfSound", "speedOfSound")}} have been removed, along with the <code>PannerNode</code> method {{DOMxRef("PannerNode.setVelocity", "setVelocity()")}} ({{bug(1148354)}}).</li> +</ul> + +<h3 id="CSSOM">CSSOM</h3> + +<p><em>No changes.</em></p> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The {{HTTPHeader("Clear-Site-Data")}} header is implemented and no longer behind a preference ({{bug(1470111)}}).</li> +</ul> + +<h3 id="Security">Security</h3> + +<ul> + <li>Site favicons are now subject to <a href="/en-US/docs/Web/HTTP/CSP">Content Security Policy</a>, if one is configured for the site ({{bug(1297156)}}).</li> + <li>CSP <code>script-src</code> directive's <code>'report-sample'</code> expression now recognized when generating violation reports. This directive indicates that a short sample of where the violation occurred should be included in the report. Previously, Firefox always included this sample ({{bug(1473218)}}).</li> + <li>Firefox now uses NSS 3.39 ({{bug(1470914)}}).</li> +</ul> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="New_features">New features</h4> + +<ul> + <li>Marionette now returns a <code>setWindowRect</code> <a href="/en-US/docs/Web/WebDriver/Capabilities">capability</a> in the <code>WebDriver:NewSession</code> response that is true if the browser window can be repositioned and resized, which e.g. is the case for Firefox but not any mobile applications ({{bug(1470659)}}).</li> + <li>Added support for the <code>unhandledPromptBehavior</code> capability, which allows to define a specific <a href="https://w3c.github.io/webdriver/#dfn-user-prompt-handler">prompt behavior</a> of the WebDriver specification ({{bug(1264259)}}).</li> + <li>Handling of user prompts has been added to the <code>WebDriver:ExecuteScript</code> and <code>WebDriver:ExecuteAsyncScript</code> commands ({{bug(1439995)}}).</li> +</ul> + +<h4 id="API_changes">API changes</h4> + +<ul> + <li>Deprecated command end-points without the <code>WebDriver:</code> prefix have been removed ({{bug(1451725)}}).</li> + <li>The <code>WebDriver:NewSession</code> command returns recommended strings (<code>linux</code>, <code>mac</code>, <code>windows</code>) for <code>platformName</code> as defined in the WebDriver specification ({{bug(1470646)}}).</li> +</ul> + +<h4 id="Bug_fixes">Bug fixes</h4> + +<ul> + <li>Focus related events were missing on element interaction when Firefox was not running as the top-most application ({{bug(1398111)}}).</li> + <li>Performing a <code>pointerDown</code> and <code>pointerUp</code> action in a subsequent action sequence could trigger a double click because <code>WebDriver:ReleaseActions</code> didn't reset the double click tracker ({{bug(1422583)}}).</li> + <li>Executing <code>pause</code> actions repeatedly could cause an infinite hang ({{bug(1447449)}}).</li> + <li>Fixed a bug where returning an element collection from <code>WebDriver:ExecuteScript</code> and <code>WebDriver:ExecuteAsyncScript</code> would cause a cyclic reference error ({{bug(1447977)}}).</li> + <li>To prevent a race condition both the <code>WebDriver:AcceptAlert</code> and <code>WebDriver:DismissAlert</code> commands now wait until the user prompt has been closed ({{bug(1479368)}}).</li> + <li>Log entries as emitted by the frame script were no longer limited by <code>MarionettePrefs.logLevel</code> but logged everything ({{bug(1482829)}}).</li> + <li><code>WebDriver:TakeScreenshot</code> raised an error when taking a screenshot of a window larger than 32767 pixels in width or height ({{bug(1485730)}}).</li> + <li><code>WebDriver:SendAlertText</code> didn't replace default user prompt value if text to send is an empty string ({{bug(1486485)}}).</li> +</ul> + +<h3 id="Other">Other</h3> + +<ul> + <li>Corrected the behavior of {{DOMxRef("PerformanceObserver.observe()")}} to simply do nothing if no valid entry types are found in the specified array of entry types to observe, or if the array is empty or missing. Previously, Firefox was incorrectly throwing a <code>TypeError</code> ({{bug(1403027)}}).</li> + <li>In <a href="/en-US/docs/Web/OpenSearch">OpenSearch</a>, Firefox now accepts <code>application/json</code> as a search URL type, as an alias of <code>application/x-suggestions+json</code> ({{bug(1425827)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes_2">API changes</h3> + +<h4 id="Theming">Theming</h4> + +<ul> + <li>The default text color for {{WebExtAPIRef("browserAction")}} badges is now automatically set to black or white, to maximise contrast with the background ({{bug(1474110)}}).</li> + <li>The <code>accentcolor</code> and <code>textcolor</code> properties of the <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/theme">theme</a></code> manifest key are now optional ({{bug(1413144)}}).</li> + <li>{{WebExtAPIRef("browserAction.getBadgeTextColor()")}} and {{WebExtAPIRef("browserAction.setBadgeTextColor()")}} enable you to get and set the text color of browser action badges ({{bug(1424620)}}).</li> + <li>The theme <code>colors</code> key in <code>manifest.json</code> now supports the <code>ntp_text</code> property to set the text color in a new tab, and the <code>ntp_background</code> property to set the color of a new tab ({{bug(1347204)}}).</li> + <li>Themes can now define the colors for sidebars, such as the bookmarks sidebar ({{bug(1418602)}}). The relevant properties include: + <ul> + <li><code>sidebar</code>: The background color for sidebars.</li> + <li><code>sidebar_text</code>: The text color for sidebars.</li> + <li><code>sidebar_highlight</code>: The background color of a selected item in a sidebar.</li> + <li><code>sidebar_highlight_text</code>: The text color of a selected item in a sidebar.</li> + </ul> + </li> + <li>The method {{WebExtAPIRef("management.install()")}} allows web extensions to install and enable signed browser themes ({{bug(1369209)}}).</li> +</ul> + +<h4 id="Search">Search</h4> + +<ul> + <li>The new {{WebExtAPIRef("search")}} AP<a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/search">I</a> enables you to retrieve the list of installed search engines and perform searches with them ({{bug(1352598)}}).</li> + <li>{{WebExtAPIRef("topSites.get()")}} now takes an <code>options</code> parameter enabling you to set various options for the list of sites returned ({{bug(1445836)}}).</li> +</ul> + +<h4 id="Tabs">Tabs</h4> + +<ul> + <li>{{WebExtAPIRef("tabs.onHighlighted")}} now supports multi-select ({{bug(1474440)}}).</li> + <li>{{WebExtAPIRef("tabs.highlight")}} includes an optional field in the <code>highlightInfo</code> object. The optional populate field defaults to <code>true</code>. Setting it to <code>false</code> prevents the returned <code>windows.Window</code> object from being populated with a list of tabs.</li> + <li>{{WebExtAPIRef("tabs.update")}} now supports changing the selection status of a tab by including <code>highlighted: true</code> in the <code>updateProperties</code> parameter ({{bug(1479129)}}).</li> + <li>{{WebExtAPIRef("tabs.update")}} supports changing the selection status of a tab without changing the focused tab ({{bug(1486050)}}) by including both <code>highlighted: true</code> and <code>active: false</code> in the <code>updateProperties</code> parameter.</li> + <li>{{WebExtAPIRef("tabs.query")}} now returns an array of {{WebExtAPIRef("tabs.Tab")}} objects if multiple tabs are selected ({{bug(1465170)}}).</li> + <li>The {{WebExtAPIRef("tabs.Tab")}} property now properly reflects which tabs in a browser window are selected (highlighted) and {{WebExtAPIRef("tabs.highlight")}} supports changing the highlighted status of multiple tabs ({{bug(1464862)}}).</li> + <li>The <code>isarticle</code> property in the <code>extraParameters</code> object passed into {{WebExtAPIRef("tabs.onUpdated")}} has been renamed to <code>isArticle</code>. The old name is retained but deprecated. This change was uplifted to Firefox 62 ({{bug(1461695)}}).</li> + <li>The {{WebExtAPIRef('tabs.onUpdated')}} event can be used to track when a tab is drawing the user's attention with <code>attention</code> property of the <code>changeInfo</code> object ({{bug(1396684)}}).</li> +</ul> + +<h4 id="Menus">Menus</h4> + +<ul> + <li>Added {{WebExtApiRef("menus.getTargetElement()")}} to the {{WebExtApiRef("menus")}} API. The method returns the clicked on element referenced by the <code>targetElementId</code> parameter ({{bug(1325814)}}).</li> + <li>{{WebExtAPIRef("menus.create()")}} now enables you to create invisible menu items, and {{WebExtAPIRef("menus.update()")}} enables you to toggle menu item visibility ({{bug(1482529)}}).</li> + <li>Items created using the {{WebExtAPIRef("menus")}} API now support access keys ({{bug(1320462)}}).</li> + <li>The <code>targetUrlPatterns</code> parameter of {{WebExtApiRef("menus.create()")}} and {{WebExtApiRef("menus.update()")}} now supports any URL scheme, even those that are usually not allowed in a match pattern ({{bug(1280370)}}).</li> +</ul> + +<h4 id="Other_2">Other</h4> + +<ul> + <li>{{WebExtAPIRef("commands.onCommand")}} is now treated as <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/User_actions">user input</a> ({{bug(1408129)}}).</li> + <li>The {{WebExtAPIRef("webRequest")}} API now enables you to filter for speculative connections ({{bug(1479565)}}).</li> + <li>{{WebExtAPIRef("webRequest.SecurityInfo")}} adds two new properties, <code>keaGroupName</code> and <code>signatureSchemeName</code>. This change was uplifted to Firefox 62 ({{bug(1471959)}}).</li> + <li>{{WebExtAPIRef("cookies.Cookie")}} now includes a property indicating the SameSite state of the cookie. The {{WebExtAPIRef("cookies.SameSiteStatus")}} enumeration defines SameSite state values ({{bug(1351663)}}).</li> + <li>Match patterns for URLs now explicitly match the "data" URL scheme ({{bug(1280370)}}).</li> +</ul> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/63/">Site compatibility for Firefox 63</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(62)}}</p> diff --git a/files/es/mozilla/firefox/releases/66/index.html b/files/es/mozilla/firefox/releases/66/index.html new file mode 100644 index 0000000000..1231c4e85a --- /dev/null +++ b/files/es/mozilla/firefox/releases/66/index.html @@ -0,0 +1,162 @@ +--- +title: Firefox 66 para desarrolladores +slug: Mozilla/Firefox/Releases/66 +tags: + - '66' + - Firefox + - Lanzamiento + - Mozilla +translation_of: Mozilla/Firefox/Releases/66 +--- +<div>{{FirefoxSidebar}}</div> + +<p class="summary"><font>Este artículo proporciona información sobre los cambios en Firefox 66 que afectarán a los desarrolladores.<span> </span></font><font>Firefox 66 fue lanzado el 19 de marzo de 2019.</font></p> + +<h2 id="Cambios_para_desarrolladores_web" style='margin: 103px 0px 20px; padding: 0px; border: 0px; font-size: 2.33333rem; font-family: x-locale-heading-primary, zillaslab, Palatino, "Palatino Linotype", x-locale-heading-secondary, serif; line-height: 1.2; position: relative; color: rgb(51, 51, 51); font-style: normal; letter-spacing: -0.04448px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-style: initial;'><font><font>Cambios para desarrolladores web</font></font></h2> + +<h3 id="Herramientas_de_desarrollo">Herramientas de desarrollo</h3> + +<ul> + <li><font><font>Los captadores de JavaScript ahora pueden ejecutarse desde la ventana emergente de autocompletado en la<span> </span></font></font> <a href="https://developer.mozilla.org/en-US/docs/Tools/Web_Console">Consola Web</a> ({{bug(1499289)}}).</li> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Los métodos de la ventana</span> {{domxref("Window.alert()", "alert()")}}, {{domxref("Window.prompt()","prompt()")}}, and {{domxref("Window.confirm()","confirm()")}} ahora trabajan de nuevo en el <a href="https://developer.mozilla.org/en-US/docs/Tools/Responsive_Design_Mode">Modo de diseño de respuesta</a>, <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">después de un período de ruptura </span>({{bug(1273997)}}).</li> + <li style="margin: 0px 0px 6px; padding: 0px; border: 0px;"><font><font>Puede copiar la salida de la consola al portapapeles haciendo clic derecho y seleccionando "</font></font><strong style="border: 0px; margin: 0px; padding: 0px;"><font><font>Exportar mensajes visibles al portapapeles</font></font></strong><font><font>" en el menú contextual.</font></font></li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li><font><font>Los archivos HTML (y texto sin formato)<span> </span></font><font>codificados en UTF-8 que se<span> </span></font><font>cargan desde las<span> </span></font></font><code style='margin: 0px; padding: 0px 2px; border: 0px; font-style: normal; font-weight: 400; background-color: rgba(220, 220, 220, 0.5); border-radius: 2px; font-family: consolas, "Liberation Mono", courier, monospace; color: rgb(51, 51, 51); font-size: 16px; letter-spacing: -0.04448px; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; text-decoration-style: initial;'>file:</code><font><font>URL ahora son compatibles sin<span> </span></font></font><code style='margin: 0px; padding: 0px 2px; border: 0px; font-style: normal; font-weight: 400; background-color: rgba(220, 220, 220, 0.5); border-radius: 2px; font-family: consolas, "Liberation Mono", courier, monospace; color: rgb(51, 51, 51); font-size: 16px; letter-spacing: -0.04448px; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; text-decoration-style: initial;'><meta charset="utf-8"> </code><font><font>la lista de materiales UTF-8 BOM, lo que facilita el trabajo local en dichos archivos antes de cargarlos en un servidor.<span> </span></font><font>Aún debe asegurarse de que el servidor envíe<span> </span></font></font><code style='margin: 0px; padding: 0px 2px; border: 0px; font-style: normal; font-weight: 400; background-color: rgba(220, 220, 220, 0.5); border-radius: 2px; font-family: consolas, "Liberation Mono", courier, monospace; color: rgb(51, 51, 51); font-size: 16px; letter-spacing: -0.04448px; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; text-decoration-style: initial;'>charset=utf-8</code><font><font> en el<span> </span></font></font><code style='margin: 0px; padding: 0px 2px; border: 0px; font-style: normal; font-weight: 400; background-color: rgba(220, 220, 220, 0.5); border-radius: 2px; font-family: consolas, "Liberation Mono", courier, monospace; color: rgb(51, 51, 51); font-size: 16px; letter-spacing: -0.04448px; text-align: left; text-indent: 0px; text-transform: none; white-space: normal; text-decoration-style: initial;'>Content-Type</code><font><font> encabezado HTTP para dichos archivos, de lo contrario, el mecanismo de detección utilizado para los archivos locales interrumpiría la carga incremental en el caso de la red<span> </span></font></font> ({{bug(1071816)}}).</li> +</ul> + +<h4 id="Removido" style='margin: 30px 0px 20px; padding: 0px; border: 0px; font-size: 1.33333rem; font-family: x-locale-heading-primary, zillaslab, Palatino, "Palatino Linotype", x-locale-heading-secondary, serif; line-height: 1.2; color: rgb(51, 51, 51); font-style: normal; letter-spacing: -0.04448px; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; background-color: rgb(255, 255, 255); text-decoration-style: initial;'><font><font>Removido</font></font></h4> + +<ul> + <li>El <code>x-moz-errormessage</code> <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">atributo se ha eliminado del</span> {{HTMLElement("input")}} elemento ({{bug(1513890)}}). Debe usar {{domxref("Constraint_validation", "Funciones de validación de restricciones", "", "1")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">para implementar mensajes de validación personalizados en su luga</span>r.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><a href="https://drafts.csswg.org/css-scroll-anchoring/">El Anclaje de desplazamiento</a> <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">se ha implementado en Firefox Desktop (pero todavía no en dispositivos móviles), que incluye la</span> {{cssxref("overflow-anchor")}} propiedad ({{bug(1305957)}}).</li> + <li><font>Hemos implementado el<span> </span></font><font>modificador de</font> <a href="/en-US/docs/Web/CSS/Attribute_selectors">selector de atributo</a> que distingue entre <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">mayúsculas y minúsculas</span>, <code>s</code> ({{Bug(1512386)}}).</li> + <li>Varias <a href="/en-US/docs/Web/CSS/CSS_Logical_Properties">propiedades logicas</a><font><font> abreviadas</font><font><span> </span>han aterrizado, junto con las propiedades del radio del borde relativo al flujo:</font></font> + <ul> + <li>{{cssxref("padding-block")}} y {{cssxref("padding-inline")}} ({{bug(1519847)}}).</li> + <li>{{cssxref("margin-block")}} y {{cssxref("margin-inline")}} ({{bug(1519944)}}).</li> + <li>{{cssxref("inset")}}, {{cssxref("inset-block")}}, y {{cssxref("inset-inline")}} ({{bug(1520229)}}).</li> + <li>{{cssxref("border-block-color")}}, {{cssxref("border-block-style")}}, {{cssxref("border-block-width")}}, {{cssxref("border-inline-color")}}, {{cssxref("border-inline-style")}}, and {{cssxref("border-inline-width")}} ({{bug(1520236)}}).</li> + <li>{{cssxref("border-block")}} y {{cssxref("border-inline")}} ({{bug(1520396)}}).</li> + <li>{{cssxref("border-start-start-radius")}}, {{cssxref("border-start-end-radius")}}, {{cssxref("border-end-start-radius")}}, y {{cssxref("border-end-end-radius")}} ({{bug(1520684)}}).</li> + </ul> + </li> + <li><font>Implementamos las<span> </span></font><font>consultas</font> {{cssxref("@media/overflow-inline", "overflow-inline")}} y {{cssxref("@media/overflow-block", "overflow-block")}} medios ({{Bug(1422235)}}).</li> + <li>{{cssxref("grid-template-columns")}} y {{cssxref("grid-template-rows")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">ahora se pueden animar, según las reglas establecidas en sus especificaciones</span> ({{bug(1348519)}}).</li> + <li>Ahora soportamos {{cssxref("calc")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">con porcentajes para celdas de tabla y anchos de columna</span> ({{bug(957915)}}).</li> + <li><font>Las<span> </span></font><font>palabras clave</font> <code>min-content</code> y <code>max-content</code> <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">ahora están disponibles sin prefijo</span> ({{bug(1322780)}}). <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Estos se pueden establecer en</span>: + <ul> + <li>{{cssxref("width")}}</li> + <li>{{cssxref("height")}}</li> + <li>{{cssxref("flex-basis")}}</li> + <li>{{cssxref("min-width")}}</li> + <li>{{cssxref("max-width")}}</li> + <li>{{cssxref("min-height")}}</li> + <li>{{cssxref("max-height")}}</li> + <li>{{cssxref("min-block-size")}}</li> + <li>{{cssxref("min-inline-size")}}</li> + <li>{{cssxref("max-block-size")}}</li> + <li>{{cssxref("max-inline-size")}}</li> + <li>{{cssxref("block-size")}}</li> + <li>{{cssxref("inline-size")}}</li> + </ul> + </li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No hay adicionales.</em></p> + +<h4 id="Removido_2">Removido</h4> + +<ul> + <li>Eliminamos el soporte para <code><a href="/en-US/docs/XML_introduction/xml:base">xml:base</a></code> atributo ({{Bug(903372)}}).</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p><em>Sin cambios.</em></p> + +<h3 id="APIs">APIs</h3> + +<h4 id="Nuevos_en_APIscambios">Nuevos en APIs/cambios</h4> + +<ul> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">La reproducción automática de audio se bloqueará de forma predeterminada poco después de que la versión 66 se convierta en la versión de lanzamiento de Firefox</span> ({{bug(1487844)}}, <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">consulte el</span> {{bug(1535667)}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">para obtener información detallada sobre la implementación</span>). <font><span> </span></font><font>La función se extenderá gradualmente a los usuarios hasta que todos la tengan.</font></li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>El {{domxref("HTMLSlotElement.assignedElements()")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">método ha sido implementado</span> ({{bug(1425685)}}).</li> + <li>El {{domxref("TextEncoder.encodeInto()")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">método ha sido implementado</span> ({{bug(1514664)}}).</li> +</ul> + +<h4 id="Eventos_DOM">Eventos DOM</h4> + +<ul> + <li>La {{domxref("InputEvent.inputType")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">propiedad ha sido implementada</span> ({{bug(1447239)}}).</li> + <li><font>Las<span> </span></font><font>propiedades</font> {{domxref("Window.event")}} y {{domxref("Event.returnValue")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">ropiedades, que originalmente eran propiedad de IE, y que luego se admitían en otros navegadores por motivos de compatibilidad, se han vuelto a introducir en Firefox 66, después de haber sido agregadas primero en las versiones 63 y 64 respectivamente, pero luego se eliminaron nuevamente debido a problemas de compatibilidad.</span></li> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">A partir de 66, cuando la</span> {{domxref("KeyboardEvent.keyCode")}} propiedad del {{event("keypress")}} evento del objeto es 0, <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">el valor será el mismo que<span> </span></span> {{domxref("KeyboardEvent.charCode")}}. <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Por el contrario, cuando</span>, <code>charCode</code> es 0, <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">será igual que</span> <code>keyCode</code>. <font><font>Este comportamiento de duplicación coincide con otros navegadores y se espera que solucione la mayoría de los problemas de compatibilidad asociados, sin embargo, la detección de agentes de usuario puede causar problemas adicionales en algunas bibliotecas de JavaScript.<span> </span></font><font>Tenga en cuenta que en términos de especificaciones, hemos cambiado desde el<span> </span></font></font><em><font><font>modelo de división</font></font></em><font><font><span> </span>del<span> </span></font></font><em><font><font>modelo fusionado</font></font></em> (ver <a href="https://w3c.github.io/uievents/#determine-keypress-keyCode">Como determinar keyCode para eventos de pulsaciones de tecla</a> <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">en la especificación de interfaz de usuario de eventos</span>).</li> +</ul> + +<h4 id="Media_Audio_Web_y_WebRTC">Media, Audio Web, y WebRTC</h4> + +<ul> + <li>El {{domxref("MediaDevices")}} método {{domxref("MediaDevices.getDisplayMedia", "getDisplayMedia()")}}, <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">disponible como<span> </span></span><code>navigator.mediaDevices.getDisplayMedia()</code>, <font>se ha agregado y sincronizado con la especificación.<span> </span></font><font>Este método le permite capturar una pantalla o parte de una pantalla<span> </span></font>{{domxref("MediaStream")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">para manipularla o compartirla</span> ({{bug(1321221)}}).</li> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Como un paso hacia la desaprobación específico de Firefox<span> </span></span> {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}}- <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">método basado para capturar contenido de la pantalla y de la ventana, no la restricción </span><code>mediaSource</code> <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">estándar, ahora trata los valores</span> <code>screen</code> y <code>window</code> de forma idéntica. <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Ambos ahora presentan una lista de pantallas y ventanas para que el usuario pueda elegir</span> ({{bug(1474376)}}).</li> + <li>{{domxref("RTCRtpStreamStats.qpSum", "qpSum")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Se ha agregado a</span> {{domxref("RTCRTPStreamStats")}} <font>objetos de<span> </span></font><font>salida locales</font>. <font>Esto mide el total de los valores de los parámetros de cuantización para cada fotograma enviado o recibido en la pista de video.<span> </span></font><font>Cuanto mayor sea este número, más comprimida estará probablemente la transmisión</font> ({{bug(1347070)}}).</li> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">En un paso en el camino hacia la implementación del soporte para la Política de funciones en una futura actualización de Firefox</span>, {{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">a no se puede usar en situaciones en las que no hay un origen adecuado para el contenido, como cuando se llama desde un espacio aislado</span> {{HTMLElement("iframe")}} o desde una <code>data</code> URL <font><span> </span>ingresada en el Barra de direcciones por el usuario.<span> </span></font><font>Para obtener más detalles específicos, consulte</font> {{SectionOnPage("/en-US/docs/Web/API/MediaDevices/getUserMedia", "Security")}} ({{bug(1371741)}}).</li> +</ul> + +<h4 id="Removido_3">Removido</h4> + +<ul> + <li>El legado WebRTC {{domxref("PeerConnection.getStats()")}} <font>método<span> </span></font><font>heredado de WebRTC<span> </span></font><font>se ha eliminado, junto con los tipos asociados</font> ({{bug(1328194)}}).</li> +</ul> + +<h3 id="Redes">Redes</h3> + +<ul> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">El valor predeterminado del</span> {{httpheader("Accept")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">encabezado se ha cambiado a</span> <code>*/*</code> ({{bug(1417463)}}).</li> +</ul> + +<h3 id="Seguridad">Seguridad</h3> + +<p><em>Sin cambios.</em></p> + +<h3 id="Complementos">Complementos</h3> + +<p><em>Sin cambios.</em></p> + +<h2 id="Cambios_para_desarrolladores_de_complementos">Cambios para desarrolladores de complementos</h2> + +<h3 id="Cambios_en_la_API">Cambios en la API</h3> + +<h4 id="Menús">Menús</h4> + +<ul> + <li><span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">Los elementos del menú de extensión del "marcador"</span> {{WebExtAPIRef("menus.ContextType", "type")}} <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">también aparecerán en la barra lateral de Marcadores</span> (<kbd>Ctrl</kbd> + <kbd>B</kbd>) <span style="background-color: #ffffff; color: #333333; display: inline !important; float: none; font-family: Arial,x-locale-body,sans-serif; font-size: 16px; font-style: normal; font-weight: 400; letter-spacing: -0.04448px; text-align: left; text-decoration-style: initial; text-indent: 0px; text-transform: none; white-space: normal;">y en la ventana de la Biblioteca</span> (<kbd>Ctrl</kbd> + <kbd>Shift</kbd> + <kbd>B</kbd>) ({{bug(1419195)}}).</li> +</ul> + +<h3 id="Cambios_en_Manifesto">Cambios en Manifesto</h3> + +<p><em>Sin cambios.</em></p> + +<h2 id="Véase_también_la">Véase también la</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/66/">Compatibilidad del sitio para Firefox 66</a></li> +</ul> + +<h2 id="Versiones_anteriores">Versiones anteriores</h2> + +<p>{{Firefox_for_developers(65)}}</p> diff --git a/files/es/mozilla/firefox/releases/67/index.html b/files/es/mozilla/firefox/releases/67/index.html new file mode 100644 index 0000000000..a60df8ab8a --- /dev/null +++ b/files/es/mozilla/firefox/releases/67/index.html @@ -0,0 +1,198 @@ +--- +title: Firefox 67 for developers +slug: Mozilla/Firefox/Releases/67 +tags: + - '67' + - Firefox + - Lanzamiento + - Mozilla +translation_of: Mozilla/Firefox/Releases/67 +--- +<p>{{FirefoxSidebar}}</p> + +<p class="summary">Este artículo provee información sobre los cambios en Firefox 67 que afectarán a los desarrolladores. Firefox 67 fue lanzado el 21 de Mayo de 2019.</p> + +<h2 id="Cambios_para_desarrolladores_web">Cambios para desarrolladores web</h2> + +<h3 id="Herramientas_de_desarrollo">Herramientas de desarrollo</h3> + +<ul> + <li>Actualizaciones del depurador: + <ul> + <li><a href="/en-US/docs/Tools/Debugger/How_to/Set_a_breakpoint">Los puntos de interrupción de columna</a> te permiten elegir el punto específico (o columna) en una línea de código donde quieres que el depurador pare ({{bug(1528417)}}).</li> + <li><a href="/en-US/docs/Tools/Debugger/Set_a_log_point">Los puntos de registro</a> te permiten registrar información específica a la consola durante la ejecución de código sin pausar la ejecución y sin la necesidad de cambiar el código.</li> + <li>The <a href="/en-US/docs/Tools/Debugger/Using_the_Debugger_map_scopes_feature">map scopes feature</a> allows you to view the variables from the original source.</li> + <li>You can <a href="/en-US/docs/Tools/Debugger/Debug_worker_threads">debug service worker</a> threads directly in the debugger.</li> + </ul> + </li> + <li><a href="/en-US/docs/Tools/Web_Console">Web Console</a> updates: + <ul> + <li>Navigate details in the console using the keyboard ({{bug(1424159)}}).</li> + <li>Cmd + K will now clear the console of its contents on macOS ({{bug(1532939)}}).</li> + <li>When the user clears the console, the error messages cache is cleared as well ({{bug(717611)}}).</li> + <li>The user can import existing modules into the current page using import ({{bug(1517546)}}).</li> + <li>A new context menu item allows the user to use the <strong>Copy Link Location</strong> command ({{bug(1457111)}}).</li> + <li>Clicking a link in the Console causes the same behavior that it would in a content window ({{bug(1466040)}}).</li> + <li>Clicking the source link for a code file in the Console panel navigates to the Debugger if debugger knows the file ({{bug(1447244)}}).</li> + <li>When the user has filtered the contents of the console, an icon will be added to the filter text box to clear the filter ({{bug(1525821)}}).</li> + </ul> + </li> + <li><a href="/en-US/docs/Tools/Network_Monitor">Network Monitor</a> enhancements: + <ul> + <li>The <a href="/en-US/docs/Tools/Network_Monitor/request_details#Headers">Header</a> panel of the Network monitor will now display a notification for resources belonging to a known tracker ({{bug(1485416)}}).</li> + <li>In the Network monitor <a href="/en-US/docs/Tools/Network_Monitor/request_list#Network_request_columns">request columns</a>, you can control the visible columns and column sorting. The context menu now includes a command to restore the list sort parameters to the default ({{bug(1454962)}}).</li> + </ul> + </li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>The following Developer Tools panels have been removed (see <a href="/en-US/docs/Tools/Deprecated_tools">Deprecated tools</a> for details): + + <ul> + <li>Canvas debugger ({{bug(1403938)}}).</li> + <li>Shader editor ({{bug(1342237)}}).</li> + <li>WebAudio editor ({{bug(1403944)}}).</li> + </ul> + </li> + <li>The following Developer Tools have been deprecated (see <a href="/en-US/docs/Tools/Deprecated_tools">Deprecated tools</a> for details): + <ul> + <li>WebIDE ({{bug(1539462)}}).</li> + <li>Connect... page ({{bug(1539462)}}).</li> + </ul> + </li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>{{htmlelement("input")}} elements with <code><a href="/en-US/docs/Web/HTML/Attributes/autocomplete">autocomplete</a>="new-password"</code> set on them will no longer have previously saved passwords auto-filled ({{bug(1119063)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>The {{cssxref("revert")}} keyword has been implemented ({{bug(1215878)}}).</li> + <li>The <code>break-word</code> value of the {{cssxref("word-break")}} property is now supported ({{bug(1296042)}}).</li> + <li>The <code><a href="/en-US/docs/Web/CSS/@media/prefers-color-scheme">prefers-color-scheme</a></code> media feature is now supported ({{bug(1494034)}}).</li> + <li>Custom {{cssxref("cursor")}}s of greater than 32px in size are now disallowed, to mitigate potential malware uses of large cursors ({{bug(1445844)}}).</li> +</ul> + +<h4 id="Removals_2">Removals</h4> + +<ul> + <li>Use of the proprietary {{cssxref("-moz-binding")}} property is now restricted to chrome and UA-stylesheets ({{bug(1523712)}}).</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>{{jsxref("String.prototype.matchAll")}} has been implemented and enabled by default ({{bug(1435829)}}, {{bug(1531830)}}).</li> + <li>Support for the dynamic module {{jsxref("Statements/import", "import()", "#Dynamic_Imports")}} proposal is now available by default ({{bug(1517546)}}).</li> + <li>The <a href="/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Hashbang_comments">hashbang grammar</a> proposal is now implemented ({{bug(1519097)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The default value for {{domxref("Response.statusText")}} is now <code>""</code> ({{bug(1508996)}}).</li> + <li>The default value for the {{domxref("VTTCue")}} interface's <code>positionAlign</code> property is now auto ({{bug(1528420)}}).</li> + <li>User gestures are now preserved for rejected calls to {{domxref("Document.requestStorageAccess")}}, as well as fulfilled calls ({{bug(1522912)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<ul> + <li>CSS transition ({{bug(1530239)}}) and animation ({{bug(1531605)}}) events now fire on disabled (e.g. form) elements.</li> + <li>{{domxref("InputEvent.data")}} and {{domxref("InputEvent.dataTransfer")}} have been implemented ({{bug("998941")}}).</li> + <li>The <code>insertFromPasteAsQuotation</code> {{domxref("InputEvent.inputType")}} value is now supported ({{bug(1532527)}}).</li> +</ul> + +<h4 id="WorkersService_workers">Workers/Service workers</h4> + +<ul> + <li>Strict MIME type checks are now enforced on scripts imported by {{domxref("WorkerGlobalScope.importScripts()")}} ({{bug(1514680)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li><a href="https://code.videolan.org/videolan/dav1d">dav1d</a> is now the default media decoder for <a href="https://aomediacodec.github.io/av1-spec/av1-spec.pdf">AV1</a> (see for example {{bug(1533742)}} and {{bug(1535038)}}).</li> + <li>Calling {{domxref("RTCPeerConnection.addTrack()")}} without specifying any streams to which to add the new track now works as expected: it adds a streamless track to the connection. Each peer is responsible for managing the association between the track and any stream on its end ({{bug(1231414)}}).</li> + <li>The {{domxref("MediaDeviceInfo.groupId")}} property is now implemented ({{bug(1213453)}}). While it has existed in Firefox since Firefox 39, it did not actually gather related devices together into the same group IDs.</li> + <li>The {{domxref("RTCIceCandidate.usernameFragment")}} property is now implemented ({{bug(1490658)}}).</li> +</ul> + +<h4 id="Canvas_and_WebGL">Canvas and WebGL</h4> + +<ul> + <li>The <code><a href="/en-US/docs/Web/API/EXT_float_blend">EXT_float_blend</a></code> WebGL extension has been enabled by default ({{bug(1535808)}}).</li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<ul> + <li>The deprecated <code>ShadowRoot.getElementsByTagName</code>, <code>ShadowRoot.getElementsByTagNameNS</code>, and <code>ShadowRoot.getElementsByClassName</code> properties (part of Shadow DOM v0) have been removed ({{bug(1535438)}}).</li> + <li><code><a href="/en-US/docs/Web/API/Document/createEvent">Document.createEvent("TouchEvent")</a></code>, {{domxref("Document.createTouch()")}}, {{domxref("Document.createTouchList()")}}, and the <code>ontouch*</code> event handler properties have been disabled on desktop to improve web compatibility on websites where touch support is used for mobile detection ({{bug(1412485)}}). In such cases, websites have been seen to behave incorrectly or unexpectedly on touchscreen laptops.</li> +</ul> + +<h3 id="Security">Security</h3> + +<ul> + <li><a href="/en-US/docs/Web/API/Notifications_API">Notifications</a> are now only available in a <a href="/en-US/docs/Web/Security/Secure_Contexts">secure context</a> ({{bug(1429432)}}).</li> + <li>Firefox now blocks the loading of external protocol URLs in {{htmlelement("iframe")}}s ({{bug(1527882)}}).</li> +</ul> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="API_changes">API changes</h4> + +<ul> + <li>Made <code>WebDriver:SendAlertText</code> conformant to the <a href="https://w3c.github.io/webdriver/">WebDriver specification</a> ({{bug(1502360)}}).</li> +</ul> + +<h4 id="Corrección_de_errores">Corrección de errores</h4> + +<ul> + <li><code>WebDriver:NewWindow</code> will no longer timeout because of <code>focus</code>-related inconsistencies across platforms ({{bug(1523234)}}).</li> +</ul> + +<h4 id="Otros">Otros</h4> + +<ul> + <li>Both <code>WebDriver:ExecuteScript</code> and <code>WebDriver:ExecuteAsyncScript</code> now use <code>Promises</code> internally ({{bug(1398095)}}).</li> + <li><code>WebDriver:NewSession</code> returns Firefox's <code>BuildID</code> string as part of the capabilities object ({{bug(1525829)}}).</li> +</ul> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="Cambios_en_API">Cambios en API</h3> + +<ul> + <li>Using the <code>proxy.settings.set()</code> method to change <code>{{WebExtAPIRef("types.BrowserSetting", "BrowserSetting")}}</code> values will throw an exception unless the extension was granted private window access by the user ({{bug(1525447)}}).</li> +</ul> + +<h3 id="Cambios_en_manifiesto">Cambios en manifiesto</h3> + +<ul> + <li>A new manifest key, <a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/manifest.json/incognito">incognito</a>, defines the behavior of an extension in private browsing windows or tabs ({{bug(1511636)}}).</li> + <li>The <code>toolbar_field_highlight</code> setting controls the background color used to indicate the current selection of text in the URL bar ({{bug(1450114)}}).</li> + <li>The <code>toolbar_field_highlight_text</code> setting controls the text color used to indicate the current selection of text in the URL bar ({{bug(1450114)}}).</li> +</ul> + +<h2 id="Ver_también">Ver también</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/67/">Sitio de compatibilidad para Firefox 67</a></li> +</ul> + +<h2 id="Versiones_anteriores">Versiones anteriores</h2> + +<p>{{Firefox_for_developers(66)}}</p> diff --git a/files/es/mozilla/firefox/releases/68/index.html b/files/es/mozilla/firefox/releases/68/index.html new file mode 100644 index 0000000000..4c2649dcd2 --- /dev/null +++ b/files/es/mozilla/firefox/releases/68/index.html @@ -0,0 +1,233 @@ +--- +title: Firefox 68 for developers +slug: Mozilla/Firefox/Releases/68 +translation_of: Mozilla/Firefox/Releases/68 +--- +<p>{{FirefoxSidebar}}</p> + +<p class="summary">This article provides information about the changes in Firefox 68 that will affect developers. Firefox 68 was released on July 9, 2019.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="Developer_tools">Developer tools</h3> + +<h4 id="Browserweb_console">Browser/web console</h4> + +<ul> + <li>The Web console now shows <a href="/en-US/docs/Tools/Web_Console/Console_messages#CSS">more information about CSS warnings</a>, including a node list of the DOM elements that used the rule ({{bug(1093953)}}).</li> + <li>You can now filter content in the Web console using regular expressions ({{bug(1441079)}}).</li> + <li>The Browser console now allows you to show or hide messages from the content process by setting or clearing the checkbox labeled <em>Show Content Messages</em> ({{bug(1260877)}}).</li> +</ul> + +<h4 id="JavaScript_debugger">JavaScript debugger</h4> + +<ul> + <li>You can now <a href="/en-US/docs/Tools/Debugger/How_to/Search#Searching_in_all_files">Search</a> in all files in the current project from the debugger by pressing <kbd>Shift</kbd> + <kbd>Ctrl</kbd> + <kbd>F</kbd> (Windows or Linux) or <kbd>Shift</kbd> + <kbd>Cmd</kbd> + <kbd>F</kbd> (macOS) ({{bug(1320325)}}).</li> +</ul> + +<h4 id="Network_monitor">Network monitor</h4> + +<ul> + <li>The Network monitor <a href="/en-US/docs/Tools/Network_Monitor/request_list#Filtering_requests">request list</a> now allows you to block a specific URL ({{bug(1151368)}}).</li> + <li>You can now resend a network request without editing the method, URL, parameters, and headers, using the <a href="/en-US/docs/Tools/Network_Monitor/request_list#Context_menu">Resend</a> command on the context menu ({{bug(1422014)}}).</li> + <li>The context menu of the Network monitor <a href="/en-US/docs/Tools/Network_Monitor/request_details#Headers">Headers</a> tab now allows you to copy all or some of the header information to the clipboard in JSON format ({{bug(1442249)}}).</li> +</ul> + +<h4 id="Page_inspector">Page inspector</h4> + +<ul> + <li>A button has been added to the <a href="/en-US/docs/Tools/Page_Inspector/How_to/Examine_and_edit_CSS#Examine_CSS_rules">rules panel</a> of the Page inspector that allows you to toggle the display of any print media queries ({{bug(1534984)}}).</li> + <li>The <a href="/en-US/docs/Tools/Page_Inspector/How_to/Edit_fonts">fonts panel</a> now includes a slider to modify <code>letter-spacing</code> ({{bug(1536237)}}).</li> + <li>A warning icon appears next to unsupported CSS properties or rules that have invalid values, to help you understand why certain styles are not being applied ({{bug(1306054)}}).</li> +</ul> + +<h4 id="Storage_inspector">Storage inspector</h4> + +<ul> + <li>You can now <a href="/en-US/docs/Tools/Storage_Inspector#Local_storage_Session_storage">delete local and session storage</a> entries by selecting the item in the storage inspector and pressing the backspace key ({{bug(1522893)}}).</li> +</ul> + +<h4 id="Other">Other</h4> + +<ul> + <li>The <a href="/en-US/docs/Tools/Accessibility_inspector">Accessibility Inspector</a> now includes a new <em>Check for issues</em> feature, which will include a number of audit tools to highlight accessibility problems on your web pages. The first available check is <em>contrast</em>, for highlighting color contrast problems.</li> + <li>The preference that controls the visibility of internal extensions (system add-ons and hidden extensions) on the <a href="/en-US/docs/Tools/about:debugging">about:debugging</a> page has been changed from <code>devtools.aboutdebugging.showSystemAddons</code> to <code>devtools.aboutdebugging.showHiddenAddons</code> ({{bug(1544372)}}).</li> + <li><a href="/en-US/docs/Tools/Responsive_Design_Mode">Responsive design mode</a> has been redesigned — the <em>Device Settings</em> dialog (device selection menu > <em>Edit List...</em>) is now more intuitive and simpler to use ({{bug(1487857)}}).</li> +</ul> + +<h4 id="Removals">Removals</h4> + +<ul> + <li>The "Enable add-on debugging" checkbox has been removed from the <a href="/en-US/docs/Tools/about:debugging">about:debugging</a> page ({{bug(1544813)}}).</li> +</ul> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The {{HTMLElement("track")}} element — represented by {{domxref("HTMLTrackElement")}} — now receives a {{domxref("HTMLTrackElement.cuechange_event", "cuechange")}} event in addition to the {{domxref("TextTrack")}} itself, if the text track is a contained by a media element ({{bug(1548731)}}).</li> + <li>{{htmlelement("link")}} elements support the <code>disabled</code> attribute again, albeit with different behavior. When <code>disabled</code> is set on a <code><link></code> element along with <code>rel="stylesheet"</code>, the referenced stylesheet is not loaded during page load, and will be loaded on demand when the <code>disabled</code> attribute is changed to <code>false</code> or removed ({{bug(1281135)}}).</li> +</ul> + +<h4 id="Removals_2"> Removals</h4> + +<ul> + <li><code><a href="/en-US/docs/Web/HTML/Element/meta"><meta http-equiv="set-cookie"></a></code> is no longer supported ({{bug(1457503)}}).</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li><a href="/en-US/docs/Web/CSS/CSS_Scroll_Snap">CSS Scroll Snapping</a> has been updated to the latest version of the specification ({{bug(1312163)}}) and ({{bug(1544136)}}), this includes: + + <ul> + <li>The <code>scroll-padding</code> properties ({{bug(1373832)}})</li> + <li>The <code>scroll-margin</code> properties ({{bug(1373833)}})</li> + <li>{{CSSxRef("scroll-snap-align")}} ({{bug(1373835)}})</li> + </ul> + </li> + <li>The {{CSSxRef("-webkit-line-clamp")}} property has been implemented for compatibility with other browsers ({{bug(866102)}}).</li> + <li>Support has been added for the {{CSSxRef("::marker")}} pseudo-element ({{bug(205202)}}) and animation for <code>::marker</code> pseudos ({{bug(1538618)}})</li> + <li>We changed {{CSSxRef("currentColor")}} to be a computed value (except for the {{cssxref("color")}} property) ({{bug(760345)}}).</li> + <li>Support has been fixed for the <code>ch</code> length unit so it now matches the spec (fallback for no '0' glyph, vertical metrics) ({{bug(282126)}})</li> + <li>The {{CSSxRef("counter-set")}} property has been implemented. ({{bug(1518201)}}).</li> + <li>We now implement list numbering using a built-in "list-item" counter; this fixes list numbering bugs ({{bug(288704)}}).</li> + <li>Selector matching and parsing support has been implemented for <code><a href="/en-US/docs/Web/CSS/::part">::part()</a></code> ({{bug(1545430)}}) and ({{bug(1545425)}}).</li> + <li><a href="/en-US/docs/Web/CSS/CSS_Transforms">CSS Transforms</a> are now supported in indirectly rendered things e.g.) {{SVGElement("mask")}}, {{SVGElement("marker")}}, {{SVGElement("pattern")}}, {{SVGElement("clipPath")}} ({{bug(1323962)}}).</li> + <li> + <p>While we're keeping the prefixed versions of the various gradient properties ({{cssxref("linear-gradient")}}, {{cssxref("radial-gradient")}}, and {{cssxref("repeating-radial-gradient")}} available for compatibility reasons, we have revised how they're parsed so that they're handled much more like the non-prefixed versions. This means that certain existing styles won't work correctly.</p> + + <p>In particular, the complicated syntax taking both an angle and a position will no longer work, and the <code>to</code> keyword in the <code><side-or-corner></code> parameter is not required for the prefixed gradient properties. You are encouraged to use the standard, non-prefixed gradient properties instead, as they're now widely supported ({{bug(1547939)}}).</p> + </li> +</ul> + +<h4 id="Removals_3">Removals</h4> + +<ul> + <li>{{CSSxRef("scroll-snap-coordinate")}}, {{CSSxRef("scroll-snap-destination")}}, {{CSSxRef("scroll-snap-type-x")}} and {{CSSxRef("scroll-snap-type-y")}} have been removed.</li> + <li>The {{CSSxRef("scroll-snap-type")}} property has become a longhand, so the old shorthand syntax like <code>scroll-snap-type:mandatory</code> will stop working. See the <a href="https://www.fxsitecompat.com/en-CA/docs/2019/legacy-css-scroll-snap-syntax-support-has-been-dropped/">Firefox Site Compatability</a> note.</li> +</ul> + +<h3 id="SVG">SVG</h3> + +<p><em>No changes.</em></p> + +<h3 id="JavaScript">JavaScript</h3> + +<ul> + <li>The new {{jsxref("BigInt")}} primitive is enabled by default ({{bug(1527902)}}).</li> +</ul> + +<h3 id="APIs">APIs</h3> + +<h4 id="CSS_Object_Model_(CSSOM)">CSS Object Model (CSSOM)</h4> + +<ul> + <li>The legacy {{domxref("CSSStyleSheet.rules", "rules")}} property and {{domxref("CSSStyleSheet.addRule", "addRule()")}} and {{domxref("CSSStyleSheet.removeRule", "removeRule()")}} methods have been added to the {{domxref("CSSStyleSheet")}} interface. These were introduced by Internet Explorer 9 and have never managed to quite be stamped out, so they have been added to improve compatibility with the small percentage of sites that still use them ({{bug(1545823)}}).</li> +</ul> + +<h4 id="DOM">DOM</h4> + +<ul> + <li>The <a href="/en-US/docs/Web/API/Visual_Viewport_API">Visual Viewport API</a> has now been enabled by default on Android ({{bug(1512813)}}). Adding this API to desktop versions of Firefox is being tracked in {{bug(1551302)}}.</li> + <li>The {{domxref("Window")}} feature <code><a href="/en-US/docs/Web/API/Window/open#noreferrer">noreferrer</a></code> is now supported; if specified, the new window's content is loaded without sharing the hostname, IP address, URL, or other identifying information about the host device ({{bug(1527287)}}).</li> + <li>The {{domxref("HTMLImageElement.decode", "decode()")}} method on <code>HTMLImageElement</code> is now implemented. This can be used to trigger loading and decoding of an image prior to adding it to the DOM ({{bug(1501794)}}).</li> + <li>{{domxref("XMLHttpRequest")}} has been updated to no longer accept the non-standard <code>moz-chunked-arraybuffer</code> value for {{domxref("XMLHttpRequest.responseType", "responseType")}}. Code still using it should be updated to <a href="/en-US/docs/Web/API/Streams_API/Using_readable_streams#Consuming_a_fetch_as_a_stream">use the Fetch API as a stream</a> ({{bug(1120171)}}).</li> + <li><code>XMLHttpRequest</code> now outputs a warning to console if you perform a synchronous request while handling an {{domxref("Window.unload_event", "unload")}}, {{domxref("Window.beforeunload_event", "beforeunload")}}, or {{domxref("Window.pagehide_event", "pagehide")}} event ({{bug(980902)}}).</li> + <li>The {{domxref("Document.cookie", "cookie")}} property has moved from the {{domxref("HTMLDocument")}} interface to the {{domxref("Document")}} interface, allowing documents other than {{Glossary("HTML")}} to use cookies ({{bug(144795)}}).</li> + <li>The {{domxref("HTMLElement.focus()")}} and {{domxref("SVGElement.focus()")}} methods now accept an optional object that may contain a boolean <code>preventScroll</code> option specifying whether or not to block the browser from scrolling the newly-focused element into view ({{bug(1374045)}}).</li> +</ul> + +<h4 id="DOM_events">DOM events</h4> + +<ul> + <li><a href="/en-US/docs/Mozilla/Firefox_for_Android">Firefox for Android</a> no longer incorrectly sends a {{domxref("Window.resize_event", "resize")}} event until after the first frame is painted; this improves web compatibility with sites that don't expect this event to occur ({{bug(1528052)}}).</li> + <li>The dispatching of events for non-primary mouse buttons has been made to more closely follow the specification; the {{domxref("Element.click_event", "click")}} event is no longer sent when non-primary buttons are clicked, instead using {{domxref("Element.auxclick_event", "auxclick")}}. In addition, {{domxref("Element.dblclick_event", "dblclick")}} no longer fires for non-primary buttons ({{bug(1379466)}}).</li> + <li>The proprietary {{domxref("MouseEvent.mozPressure")}} property has been deprecated, and will now trigger a warning in the console ({{bug(1165211)}}).</li> +</ul> + +<h4 id="Media_Web_Audio_and_WebRTC">Media, Web Audio, and WebRTC</h4> + +<ul> + <li>WebRTC has been updated to recognize that a <code>null</code> candidate passed into the {{domxref("RTCPeerConnection.icecandidate", "icecandidate")}} event handler, indicating the receipt of a candidate, instead indicates that there are no further candidates coming; when this happens the ICE gathering ({{domxref("RTCPeerConnection.iceGatheringState", "iceGatheringState")}}) state reaches <code>complete</code> ({{bug(1318167)}}).</li> + <li>The {{domxref("RTCRtpReceiver")}} methods {{domxref("RTCRtpReceiver.getContributingSources", "getContributingSources()")}} and {{domxref("RTCRtpReceiver.getSynchronizationSources", "getSynchronizationSources()")}} now support video tracks; previously they only worked on audio ({{bug(1534466)}}).</li> + <li>The Web Audio API {{domxref("MediaStreamTrackAudioSourceNode")}} interface is now supported, as is the method {{domxref("AudioContext.createMediaStreamTrackSource()")}} ({{bug(1324548)}}).</li> + <li>{{domxref("RTCDataChannel.negotiated")}} is now implemented ({{bug(1529695)}}).</li> + <li>The {{domxref("MediaStreamAudioSourceNode.MediaStreamAudioSourceNode", "MediaStreamAudioSourceNode()")}} constructor has been updated to match the current specification's definition that the "first audio track" in the stream is the track whose ID comes first in lexicographical order ({{bug(1324548)}}).</li> + <li> + <p>{{domxref("MediaDevices.getUserMedia", "getUserMedia()")}} may no longer be used from a non-secure context; attempting to do so now throws a <code>NotAllowedError</code> exception. Secure contexts are those loaded using HTTPS, those located using the <code>file:///</code> scheme, and those loaded from <code>localhost</code>. For now, if you must, you can re-enable the ability to perform insecure calls to <code>getUserMedia()</code> by setting the preference <code>media.getusermedia.insecure.enabled</code> to <code>true</code> ({{bug(1335740)}}).</p> + + <div class="blockIndicator note"> + <p><strong>Note:</strong> In the future, Firefox will also remove the {{domxref("navigator.mediaDevices")}} property on insecure contexts, preventing all access to the {{domxref("MediaDevices")}} APIs. <strong>This is already the case in Nightly builds.</strong></p> + </div> + </li> +</ul> + +<h4 id="Removals_4">Removals</h4> + +<ul> + <li>Removed the non-standard {{DOMxRef("XMLDocument.load()")}} method ({{bug(332175)}}).</li> + <li>Removed the non-standard {{DOMxRef("XMLDocument.async")}} property ({{bug(1328138)}}).</li> + <li>The {{domxref("RTCIceCredentialType")}} <code>token</code> value has been removed ({{bug(1529595)}}).</li> +</ul> + +<h3 id="HTTP">HTTP</h3> + +<ul> + <li>The <a href="/en-US/docs/Web/HTTP">HTTP</a> {{HTTPHeader("Clear-Site-Data")}} header no longer supports the <code>executionContexts</code> directive. This was removed due to problems with interactions between interconnections among different kinds of data at different points in the navigation process and the way the specification is designed. It <a href="https://github.com/w3c/webappsec-clear-site-data/issues/59">has been proposed</a> that this directive be removed from the specification for this reason, among others ({{bug(1548034)}}).</li> +</ul> + +<h4 id="Removals_5">Removals</h4> + +<ul> + <li>The {{HTTPHeader("Content-Security-Policy")}} directive <code>require-sri-for</code> is no longer supported due to concerns about its standardization status. It was previously available only behind a preference, which was off by default ({{bug(1386214)}}).</li> +</ul> + +<h3 id="Security">Security</h3> + +<p><em>No changes.</em></p> + +<h3 id="WebDriver_conformance_(Marionette)">WebDriver conformance (Marionette)</h3> + +<h4 id="Bug_fixes">Bug fixes</h4> + +<ul> + <li>If <code>WebDriver:SwitchToWindow</code> changes the selection to a different window it now waits for its <code>focus</code> and <code>activate</code> events before returning ({{bug(1335085)}}).</li> + <li>Fixed the <code>TypeError: this.tabModal is null</code> failure, which sometimes appeared when interacting with modal dialogs or user prompts ({{bug(1538782)}})</li> +</ul> + +<h4 id="Other_2">Other</h4> + +<ul> + <li>Disabled the feature to force unloading background tabs on low memory conditions, to prevent top-level browser contexts from magically disappearing ({{bug(1553748)}}).</li> + <li>Disabled priviledged content processes that caused HTTP authentication dialogs not to appear when navigating to a website after opening a new tab ({{bug(1558763)}}).</li> +</ul> + +<h3 id="Plugins">Plugins</h3> + +<p><em>No changes.</em></p> + +<h2 id="Changes_for_add-on_developers">Changes for add-on developers</h2> + +<h3 id="API_changes">API changes</h3> + +<ul> + <li>The The <code>proxy.register()</code> and <code>proxy.unregister()</code> functions have been deprecated and will be removed from Firefox 71 ({{bug(1545811)}}).</li> + <li>When an add-on attempts to add a bookmark folder to the root folder, the resulting error message is now much more intuitive ({{bug(1512171)}}).</li> + <li>The promise returned by <code><a href="/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/duplicate">browser.tabs.duplicate()</a></code> now resolves immediately, before the tabs are completely loaded, to improve performance ({{bug(1394376)}}).</li> + <li>Support has been added for chrome.storage.managed, allowing web extension settings to be implemented via enterprise policy ({{bug(1230802)}}).</li> + <li>There is now a Group Policy option to blacklist <em>all</em> extensions except the ones that have been whitelisted ({{bug(1522823)}}).</li> +</ul> + +<h3 id="Manifest_changes">Manifest changes</h3> + +<p><em>No changes.</em></p> + +<h2 id="See_also">See also</h2> + +<ul> + <li><a href="https://www.fxsitecompat.com/en-CA/versions/68/">Site compatibility for Firefox 68</a></li> +</ul> + +<h2 id="Older_versions">Older versions</h2> + +<p>{{Firefox_for_developers(67)}}</p> diff --git a/files/es/mozilla/firefox/releases/9/index.html b/files/es/mozilla/firefox/releases/9/index.html new file mode 100644 index 0000000000..4e976f6262 --- /dev/null +++ b/files/es/mozilla/firefox/releases/9/index.html @@ -0,0 +1,237 @@ +--- +title: Firefox 9 for developers +slug: Mozilla/Firefox/Releases/9 +tags: + - Firefox + - Firefox 9 + - Gecko 9 + - NeedsTranslation + - TopicStub +translation_of: Mozilla/Firefox/Releases/9 +--- +<div><section class="Quick_links" id="Quick_Links"> + <ol> + <li class="toggle"> + <details> + <summary>Notas de la Versión para Desarrolladores de Firefox</summary> + <ol> + <li><a href="/es/docs/Mozilla/Firefox/Releases">Notas de la Versión para Desarrolladores de Firefox</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Complementos</summary> + <ol> + <li><a href="/es/Add-ons/WebExtensions">Extensiones del navegador</a></li> + <li><a href="/es/Add-ons/Themes">Temas</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Firefox por dentro</summary> + <ol> + <li><a href="/es/docs/Mozilla/">Proyecto Mozilla (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/Gecko">Gecko</a></li> + <li><a href="/es/docs/Mozilla/Firefox/Headless_mode">Headless mode</a></li> + <li><a href="/es/docs/Mozilla/JavaScript_code_modules">Modulos de código JavaScript (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/js-ctypes">JS-ctypes (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/MathML_Project">Proyecto MathML</a></li> + <li><a href="/es/docs/Mozilla/MFBT">MFBT (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/Projects">Proyectos Mozilla (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/Preferences">Sistema de Preferencias (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/WebIDL_bindings">Ataduras WebIDL (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/Tech/XPCOM">XPCOM</a></li> + <li><a href="/es/docs/Mozilla/Tech/XUL">XUL</a></li> + </ol> + </details> + </li> + <li class="toggle"> + <details> + <summary>Crear y contribuir</summary> + <ol> + <li><a href="/es/docs/Mozilla/Developer_guide/Build_Instructions">Instrucciones para la compilación</a></li> + <li><a href="/es/docs/Mozilla/Developer_guide/Build_Instructions/Configuring_Build_Options">Configurar las opciones de compilación</a></li> + <li><a href="/es/docs/Mozilla/Developer_guide/Build_Instructions/How_Mozilla_s_build_system_works">Cómo funciona el sistema de compilación (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/Developer_guide/Source_Code/Mercurial">Código fuente de Mozilla</a></li> + <li><a href="/es/docs/Mozilla/Localization">Localización</a></li> + <li><a href="/es/docs/Mozilla/Mercurial">Mercurial (Inglés)</a></li> + <li><a href="/es/docs/Mozilla/QA">Garantía de Calidad</a></li> + <li><a href="/es/docs/Mozilla/Using_Mozilla_code_in_other_projects">Usar Mozilla en otros proyectos (Inglés)</a></li> + </ol> + </details> + </li> + </ol> +</section></div> + +<p>Firefox 9 was released for Windows on December 20, 2011. Mac and Linux version 9.0.1, which fixed a crashing bug discovered at the last minute, were released on December 21, 2011.</p> + +<h2 id="Changes_for_web_developers">Changes for web developers</h2> + +<h3 id="HTML">HTML</h3> + +<ul> + <li>The <code>value</code> attribute of <a href="/es/docs/Web/HTML/Elemento/li" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code><li></code></a> now can be negative as specified in HTML5. Previously negative values were converted to 0.</li> + <li>You can now <a href="/en-US/docs/Using_HTML5_audio_and_video#Specifying_playback_range" title="en-US/docs/Using_HTML5_audio_and_video#Specifying_playback_range">specify the start and stop time of media</a> in the URI of the media when using <a href="/es/docs/Web/HTML/Elemento/audio" title="El elemento audio se usa para insertar contenido de audio en un documento HTML o XHTML. El elemento audio se agregó como parte de HTML 5."><code><audio></code></a> and <a href="/es/docs/Web/HTML/Elemento/video" title="El elemento video se utiliza para incrustar vídeos en un documento HTML o XHTML."><code><video></code></a> elements.</li> + <li><a href="/es/docs/Web/HTML/Elemento/input" title="El elemento HTML <input> se usa para crear controles interactivos para formularios basados en la web, que reciban datos del usuario. La forma en que <input> funciona varía considerablemente dependiendo del valor de su atributo type."><code><input></code></a> and <a href="/es/docs/Web/HTML/Elemento/textarea" title="El elemento HTML <textarea> representa un control para edición muti-línea de texto plano."><code><textarea></code></a> elements <a href="/en-US/docs/HTML/Controlling_spell_checking_in_HTML_forms#Controlling_the_spellchecker_language" title="en-US/docs/HTML/Controlling_spell_checking_in_HTML_forms#Controlling_the_spellchecker_language">now respect the value of the <code>lang</code> attribute</a> when invoking the spell checker.</li> + <li>Firefox on Android now lets users snap photos with their phone's camera without leaving the browser when the <a href="/es/docs/Web/HTML/Elemento/input" title="El elemento HTML <input> se usa para crear controles interactivos para formularios basados en la web, que reciban datos del usuario. La forma en que <input> funciona varía considerablemente dependiendo del valor de su atributo type."><code><input></code></a> element is used with <code>type="file"</code> and <code>accept="image/*"</code>.</li> + <li>Windows Vista style PNG ICO images are now supported.</li> + <li>Drawing images that use the <a href="/en-US/docs/HTML/CORS_settings_attributes" title="CORS settings attributes"><code>crossorigin</code></a> attribute to request CORS access no longer incorrectly <a href="/en-US/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F" title="en-US/docs/CORS_Enabled_Image#What_is_a_.22tainted.22_canvas.3F">taint the canvas</a> when CORS is granted.</li> + <li>The value of the <code><a href="/es/docs/Web/HTML/Element/td#attr-rowspan">rowspan</a></code> attribute may now be as large as 65,534, up from 8190.</li> +</ul> + +<h3 id="CSS">CSS</h3> + +<ul> + <li>The <a href="/es/docs/Web/CSS/font-stretch" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>font-stretch</code></a> property is now supported.</li> + <li>The <a href="/es/docs/Web/CSS/columns" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>columns</code></a> property is now supported, with the <code>-moz</code> prefix. This is a shorthand for the following properties: <a href="/es/docs/Web/CSS/column-width" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>column-width</code></a> and <a href="/es/docs/Web/CSS/column-count" title="La propiedad CSS column-count define el número de columnas de un elemento."><code>column-count</code></a>.</li> + <li>When a stylesheet included using the <a href="/es/docs/Web/HTML/Elemento/link" title="El elemento HTML <link> especifica la relación entre el documento actual y un recurso externo. Los usos posibles de este elemento incluyen la definición de un marco relacional para navegación. Este elemento es más frecuentemente usado para enlazar hojas de estilos."><code><link></code></a> element has been fully loaded and parsed (but not yet applied to the document), a <a href="/en-US/docs/HTML/Element/link#Stylesheet_load_events" title="en-US/docs/HTML/Element/link#Stylesheet_load_events"><code>load</code> event</a> is now fired. Also, if an error occurs processing a style sheet, an <code>error</code> event is fired.</li> + <li>You can now specify overflow settings for both the left and right edges of content using a new two-value syntax for <a href="/es/docs/Web/CSS/text-overflow" title="La propiedad de CSS text-overflow determina como el contenido que se desborda y que no es mostrado, va a hacersele notar a los usuarios. Puede ser cortado, mostrar una elipsis ('…', U+2026 Horizontal Ellipsis), o mostrar una cadena de texto personalizada."><code>text-overflow</code></a>.</li> +</ul> + +<h3 id="JavaScript">JavaScript</h3> + +<p><em>No change.</em></p> + +<h3 id="DOM">DOM</h3> + +<dl> + <dt><a href="/en-US/docs/DOM/Using_full-screen_mode" title="Using full-screen mode">Using full-screen mode</a></dt> + <dd>The new full-screen API provides a way to present content using the entire screen, with no browser interface. This is great for video and games. This API is currently experimental and prefixed.</dd> +</dl> + +<ul> + <li>The <a href="/es/docs/Web/API/Node/contains" title="El método Node.contains() devuelve un valor Boolean indicando si un nodo es descendiente de un nodo dado o no, por ejemplo, el propio nodo, uno de sus hijos directos ((childNodes)), uno de los hijos directos de su nodo hijo, etc."><code>Node.contains()</code></a> method is now implemented; this lets you determine if a given node is a descendant of another node.</li> + <li>The <a href="/es/docs/Web/API/Node/parentElement" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>Node.parentElement</code></a> attribute has been implemented; this returns the parent <a href="/es/docs/Web/API/Element" title="Varias especificaciones aplicadas a los elementos:"><code>Element</code></a> of a DOM node, or <code>null</code> if the parent isn't an element.</li> + <li>DOM Level 3 <a href="/en-US/docs/DOM/CompositionEvent" title="CompositionEvent">composition events</a> are now supported.</li> + <li>The <a href="/es/docs/Web/API/Document/scripts" title="Devuelve una lista de elementos <script> ubicados en el documento. El objeto devuelto es una colección HTMLCollection."><code>Document.scripts</code></a> attribute has been implemented; this returns an <a href="/es/docs/Web/API/HTMLCollection" title="La interfaz HTMLCollection representa una colección genérica (objeto tipo array similar a arguments) de elementos (en orden de documento) y ofrece métodos y propiedades para seleccionarlos de la lista."><code>HTMLCollection</code></a> of all the <a href="/es/docs/Web/HTML/Elemento/script" title="El elemento HTML Script (<script>) se utiliza para insertar o hacer referencia a un script ejecutable dentro de un documento HTML o XHTML."><code><script></code></a> elements on the document.</li> + <li>The <a href="/es/docs/Web/API/Document/queryCommandSupported" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>Document.queryCommandSupported()</code></a> method has been implemented.</li> + <li>The set of events that can be listened for on <a href="/es/docs/Web/HTML/Elemento/body" title="El Elemento HTML <body> representa el contenido de un documento HTML. Sólo puede haber un elemento <body> en un documento."><code><body></code></a> elements has been revised to match the latest draft of the HTML5 specification. The list of events in the <a href="/en-US/docs/DOM/DOM_event_reference" title="DOM event reference">DOM event reference</a> reflects which events can be listened for on <a href="/es/docs/Web/HTML/Elemento/body" title="El Elemento HTML <body> representa el contenido de un documento HTML. Sólo puede haber un elemento <body> en un documento."><code><body></code></a>.</li> + <li>The <code>readystatechange</code> event is now fired only on the <a href="/es/docs/Web/API/Document" title="La interfaz Document representa cualquer página web cargada en el navegador y sirve como punto de entrada al contenido de la página (El árbol DOM)."><code>Document</code></a>, as intended.</li> + <li>Event handlers are now implemented as standard IDL interfaces. For most cases, this won't affect content, but <a href="/en-US/docs/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9" title="en-US/docs/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9">there are exceptions</a>.</li> + <li>A new response type, "<code>moz-json</code>", has been added to <code>XMLHttpRequest</code>, letting <code>XMLHttpRequest</code> automatically parse <a href="/en-US/docs/JSON" title="JSON">JSON</a> strings for you; when you request this type, a returned JSON string is parsed, so that the value of the <code>response</code> property is the resulting JavaScript object.</li> + <li><a href="/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress" title="en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress"><code>XMLHttpRequest</code> "progress" events</a> are now reliably sent for every chunk of data received; in the past it was possible for the last chunk of data received to not fire a "progress" event. Now you can track progress by following only "progress" events, instead of also having to monitor "load" events to detect the receipt of the last chunk of data.</li> + <li>In the past, calling <a href="/en-US/docs/DOM/element.addEventListener" title="element.addEventListener"><code>addEventListener()</code></a> with a <code>null</code> listener would throw an exception. Now it returns without error and with no effect.</li> + <li>The new <a href="/es/docs/Web/API/Navigator/doNotTrack" title='Devuelve los ajustes de do-not-track del usuario. Esto es "1" si el usuario ha solicitado no ser rastreado por sitios web, contenidos, o anuncios.'><code>navigator.doNotTrack</code></a> property lets your content easily determine whether or not the user has enabled their do-no-track preference; if this value is "yes", you should not track the user.</li> + <li><a href="/es/docs/Web/API/Range" title="El objeto Range representa un fragmento de un documento que puede contener nodos y partes de nodos de texto en un documento dado."><code>Range</code></a> and <a href="/es/docs/Web/API/Selection" title="Selección es la clase de objeto devuelto por window.getSelection() y otros métodos."><code>Selection</code></a> objects now behave according to their specifications when <a href="/es/docs/Web/API/Text/splitText" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>splitText()</code></a> and <a href="/es/docs/Web/API/Node/normalize" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>normalize()</code></a> are called.</li> + <li>The value of <a href="/es/docs/Web/API/Node/ownerDocument" title="La propiedad de lectura Nodo.ownerDocument devuelve el objecto Document de más alto nivel/jerarquia para ese nodo."><code>Node.ownerDocument</code></a> for doctype nodes is now the document on which <a href="/en-US/docs/DOM/DOMImplementation.createDocumentType" title="DOMImplementation.createDocumentType"><code>createDocumentType()</code></a> was called to create the node, instead of <code>null</code>.</li> + <li><code>window.navigator.taintEnabled</code> has been removed; it has not been supported in many years.</li> +</ul> + +<h3 id="Workers">Workers</h3> + +<ul> + <li>Workers implemented in blob URLs were broken in Firefox 8, and work again starting in Firefox 9.</li> +</ul> + +<h3 id="WebGL">WebGL</h3> + +<ul> + <li>The <a href="/en-US/docs/WebGL" title="WebGL">WebGL</a> context <code>drawingBufferWidth</code> and <code>drawingBufferHeight</code> attributes are now supported.</li> +</ul> + +<h3 id="MathML">MathML</h3> + +<ul> + <li>The non-standard <code>restyle</code> value for the <code>actiontype</code> attribute on <code><a href="/es/docs/Web/MathML/Elemento/maction" title="<maction>"><maction></a></code> elements has been removed.</li> + <li>While still unsupported, using the <code><a href="/es/docs/Web/MathML/Elemento/mlabeledtr" title="<mlabeledtr>"><mlabeledtr></a></code> element no longer breaks rendering completely. See <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=689641" title="Add support for mlabeledtr">error 689641</a> for progress on actual support of this element.</li> +</ul> + +<h3 id="Networking">Networking</h3> + +<ul> + <li>You can now send the contents of <a href="/en-US/docs/JavaScript_typed_arrays" title="JavaScript typed arrays">JavaScript typed arrays</a> (that is, the contents of an <a href="/en-US/docs/JavaScript_typed_arrays/ArrayBuffer" title="ArrayBuffer"><code>ArrayBuffer</code></a> object) <a href="/en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Sending_typed_arrays_as_binary_data" title="en-US/docs/DOM/XMLHttpRequest/Using_XMLHttpRequest#Sending_typed_arrays_as_binary_data">using XMLHttpRequest</a>.</li> + <li>WebSocket connections now permit non-characters in otherwise valid UTF-8 data frames to be received, instead of failing.</li> + <li>The HTTP <code>Accept</code> header for XSLT requests has been changed to simply "*/*" for simplicity. Since fetching XSLT has always fallen back to "*/*" anyway, it made sense to simplify the initial request.</li> + <li>Attempts by a server to use the <code>301 Moved Permanently</code> or <code>307 Temporary Redirect</code> response codes to redirect the user to a <code>javascript:</code> URI now <a href="/en-US/docs/HTTP#More_on_redirection_responses" title="en-US/docs/HTTP#More_on_redirection_responses">result in a "bad connection" error</a> instead of actually redirecting. This prevents certain types of cross-site scripting attacks.</li> + <li>Content served with an empty <a href="/es/docs/Web/HTTP/Headers/Content-Disposition" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>Content-Disposition</code></a> were previously treated as if the <a href="/es/docs/Web/HTTP/Headers/Content-Disposition" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>Content-Disposition</code></a> were "attachment"; this didn't always work as expected. These are now handled as if the <a href="/es/docs/Web/HTTP/Headers/Content-Disposition" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>Content-Disposition</code></a> were "inline".</li> + <li>The default maximum size of an item in the disk cache has been increased to 50 MB; previously, only items up to 5 MB were cached.</li> +</ul> + +<h3 id="Developer_tools">Developer tools</h3> + +<ul> + <li>The web console now supports basic <a href="/en-US/docs/Using_the_Web_Console#String_substitutions" title="en-US/docs/Using_the_Web_Console#String_substitutions">string substitutions</a> in its logging methods.</li> + <li>You can now <a href="/en-US/docs/Using_the_Web_Console#Using_groups_in_the_console" title="en-US/docs/Using_the_Web_Console#Using_groups_in_the_console">create visually nested blocks of output</a> in the web console, to help make it easier to read.</li> +</ul> + +<h2 id="Changes_for_Mozilla_and_add-on_developers">Changes for Mozilla and add-on developers</h2> + +<p>See <a href="/en-US/docs/Firefox/Updating_add-ons_for_Firefox_9" title="en-US/docs/Firefox/Updating add-ons for Firefox 9">Updating add-ons for Firefox 9</a> for an overview of the changes you may need to make to get your add-ons working in Firefox 9.</p> + +<h3 id="XUL">XUL</h3> + +<ul> + <li>The <code><a href="/es/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> element now has a <code id="a-pending"><a href="https://developer.mozilla.org/es/docs/Mozilla/Tech/XUL/Attribute/pending">pending</a></code> attribute, whose value is <code>true</code>, when the tab is in the process of being restored by the session store service. This can be used for styling the tab in themes. The attribute isn't present on tabs that aren't pending.</li> + <li>The <code><a href="/es/docs/Mozilla/Tech/XUL/tab" title="tab">tab</a></code> element now has an <code id="a-unread"><a href="https://developer.mozilla.org/es/docs/Mozilla/Tech/XUL/Attribute/unread">unread</a></code> attribute, whose value is <code>true</code>, when the tab has changed since the last time it was the active tab or if it hasn't been selected since the current session began. The attribute isn't present on tabs that are not unread.</li> + <li>You can now use a <code><a href="/es/docs/Mozilla/Tech/XUL/panel" title="panel">panel</a></code> as a drag image for DOM drag and drop operations. This lets you use the standard drag & drop API for <a href="/en-US/docs/DragDrop/Drag_Operations#Using_XUL_panels_as_drag_images" title="en-US/docs/DragDrop/Drag_Operations#Using_XUL_panels_as_drag_images">drag and drop of XUL content</a>.</li> + <li>The <code><a href="/es/docs/Mozilla/Tech/XUL/notificationbox" title="notificationbox">notificationbox</a></code> element's <span id="m-appendNotification"><code><a href="https://developer.mozilla.org/es/docs/Mozilla/Tech/XUL/Method/appendNotification">appendNotification</a></code></span> method now lets you specify a callback that gets called for interesting events related to the notification box. Currently, the only event is "removed", which tells you the box has been removed from its window.</li> +</ul> + +<h3 id="JavaScript_code_module_changes">JavaScript code module changes</h3> + +<ul> + <li><a href="/en-US/docs/JavaScript_code_modules/FileUtils.jsm" title="FileUtils.jsm"><code>FileUtils.jsm</code></a> now has a <code>File</code> constructor that returns an <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code> object representing a file specified by its pathname.</li> +</ul> + +<h3 id="Service_changes">Service changes</h3> + +<ul> + <li>The content preference service now <a href="/en-US/docs/Using_content_preferences#private-browsing" title="en-US/docs/Using_content_preferences#private-browsing">handles private mode browsing</a> (see <a href="https://bugzilla.mozilla.org/show_bug.cgi?id=679784" title="FIXED: nsIContentPrefService should handle private browsing mode">error 679784</a>).</li> +</ul> + +<h3 id="NSPR">NSPR</h3> + +<ul> + <li>NSPR now has an "append" module, which lets you append new data to the end of an existing log.</li> +</ul> + +<h3 id="Interface_changes">Interface changes</h3> + +<h4 id="Removed_interfaces">Removed interfaces</h4> + +<ul> + <li><code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIGlobalHistory3" title="">nsIGlobalHistory3</a></code> has been removed during streamlining of the Places and DocShell code.</li> +</ul> + +<h4 id="Miscellaneous_interface_changes">Miscellaneous interface changes</h4> + +<ul> + <li>The <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsISound" title="">nsISound</a></code> interface has a new constant, <code>EVENT_EDITOR_MAX_LEN</code>. The allows for playing the system sound for when more characters than the maximum allowed are typed into a text field. Currently, this is only used on Windows.</li> + <li>The <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIScriptError2" title="">nsIScriptError2</a></code> interface has new <code>timeStamp</code> and <code>innerWindowID</code> properties; in addition, the <code>initWithWindowID()</code> method now takes an inner window ID instead of an outer window ID.</li> + <li>The <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIBidiKeyboard#haveBidiKeyboards">nsIBidiKeyboard.haveBidiKeyboards</a></code> attribute has been added; this lets you determine if the system has at least one keyboard installed for each direction: left-to-right and right-to-left.</li> + <li>The new <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIEditor#isSelectionEditable">nsIEditor.isSelectionEditable</a></code> attribute lets you determine if the current selection anchor is editable. This helps to support cases where only parts of the document are editable, by letting you see if the current selection is in an editable section.</li> + <li>The <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIBrowserHistory#registerOpenPage()">nsIBrowserHistory.registerOpenPage()</a></code> and <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIBrowserHistory#unregisterOpenPage()">nsIBrowserHistory.unregisterOpenPage()</a></code> methods have been removed as part of a performance overhaul in the Places system. You can use the corresponding methods in <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/mozIPlacesAutoComplete" title="">mozIPlacesAutoComplete</a></code> instead.</li> + <li>The <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIDOMWindowUtils#wrapDOMFile()">nsIDOMWindowUtils.wrapDOMFile()</a></code> method has been added; this returns a DOM <a href="/es/docs/Web/API/File" title="La interfaz File provee información acerca de los archivos y permite el acceso a su contenido."><code>File</code></a> object for a given <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIFile" title="">nsIFile</a></code>.</li> + <li>The <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#removeDelayedFrameScript()">nsIChromeFrameMessageManager.removeDelayedFrameScript()</a></code> method was added to support removing delayed load scripts. Bootstrapped add-ons should use this, at shutdown, to remove any scripts it loaded using <code><a href="https://developer.mozilla.org/es/docs/XPCOM_Interface_Reference/nsIChromeFrameMessageManager#loadFrameScript()">nsIChromeFrameMessageManager.loadFrameScript()</a></code> with the delayed load flag set. This is exposed to add-ons as <code>browser.messageManager.removeDelayedFrameScript()</code>.</li> + <li>The <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIAppStartup" title="">nsIAppStartup</a></code> interface has a new <code>interrupted</code> attribute, which lets you know if the startup process was interrupted at any point by an interactive prompt. This can be helpful, for example, when timing startups during performance evaluation, to be able to drop numbers from sessions that were interrupted.</li> + <li>The <code><a href="/es/docs/Mozilla/Tech/XPCOM/Reference/Interface/nsIEditorSpellCheck" title="">nsIEditorSpellCheck</a></code> interface has been revised to support per-site selection of spell checker dictionaries.</li> +</ul> + +<h3 id="IDL_parser">IDL parser</h3> + +<p>The IDL parser no longer includes support for the never fully-implemented notion of unique pointers.</p> + +<h3 id="Build_system_changes">Build system changes</h3> + +<ul> + <li>The <code>--enable-application=standalone</code> option for building standalone XPConnect has been removed; it hasn't worked since 2007 anyway.</li> + <li>Support for building Necko and Transformiix XSLT standalone has been removed; you can no longer use <code>--enable-application=network</code> or <code>--enable-application=content/xslt</code>.</li> + <li>The build system now looks for <code>.mozconfig</code> at <code>$topsrcdir/.mozconfig</code> or <code>$topsrcdir/mozconfig</code>, and nowhere else, unless you override the <code>.mozconfig</code> path using the <code>MOZCONFIG</code> environment variable.</li> + <li>The <code>xpidl</code> utility has been replaced in the SDK with <a href="/en-US/docs/XPIDL/pyxpidl" title="pyxpidl">pyxpidl</a>.</li> +</ul> + +<h3 id="Other_changes">Other changes</h3> + +<ul> + <li>The spell checker no longer has an arbitrary 130-character word-length limit on the length of words it will attempt to spell check. This limit was previously in place to prevent crashes that were occurring in the spell checker, but the underlying bugs have since been fixed.</li> + <li>You can now register components to add features to the <a href="/es/docs/Web/API/Window/navigator" title="La documentación acerca de este tema no ha sido escrita todavía . ¡Por favor considera contribuir !"><code>window.navigator</code></a> object by using the "JavaScript-navigator-property" category. See <a href="/en-US/docs/Developer_Guide/Adding_APIs_to_the_navigator_object" title="en-US/docs/Developer_Guide/Adding APIs to the navigator object">Adding APIs to the navigator object</a> for details and examples.</li> +</ul> + +<h2 id="See_also">See also</h2> + +<div><div class="multiColumnList"> +<ul> +<li><a href="/es/docs/Mozilla/Firefox/Releases/8">Firefox 8 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/7">Firefox 7 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/6">Firefox 6 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/5">Firefox 5 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/4">Firefox 4 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/3.6">Firefox 3.6 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/3.5">Firefox 3.5 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/3">Firefox 3 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/2">Firefox 2 for developers</a></li><li><a href="/es/docs/Mozilla/Firefox/Releases/1.5">Firefox 1.5 for developers</a></li></ul> +</div></div> diff --git a/files/es/mozilla/firefox/releases/9/updating_add-ons/index.html b/files/es/mozilla/firefox/releases/9/updating_add-ons/index.html new file mode 100644 index 0000000000..ff9d1e483e --- /dev/null +++ b/files/es/mozilla/firefox/releases/9/updating_add-ons/index.html @@ -0,0 +1,69 @@ +--- +title: Actualizando add-ons para Firefox 9 +slug: Mozilla/Firefox/Releases/9/Updating_add-ons +translation_of: Mozilla/Firefox/Releases/9/Updating_add-ons +--- +<div>{{FirefoxSidebar}}</div><p><span id="result_box" lang="es"><span class="hps">Firefox</span> <span class="hps">9</span> <span class="hps">no tiene</span> <span class="hps">una gran cantidad de</span> <span class="hps">cambios</span> <span class="hps">que deberian ser</span><span class="hps"> problemas de compatibilidad</span> <span class="hps">para los desarrolladores</span> <span class="hps">de add-ons.</span> <span class="hps">Sin embargo</span><span>,</span> <span class="hps">hay algunos</span> <span class="hps">elementos</span> <span class="hps">posibles que</span> <span class="hps">puedan ser problematicos</span><span>,</span> <span class="hps">así que vamos</span> <span class="hps">a echar un vistazo</span><span>.</span> </span></p> + +<h2 id="¿Es_necesario_hacer_halgo"><span id="result_box" lang="es"><span class="hps">¿</span></span>Es necesario hacer halgo?</h2> + +<p><span id="result_box" lang="es"><span class="hps">Si</span> <span class="hps">se distribuye</span> <span class="hps">su</span> <span class="hps">add-on</span> <span class="hps">en</span> <span class="hps">addons.mozilla.org</span> <span class="hps">(AMO</span><span>)</span><span>,</span> <span class="hps">ha sido</span> <span class="hps">verificado</span> <span class="hps">por</span> <span class="hps">una herramienta</span> <span class="hps">de verificación de</span><span class="hps"> compatibilidad</span> <span class="hps">automatizada.</span> <span class="atn hps">Add-</span><span>ons</span> <span class="hps">que</span> <span class="hps">no utilice</span> <span class="hps">API</span> <span class="hps">que cambiaron</span> <span class="hps">en</span> <span class="hps">Firefox 8</span><span>,</span> <span class="hps">y no tienen</span> <span class="hps">componentes</span> <span class="atn hps">binarios (</span><span>que deben</span> <span class="hps">volver a compilar</span> <span class="hps">para cada</span> <span class="hps">versión importante</span> <span class="hps">de Firefox</span><span>)</span><span>,</span> <span class="hps">automáticamente</span> <span class="hps">se han</span> <span class="hps">actualizado</span> <span class="hps">en</span> <span class="hps">AMO</span> <span class="hps">para indicar que</span> <span class="hps">funcionan</span> <span class="hps">en</span> <span class="hps">Firefox</span> <span class="hps">9</span><span>.</span><br> + <br> + <span class="hps">Así que usted debe</span> <span class="hps">empezar por visitando</span> <span class="hps">AMO</span> <span class="hps">y mirando</span> <span class="hps">para ver</span> <span class="hps">si su</span> add-on</span> requiere trabajo.</p> + +<div class="note"><span id="result_box" lang="es"><span class="hps"><strong>Nota</strong>: Aún</span> <span class="hps">deberia probar su</span> <span class="hps">add-on</span> <span class="hps">en</span> <span class="hps">Firefox</span> <span class="hps">9</span><span>,</span> <span class="hps">incluso</span> <span class="hps">si se ha</span> <span class="hps">actualizado</span> <span class="hps">automáticamente.</span> <span class="hps">Hay</span> <span class="hps">casos raros </span><span class="hps">que</span> <span class="hps">no</span> <span class="hps">se pueden detectar</span> <span class="hps">de forma automática</span><span>.</span></span></div> + +<div class="almost_half_cell" id="gt-res-content"> +<div dir="ltr" style="zoom: 1;"><span id="result_box" lang="es"><span class="hps">Ya </span><span class="hps">que haya confirmado</span> <span class="hps">que</span><span class="hps"> necesitas hacer cambios</span><span>, vuelva</span> <span class="hps">de nuevo a</span> <span class="hps">esta página y</span> <span class="hps">siga leyendo.</span></span></div> + +<div dir="ltr" style="zoom: 1;"> </div> +</div> + +<h2 id="Add-ons_que_estan_bootstrapped_pueden_quitar_scripts_de_carga_retrasada"><span id="result_box" lang="es"><span class="hps">Add-ons que estan</span> <span class="hps">bootstrapped</span> <span class="hps">pueden quitar</span> <span class="hps">scripts </span><span class="hps">de carga</span> <span class="hps">retrasada</span> </span></h2> + +<p><span id="result_box" lang="es"><span class="hps">Si su</span> <span class="hps">complemento usa</span> <span class="atn hps">{</span><span class="atn">{</span><span>ifmethod</span> <span class="atn hps">(</span><span class="atn hps">"</span><span>nsIChromeFrameMessageManager</span><span>"</span><span>,</span> <span class="atn hps">"</span><span>loadFrameScript</span><span>"</span><span>)</span><span>}</span><span>}</span> <span class="hps">con el delayed-load</span> <span class="hps">disponido</span><span>, el script</span> <span class="hps">se carga</span> <span class="hps">en todo cuadro</span> <span class="hps">creado a partir</span> <span class="hps">de ese momento</span><span>.</span> <span class="hps">Esto es genial,</span> <span class="hps">excepto que</span> <span class="hps">desde Firefox</span> <span class="hps">9</span><span>,</span> <span class="hps">no había</span> <span class="hps">manera de</span> <span class="hps">detener la carga de</span> el script<span>,</span> <span class="hps">asi que que </span><span class="hps">seguiria ocurriendo</span> <span class="hps">incluso después de que</span> <span class="hps">su</span> <span class="hps">add-on</span> <span class="hps">fue cerrado</span><span>.</span><br> + <br> + <span class="hps">A partir de</span> <span class="hps">Firefox</span> <span class="hps">9</span><span>, debe llamar a</span> <span class="hps">el nuevo</span> <span class="atn hps">{</span><span class="atn">{</span><span>}</span> <span class="hps">ifmethod</span> <span class="atn hps">(</span><span class="atn hps">"</span><span>nsIChromeFrameMessageManager</span><span>"</span><span>,</span> <span class="atn hps">"</span><span>removeDelayedFrameScript</span><span>"</span><span>)</span><span>}</span> <span class="hps">método para</span> <span class="hps">detener la carga de</span> el script <span class="hps">en los nuevos cuadros</span><span>.</span> <span class="hps">Esto se hace</span> <span class="hps">de esta manera</span><span>, por ejemplo</span><span>:</span></span></p> + +<pre>browser.messageManager.removeDelayedFrameScript("chrome://myextension/content/somescript.js"); +</pre> + +<h2 id="Interface_changes">Interface changes</h2> + +<ul> + <li>The {{ interface("nsIURL") }} interface has been changed a bit. The {{ ifattribute("nsIURL", "param") }} attribute was removed, and the {{ ifmethod("nsIURLParser", "parsePath") }} method has two fewer arguments than it did previously.</li> + <li>Two methods have been removed from {{ interface("nsIBrowserHistory") }}: <code>registerOpenPage()</code> and <code>unregisterOpenPage()</code>. These methods had been deprecated.</li> + <li>The {{ ifmethod("nsIEditorSpellCheck", "saveDefaultDictionary") }} method has been removed as part of supporting per-site spell check settings. Also, {{ ifmethod("nsIEditorSpellCheck", "updateCurrentDictionary") }} no longer takes a parameter.</li> + <li>The {{ interface("nsIGlobalHistory3") }} interface has been removed. Its functionality was of limited (if any) use to add-ons, so this shouldn't affect anyone.</li> + <li>Several specialized channels' properties attributes have been merged into the base {{ interface("nsIChannel") }} interface. This shouldn't affect compatibility at all, since those interfaces inherit from <code>nsIChannel</code> anyway.</li> +</ul> + +<h2 id="Preference_changes">Preference changes</h2> + +<p>The <code>geo.wifi.*</code> preferences no longer have default values, although they're honored if they exist. If your code reads these without handling the case where they don't exist, you need to update your code to handle the exception that gets thrown when they're not present.</p> + +<h2 id="XPConnect_changes">XPConnect changes</h2> + +<p><code>nodePrincipal</code> and <code>baseURIObject</code> have been moved from <code>nsDOMClassInfo</code> to <code>XrayWrapper</code>. This shouldn't affect many add-ons, since it would only be an issue if they try to access these properties on DOM {{ domxref("Node") }} objects from unprivileged script that have requested XPConnect privileges using <code>enablePrivilege()</code>.</p> + +<h2 id="DOM_changes">DOM changes</h2> + +<ul> + <li>The long-obsolete method <code>Navigator.taintEnabled()</code> has been removed. This hasn't done anything useful in a very long time, but was often used in browser detection scripts, since it was Netscape-specific. Calling this method throws an exception starting in Firefox 9.</li> + <li>Event handlers are now implemented as standard IDL interfaces. For most cases, this won't affect you, but <a href="/en/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9" title="en/DOM/DOM_event_handlers#Event_handler_changes_in_Firefox_9">there are exceptions</a>.</li> +</ul> + +<h2 id="Other_changes_that_may_affect_binary_compatibility">Other changes that may affect binary compatibility</h2> + +<p>These changes are notable in that they may affect binary XPCOM components. These will need rebuilding anyway, since that's required for every major release of Firefox, but could introduce compile-time errors, so they're worth noting in particular.</p> + +<ul> + <li>The {{ interface("nsIDOMHTMLDocument") }} interface now has a new <code>scripts</code> attribute, which implements the {{ domxref("Document.scripts") }} attribute.</li> + <li>The {{ ifmethod("nsIJumpListShortcut", "iconImageUri") }} method has been added, to make it possible to establish favicons on jump list URI entries on Windows.</li> +</ul> + +<h2 id="Theme_changes">Theme changes</h2> + +<p>The {{ XULAttr("pending") }} attribute has been added to the {{ XULElem("tab") }} element. If this attribute is present, the tab is in the process of being restored by the session store service. You can use that to style the tab during the restore process. It's worth noting that if the user has turned on the "Don't load tabs until selected" preference, the {{ XULAttr("pending") }} attribute is set on tabs until they get loaded.</p> + +<p>Similarly, tabs also now have an {{ XULAttr("unread") }} attribute; this property, if present, indicates that the tab has changed since the last time it was the active tab. You can use this to style tabs differently when they have changed since the last time the user looked at them. This is also present on tabs that have not yet been looked at during the current session.</p> diff --git a/files/es/mozilla/firefox/releases/index.html b/files/es/mozilla/firefox/releases/index.html new file mode 100644 index 0000000000..969916af10 --- /dev/null +++ b/files/es/mozilla/firefox/releases/index.html @@ -0,0 +1,11 @@ +--- +title: Notas de desarrollo de Firefox +slug: Mozilla/Firefox/Releases +tags: + - Firefox + - TopicStub +translation_of: Mozilla/Firefox/Releases +--- +<div>{{FirefoxSidebar}}</div><p>Esta página provee enlaces a artículos de desarrolladores para Firefox X para cada versión de Firefox. Estas notas permiten ver las características añadidas y los errores eliminados en cada versión de Firefox.</p> + +<div class="multiColumnList">{{ListSubpages("",1,1,1)}}</div> |