From a55b575e8089ee6cab7c5c262a7e6db55d0e34d6 Mon Sep 17 00:00:00 2001 From: Florian Merz Date: Thu, 11 Feb 2021 14:46:50 +0100 Subject: unslug es: move --- .../anatomia_de_una_webextension/index.html | 120 ------ .../anatomy_of_a_webextension/index.html | 120 ++++++ .../webextensions/depuraci\303\263n/index.html" | 189 --------- .../packaging_and_installation/index.html | 91 ---- .../porting_from_google_chrome/index.html | 22 - .../add-ons/webextensions/prerequisites/index.html | 17 + .../add-ons/webextensions/prerequisitos/index.html | 17 - .../publishing_your_webextension/index.html | 105 ----- .../que_son_las_webextensions/index.html | 59 --- .../tu_primera_webextension/index.html | 160 ------- .../add-ons/webextensions/tutorial/index.html | 459 --------------------- .../user_interface/accion_navegador/index.html | 50 --- .../user_interface/browser_action/index.html | 50 +++ .../what_are_webextensions/index.html | 59 +++ .../your_first_webextension/index.html | 160 +++++++ .../your_second_webextension/index.html | 459 +++++++++++++++++++++ .../developer_guide/build_instructions/index.html | 73 ++++ .../developer_guide/mozilla_build_faq/index.html | 343 +++++++++++++++ .../index.html" | 343 --------------- .../developer_guide/source_code/cvs/index.html | 149 +++++++ .../index.html" | 149 ------- files/es/mozilla/firefox/releases/1.5/index.html | 164 ++++++++ files/es/mozilla/firefox/releases/19/index.html | 66 +++ .../2/adding_feed_readers_to_firefox/index.html | 51 +++ files/es/mozilla/firefox/releases/2/index.html | 157 +++++++ .../firefox/releases/2/security_changes/index.html | 13 + files/es/mozilla/firefox/releases/3.5/index.html | 231 +++++++++++ .../firefox/releases/3/dom_improvements/index.html | 35 ++ .../firefox/releases/3/full_page_zoom/index.html | 46 +++ files/es/mozilla/firefox/releases/3/index.html | 283 +++++++++++++ .../releases/3/notable_bugs_fixed/index.html | 39 ++ .../firefox/releases/3/svg_improvements/index.html | 62 +++ .../firefox/releases/3/templates/index.html | 27 ++ .../releases/3/updating_extensions/index.html | 161 ++++++++ .../3/updating_web_applications/index.html | 87 ++++ .../3/xul_improvements_in_firefox_3/index.html | 109 +++++ 36 files changed, 2961 insertions(+), 1764 deletions(-) delete mode 100644 files/es/mozilla/add-ons/webextensions/anatomia_de_una_webextension/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html delete mode 100644 "files/es/mozilla/add-ons/webextensions/depuraci\303\263n/index.html" delete mode 100644 files/es/mozilla/add-ons/webextensions/packaging_and_installation/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/prerequisites/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/prerequisitos/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/publishing_your_webextension/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/que_son_las_webextensions/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/tu_primera_webextension/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/tutorial/index.html delete mode 100644 files/es/mozilla/add-ons/webextensions/user_interface/accion_navegador/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html create mode 100644 files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html create mode 100644 files/es/mozilla/developer_guide/build_instructions/index.html create mode 100644 files/es/mozilla/developer_guide/mozilla_build_faq/index.html delete mode 100644 "files/es/mozilla/developer_guide/preguntas_frecuentes_sobre_la_compilaci\303\263n_de_mozilla/index.html" create mode 100644 files/es/mozilla/developer_guide/source_code/cvs/index.html delete mode 100644 "files/es/mozilla/developer_guide/source_code/c\303\263digo_fuente_de_mozilla_(cvs)/index.html" create mode 100644 files/es/mozilla/firefox/releases/1.5/index.html create mode 100644 files/es/mozilla/firefox/releases/19/index.html create mode 100644 files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html create mode 100644 files/es/mozilla/firefox/releases/2/index.html create mode 100644 files/es/mozilla/firefox/releases/2/security_changes/index.html create mode 100644 files/es/mozilla/firefox/releases/3.5/index.html create mode 100644 files/es/mozilla/firefox/releases/3/dom_improvements/index.html create mode 100644 files/es/mozilla/firefox/releases/3/full_page_zoom/index.html create mode 100644 files/es/mozilla/firefox/releases/3/index.html create mode 100644 files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html create mode 100644 files/es/mozilla/firefox/releases/3/svg_improvements/index.html create mode 100644 files/es/mozilla/firefox/releases/3/templates/index.html create mode 100644 files/es/mozilla/firefox/releases/3/updating_extensions/index.html create mode 100644 files/es/mozilla/firefox/releases/3/updating_web_applications/index.html create mode 100644 files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html (limited to 'files/es/mozilla') diff --git a/files/es/mozilla/add-ons/webextensions/anatomia_de_una_webextension/index.html b/files/es/mozilla/add-ons/webextensions/anatomia_de_una_webextension/index.html deleted file mode 100644 index 685e282bf9..0000000000 --- a/files/es/mozilla/add-ons/webextensions/anatomia_de_una_webextension/index.html +++ /dev/null @@ -1,120 +0,0 @@ ---- -title: Anatomía de una extension -slug: Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension -tags: - - WebExtensions -translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension ---- -
{{AddonSidebar}}
- -

Una extensión se compone de una colección de archivos, empaquetados para su distribución e instalación. En este artículo vamos a repasar rápidamente los archivos que deben estar presentes en una extensión.

- -

Toda extensión debe contener un archivo llamado "manifest.json". Este puede tener enlaces a otros tipos de archivos:

- - - -

- -

manifest.json

- -

Este es el único archivo que debe estar presente en toda WebExtension. Este contiene los metadatos básicos acerca de la extensión, como su nombre, versión, y los permisos que esta requiere. También provee los enlaces a otros archivos de la extensión.

- -

Mira la página de referencia manifest.json para ver todos los detalles.

- -

Scripts en segundo plano

- -

Las extensiones a menudo necesitan mantener estados de larga duración, o ejecutar operaciones a largo plazo, independientemente del tiempo de vida de una página web en particular o las ventanas del navegador. Para eso son los scripts en segundo plano.

- -

Los scripts en segundo plano son cargados cuando la extensión es cargada y se mantienen cargados hasta que la extensión es deshabilitada o desinstalada. Tu puedes usar cualquier API de WebExtensions en el script, siempre y cuando hayas solicitado el permiso necesario.

- -

Especificando los scripts en segundo plano

- -

Puedes incluir un script en segundo plano usando la propiedad background en "manifest.json":

- -
// manifest.json
-
-"background": {
-  "scripts": ["background-script.js"]
-}
- -

Puedes especificar múltiples scripts en segundo plano: si lo haces, ellos se ejecutarán en el mismo contexto, justo como son cargados múltiples scripts en una página web.

- -

Entorno del script en segundo plano

- -

APIs del DOM

- -

Los scripts en segundo plano se ejecuta en el contexto de páginas especiales llamadas páginas en segundo plano. Esto le da un variable global window, junto con todas las APIs estándar del DOM que proporciona.

- -

No necesitas proveer tu propia página en segundo plano. Si incluyes un script en segundo plano, una página en segundo plano vacía se creará para ti.

- -

Sin embargo, puedes escoger y proveer tu página en segundo plano como un archivo HTML separado:

- -
// manifest.json
-
-"background": {
-  "page": "background-page.html"
-}
- -

APIs de WebExtension

- -

Los scripts en segundo plano pueden usar cualquier API de WebExtension en el script, siempre que tu extensión tenga los permisos necesarios.

- -

Acceso de origen cruzado

- -

Los scripts en segundo plano pueden hacer peticiones XHR a cualquier host para los cuales tienen permisos del host.

- -

Acciones del navegador

- -

Si tu extensión define una acción del navegador, y esa acción del navegador no tiene ventanas emergentes, entonces puedes escuchar los eventos "clic" del botón en el navegador empleando el objeto onClicked de las acciones del navegador:

- -
browser.browserAction.onClicked.addListener(handleClick);
- -

Contenido web

- -

Los scripts en segundo plano no tienen acceso directo a las páginas web. Sin embargo, pueden cargar scripts de contenido en páginas web, y comunicarse con esos scripts empleando la API de paso de mensajes.

- -

Políticas de segurdiad para el contendio

- -

Los scripts de segundo plano están restringidos de algunas operaciones dañinas, como el uso de eval(), a través de la  Política de Seguridad del Contenido. Vea la Política de Segurdiad del Contenido para más detalles sobre esto.

- -

Scripts de contenido

- -

Usa los scripts de contenido para acceder y manipular páginas web. Los scripts de contenido son cargados dentro de las páginas web y ejecutados en el contexto particular de esa página.

- -

Los scripts de contenido son scripts provistos por la extensión los cuales se ejecutan en el contexto de la página web; estos difieren de los scripts que son cargados por la página misma, incluye aquellos que son proporcionados en los elementos {{HTMLElement("script")}} dentro de la página.

- -

Los scripts de contenido pueden ver y manipular el DOM de las páginas, igual que los scripts cargados normalmente por la página.

- -

A diferencia de los scripts normales, ellos pueden:

- - - -

Los scripts de contenido no pueden acceder directamente a los scripts normales de una página web, pero pueden intercambiar mensajes con ellos usando la API estándar window.postMessage().

- -

Generalmente, cuando hablamos acerca de scripts de contenido, nos referimos a JavaScript, pero tu puedes inyectar CSS dentro de las páginas web empleando el mismo mecanismo.

- -

Mira el artículo scripts de contenido para aprender más.

- -

Recursos web accesibles

- -

Los recursos web accesibles son recursos como imágenes, HTML, CSS y JavaScript que tu puedes incluir en la extensión y los quieres hacer accesible a los scripts en segundo plano y los scripts de las páginas. Los recursos que son hechos accesibles desde la web pueden ser referenciados desde scripts de páginas web y scripts de contenido mediante un esquema especial de URI.

- -

Por ejemplo, si un script de contenido quiere insertar algunas imágenes dentro de páginas web, tu puedes incluirlos en la extensión y hacerlos accesibles desde la web. El script de contenido creará y añadirá las etiquetas img que referencia a las imágenes mediante el atributo src.

- -

Para aprender más, vea la documentación para la el parámetro web_accessible_resource del manifest.json.

diff --git a/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html b/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html new file mode 100644 index 0000000000..685e282bf9 --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/anatomy_of_a_webextension/index.html @@ -0,0 +1,120 @@ +--- +title: Anatomía de una extension +slug: Mozilla/Add-ons/WebExtensions/Anatomia_de_una_WebExtension +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Anatomy_of_a_WebExtension +--- +
{{AddonSidebar}}
+ +

Una extensión se compone de una colección de archivos, empaquetados para su distribución e instalación. En este artículo vamos a repasar rápidamente los archivos que deben estar presentes en una extensión.

+ +

Toda extensión debe contener un archivo llamado "manifest.json". Este puede tener enlaces a otros tipos de archivos:

+ + + +

+ +

manifest.json

+ +

Este es el único archivo que debe estar presente en toda WebExtension. Este contiene los metadatos básicos acerca de la extensión, como su nombre, versión, y los permisos que esta requiere. También provee los enlaces a otros archivos de la extensión.

+ +

Mira la página de referencia manifest.json para ver todos los detalles.

+ +

Scripts en segundo plano

+ +

Las extensiones a menudo necesitan mantener estados de larga duración, o ejecutar operaciones a largo plazo, independientemente del tiempo de vida de una página web en particular o las ventanas del navegador. Para eso son los scripts en segundo plano.

+ +

Los scripts en segundo plano son cargados cuando la extensión es cargada y se mantienen cargados hasta que la extensión es deshabilitada o desinstalada. Tu puedes usar cualquier API de WebExtensions en el script, siempre y cuando hayas solicitado el permiso necesario.

+ +

Especificando los scripts en segundo plano

+ +

Puedes incluir un script en segundo plano usando la propiedad background en "manifest.json":

+ +
// manifest.json
+
+"background": {
+  "scripts": ["background-script.js"]
+}
+ +

Puedes especificar múltiples scripts en segundo plano: si lo haces, ellos se ejecutarán en el mismo contexto, justo como son cargados múltiples scripts en una página web.

+ +

Entorno del script en segundo plano

+ +

APIs del DOM

+ +

Los scripts en segundo plano se ejecuta en el contexto de páginas especiales llamadas páginas en segundo plano. Esto le da un variable global window, junto con todas las APIs estándar del DOM que proporciona.

+ +

No necesitas proveer tu propia página en segundo plano. Si incluyes un script en segundo plano, una página en segundo plano vacía se creará para ti.

+ +

Sin embargo, puedes escoger y proveer tu página en segundo plano como un archivo HTML separado:

+ +
// manifest.json
+
+"background": {
+  "page": "background-page.html"
+}
+ +

APIs de WebExtension

+ +

Los scripts en segundo plano pueden usar cualquier API de WebExtension en el script, siempre que tu extensión tenga los permisos necesarios.

+ +

Acceso de origen cruzado

+ +

Los scripts en segundo plano pueden hacer peticiones XHR a cualquier host para los cuales tienen permisos del host.

+ +

Acciones del navegador

+ +

Si tu extensión define una acción del navegador, y esa acción del navegador no tiene ventanas emergentes, entonces puedes escuchar los eventos "clic" del botón en el navegador empleando el objeto onClicked de las acciones del navegador:

+ +
browser.browserAction.onClicked.addListener(handleClick);
+ +

Contenido web

+ +

Los scripts en segundo plano no tienen acceso directo a las páginas web. Sin embargo, pueden cargar scripts de contenido en páginas web, y comunicarse con esos scripts empleando la API de paso de mensajes.

+ +

Políticas de segurdiad para el contendio

+ +

Los scripts de segundo plano están restringidos de algunas operaciones dañinas, como el uso de eval(), a través de la  Política de Seguridad del Contenido. Vea la Política de Segurdiad del Contenido para más detalles sobre esto.

+ +

Scripts de contenido

+ +

Usa los scripts de contenido para acceder y manipular páginas web. Los scripts de contenido son cargados dentro de las páginas web y ejecutados en el contexto particular de esa página.

+ +

Los scripts de contenido son scripts provistos por la extensión los cuales se ejecutan en el contexto de la página web; estos difieren de los scripts que son cargados por la página misma, incluye aquellos que son proporcionados en los elementos {{HTMLElement("script")}} dentro de la página.

+ +

Los scripts de contenido pueden ver y manipular el DOM de las páginas, igual que los scripts cargados normalmente por la página.

+ +

A diferencia de los scripts normales, ellos pueden:

+ + + +

Los scripts de contenido no pueden acceder directamente a los scripts normales de una página web, pero pueden intercambiar mensajes con ellos usando la API estándar window.postMessage().

+ +

Generalmente, cuando hablamos acerca de scripts de contenido, nos referimos a JavaScript, pero tu puedes inyectar CSS dentro de las páginas web empleando el mismo mecanismo.

+ +

Mira el artículo scripts de contenido para aprender más.

+ +

Recursos web accesibles

+ +

Los recursos web accesibles son recursos como imágenes, HTML, CSS y JavaScript que tu puedes incluir en la extensión y los quieres hacer accesible a los scripts en segundo plano y los scripts de las páginas. Los recursos que son hechos accesibles desde la web pueden ser referenciados desde scripts de páginas web y scripts de contenido mediante un esquema especial de URI.

+ +

Por ejemplo, si un script de contenido quiere insertar algunas imágenes dentro de páginas web, tu puedes incluirlos en la extensión y hacerlos accesibles desde la web. El script de contenido creará y añadirá las etiquetas img que referencia a las imágenes mediante el atributo src.

+ +

Para aprender más, vea la documentación para la el parámetro web_accessible_resource del manifest.json.

diff --git "a/files/es/mozilla/add-ons/webextensions/depuraci\303\263n/index.html" "b/files/es/mozilla/add-ons/webextensions/depuraci\303\263n/index.html" deleted file mode 100644 index c24f9d07f5..0000000000 --- "a/files/es/mozilla/add-ons/webextensions/depuraci\303\263n/index.html" +++ /dev/null @@ -1,189 +0,0 @@ ---- -title: Depuración -slug: Mozilla/Add-ons/WebExtensions/Depuración -tags: - - WebExtensions -translation_of: Mozilla/Add-ons/WebExtensions/Debugging ---- -
{{AddonSidebar}}
- -
-

Las técnicas descritas aquí funcionan en Firefox 50 y versiones sucesivas. Si necesitas usar una versión anterior de Firefox, por favor ve al artículo debugging extensions using WebExtension APIs before Firefox 50.

-
- -

Este artículo explica cómo se pueden usar las herramientas de desarrollo de Firefox para depurar extensiones creadas con las WebExtension APIs.

- -

Una WebExtension puede consistir en varias partes distintas — scripts en segundo plano, popups, options pages, content scripts — y se tendrá que usar un proceso ligeramente distinto para depurar cada parte. Así, cada parte tendrá una sección principal en este artículo, y el objetivo es que esas secciones se puedan leer de forma independiente. Empezaremos presentando el Depurador de Add-on, que será usado para depurar la mayoría de las partes de un complemento.

- - - -

El Depurador de Add-on

- -

Para la mayor parte de este artículo utilizaremos el Depurador de Add-on. Para abrir el Depurador de Add-on:

- - - -

Se abrirá entonces una nueva ventana. La ventana principal de Firefox se pondrá en primer plano, así que se tendrá que hacer click en la nueva ventana para que aparezca en primer plano.

- -

{{EmbedYouTube("HMozipAjrYA")}}

- -

Esta nueva ventana se llama "Herramientas de desarrollo" y contiene las herramientas de depuración que se usarán. La interfaz tiene varias pestañas en la parte de arriba que permiten moverse por las herramientas disponibles:

- -

- -

En este artículo usaremos tres herramientas de depuración:

- - - -

Depurando scripts en segundo plano

- -
-

Los ejemplos de esta sección usan la extensión de ejemplo "notify-link-clicks-l10n". Para explorar las opciones, se puede encontrar este ejemplo en el repositorio webextensions-examples.

-
- -

Los scripts en segundo plano permanecen cargados durante el tiempo de vida de la extensión. Se cargan dentro de una “página en segundo plano” invisible: por defecto, es un documento HTML vacío, pero se puede especificar contenido HTML propio usando la palabra clave "background" en “manifest.json”.

- -

Se pueden depurar scripts en segundo plano usando el Depurador de Add-ons.

- -

En la Consola del Depurador de Add-ons se puede ver un registro de las salidas, incluidas las llamadas a console.log() desde los propios scripts en segundo plano y cualquier error que el navegador encuentre al ejecutarlos. Es importante mencionar que la consola muestra todos los errores detectados por el navegador, no sólo los errores relacionados con el código de la extensión.

- -

Por ejemplo, la extensión de ejemplo notify-link-clicks-i18n registra un mensaje de su script en segundo plano cuando recibe un mensaje de uno de sus otros scripts:

- -

{{EmbedYouTube("WDQsBU-rpN0")}}

- -

Usando la línea de comandos de la Consola, se pueden acceder y modificar los objetos creados por los scripts en segundo plano.

- -

Por ejemplo, aquí se hace un allamada a la función notify() definida en el script en segundo plano de la extensión:

- -

{{EmbedYouTube("g-Qgf8Mc2wg")}}

- -

Si se mira la ventana del Depurador, se pueden ver todos los scripts en segundo plano de la extensión. Se pueden definir breakpoints, ver el código paso a paso y hacer todo lo que es posible hacer en un depurador.

- -

{{EmbedYouTube("MNeaz2jdmzY")}}

- -

Si se pulsa la tecla de Escape mientras se está en el Depurador, la ventana de Herramientas de desarrollo se dividirá en dos, con la parte de abajo ocupada ahora por la Consola. Ahora, mientras se esté en un breakpoint, se puede modificar el estado del programa usando la consola. Ver Dividir la Consola para más información.

- -

Depurando páginas de opciones

- -

Las páginas de opciones son páginas HTML que pueden ser proporcionadas por la persona que desarrolle la extensión y contienen opciones para la misma. Se muestran normalmente en un iframe en el Add-ons Manager (para ver el Add-ons Manager, visita la página "about:addons").

- -

Para depurar páginas de opciones:

- - - -

Cualquier archivo fuente en JavaScript que incluya será listado en el Depurador:

- -

{{EmbedYouTube("BUMG-M8tFF4")}}

- -
-

Este vídeo usa el ejemplo de WebExtension favourite-colour.

-
- -

También se verá cualquier mensaje registrado por el código en la Consola del Depurador de Add-on.

- -

También se puede usar el Depurador de Add-on para depurar el código HTML y CSS de la página. Pero primero se necesita dirigir las herramientas al iframe que alberga la página de opciones. Para hacer esto: abre la página de opciones, haz clic en el icono indicado en la captura de pantalla mostrada a continuación y selecciona la página de opciones del menú desplegable:

- -

Ahora al cambiar a la pestaña Inspector se podrá examinar y editar el HTML y CSS para la página:

- -

 

- -

{{EmbedYouTube("-2m3ubFAU94")}}

- -

Depurando ventanas emergentes

- -

Las ventanas emergentes son cuadros de diálogo unidos a acciones del navegador o de la página. Se especifican usando un documento HTML que puede incluir fuentes CSS y JavaScript para determinar el estilo y el funcionamiento. Cuando la ventana emergente es visible, se puede usar el Depurador de Add-on para depurar su código.

- -

Un problema con las ventanas emergentes es que si una ventana emergente está abierta y se hace clic fuera de ella, esta se cierra y su código se descarga. Obviamente, esto hace que sea imposible depurarlas. Para eliminar este comportamiento, se debe hacer clic en el botón del Depurador de Add-on destacado en la captura de pantalla mostrada a continuación:

- -

- -

Ahora, al abrir una ventana emergente esta continuará abierta hasta que se pulse Escape.

- -

 

- -
-

Es importante señalar que esta opción está disponible para ventanas emergentes desarrolladas para el navegador, como el menú de hamburguesa ( ), así como a ventanas emergentes propias de la add-on.

- -

También es importante notar que el cambio es persistente, incluso aunque el navegador se reinicie. Estamos trabajando en solucionar esto en el bug 1251658, pero hasta entonces puede ser mejor permitir de nuevo la ocultación automática volviendo a hacer clic en el botón antes de cerrar la Caja de Herramientas del Navegador.

- -

Internamente, este botón simplemente cambia la preferencia ui.popup.disable_autohide, lo que se puede hacer manualmente usando about:config.

-
- -

Cuando la ventana emergente está abierta, sus fuentes de JavaScript se listarán en el Depurador. Se pueden colocar breakpoints y modificar el estado interno del programa:

- -

{{EmbedYouTube("hzwnR8qoz2I")}}

- -
-

Este vídeo usa la extensión de ejemplo beastify.

-
- -

También se puede usar el Depurador de Add-on para depurar el código HTML y CSS de la ventana emergente. Pero primero se necesita dirigir las herramientas al documento de la ventana emergente. Para hacer esto: abre la ventana emergente, haz clic en el icono indicado en la captura de pantalla mostrada a continuación y selecciona la página de la ventana emergente del menú desplegable:

- -

- -

Ahora al cambiar a Inspector se podrán examinar y editar el HTML y el CSS de la ventana emergente:

- -

{{EmbedYouTube("6lvdm7jaq7Y")}}

- -

Depurando scripts de contenido

- -

Se puede usar el Depurador de Add-on para depurar páginas en segundo plano, páginas de opciones y ventanas emergentes. Sin embargo, no se puede usar para depurar scripts de contenido. Esto es debido a que, en Firefox multiproceso, los scripts de contenido se ejecutan en un proceso distinto del de otras partes de la add-on.

- -

Para depurar scripts de contenido adjuntos a una página web, se deben usar las herramientas de desarrollo web normales para esa página:

- - - -

{{EmbedYouTube("f46hMLELyaI")}}

- -

Por defecto, las herramientas se muestran al pie de la pestaña de desarrollo, para reflejar que están relacionadas con esa pestaña. Cualquier salida de las instrucciones console.log() de los scripts de contenido será mostrada allí. También se verán los scripts de contenido listados en el Depurador, donde se podrán colocar breakpoints, avanzar en el código, etc.

- -

{{EmbedYouTube("Hx3GU_fEPeo")}}

- -
-

Este video usa el ejemplo notify-link-clicks-i18n de WebExtension.

-
- -
-

Si la pestaña de Herramientas de Desarrollo no estaba abierta cuando el scripts de contenido se introdujo, puede ocurrir que el scripts de contenido no aparezca en el panel de depuración. Si esto ocurre, recargar la página que contiene la pestaña de Herramientas de Desarrollo debería solucionar el problema.

-
diff --git a/files/es/mozilla/add-ons/webextensions/packaging_and_installation/index.html b/files/es/mozilla/add-ons/webextensions/packaging_and_installation/index.html deleted file mode 100644 index 7718e990f3..0000000000 --- a/files/es/mozilla/add-ons/webextensions/packaging_and_installation/index.html +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: Empaquetado e Instalación -slug: Mozilla/Add-ons/WebExtensions/Packaging_and_installation -translation_of: Mozilla/Add-ons/WebExtensions/Temporary_Installation_in_Firefox -translation_of_original: Mozilla/Add-ons/WebExtensions/Packaging_and_installation ---- -

Empaquetando tu extensión

- -
-

Mozilla actualmente esta considerando implementar una aplicación con interfaz visual para empaquetar y cargar extensiones. Mira el Bug 1185460 para más información. Hasta entonces, sigue los pasos que aparecen a continuación.

-
- -

Las extensiones para Firefox son empaquetadas como archivos XPI, los cuales son solamente archivos ZIP, con extensión "xpi".

- -

Un truco es que el archivo ZIP debe ser un archivo que contenga los archivos de la extensión y no la carpeta que los contiene.

- -

Windows

- -
    -
  1. Abre la carpeta que contiene los archivos de tu extensión.
  2. -
  3. Selecciona todos los archivos.
  4. -
  5. Con clic derecho elige Enviar a  → Carpeta comprimida (zip).
  6. -
  7. Cambia el nombre del archivo resultante de something.zip a something.xpi.
  8. -
- -

Screenshot of the Windows Explorer context menu showing Send to compressed (zipped) folder

- -

Mac OS X

- -
    -
  1. Abre la carpeta que contiene los archivos de tu extensión.
  2. -
  3. Selecciona todos los archivos.
  4. -
  5. Con clic derecho elige Comprimir n elementos.
  6. -
  7. Cambia el nombre del archivo resultante de something.zip a something.xpi.
  8. -
- -

Screenshot of the Finder context menu showing the Compress 15 Items option

- -

Linux / Mac OS X Terminal

- -
    -
  1. cd path/to/my-extension/
  2. -
  3. zip -r ../my-extension.xpi *
  4. -
- -

Instalando tu extensión

- -
    -
  1. Navega a about:addons
  2. -
  3. Arrastra y suelta el XPI dentro de la página, o abre el menú de opciones y escoge "Instalar complemento desde archivo..."
  4. -
  5. Da clic en "Instalar" en el diálogo que aparecerá
  6. -
- -

Instalando tu extensión en Firefox OS

- -

Tu puedes instalar tu extensión desde WebIDE en un escritorio conectado vía USB o Wifi. Abre path/to/my-extension/ como una Aplicación empaquetada en WebIDE.

- -

Cuando la validación de manifest.json es correcta podrás instalar y ejecutar tu extensión en el dispositivo con Firefox OS conectado.

- -

Para instalar extensiones debe tener habilitada la opción en Configuración->Complementos del dispositivo con Firefox OS.

- -

Resolución de problemas

- -

Aquí están algunos de los problemas más comunes que podrías encontrarte:

- -

"Este complemento no puede ser instalado porque no ha sido verificado."

- - - -

"Este complemento no puede ser instalado porque para estar corrupto."

- - - -

No pasa nada

- - diff --git a/files/es/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html b/files/es/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html deleted file mode 100644 index 58959678f4..0000000000 --- a/files/es/mozilla/add-ons/webextensions/porting_from_google_chrome/index.html +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Conversión de extensiones de Google Chrome -slug: Mozilla/Add-ons/WebExtensions/Porting_from_Google_Chrome -tags: - - WebExtensions -translation_of: Mozilla/Add-ons/WebExtensions/Porting_a_Google_Chrome_extension ---- -
{{AddonSidebar}}
- -

Las extensiones programadas con API de WebExtensions están diseñadas para ser compatibles entre navegadores diferentes: en buena medida, esta tecnología es compatible directamente con la API de extensiones admitida por Google Chrome y Opera. En la mayoría de los casos, las extensiones creadas para estos navegadores se ejecutarán en Firefox con solo unas pocas modificaciones. Casi todas las API de extensiones se admiten a través de funciones de devolución de llamada bajo el espacio de nombres chrome, al igual que Chrome. Las únicas API que no se admiten bajo el espacio de nombres chrome son aquellas que son deliberadamente incompatibles con Chrome. En esos casos contados, la página de documentación de la API manifestará expresamente que se admite solo en el espacio de nombres browser. El proceso de conversión de extensiones de Chrome u Opera es el siguiente:

- -
    -
  1. Revise su utilización de funciones de manifest.json y API de WebExtensions con respecto a la referencia de incompatibilidades con Chrome. Si está empleando funciones o API que aún no se admiten en Firefox, es posible que no pueda convertir su extensión por el momento. Mozilla ofrece un servicio que puede ayudar a automatizar este paso: https://www.extensiontest.com/.
  2. -
  3. Instale su extensión en Firefox y póngala a prueba.
  4. -
  5. Si experimenta problemas, póngase en contacto con nosotros a través de la lista de correo «dev-addons» o el canal #webextensions en IRC.
  6. -
  7. Envíe su complemento a AMO para su firma y distribución.
  8. -
- -

Si dependía de la opción de consola de Chrome para cargar extensiones no empaquetadas, eche un vistazo a la herramienta web-ext, la cual automatiza la instalación temporal en Firefox para permitir el desarrollo.

- - diff --git a/files/es/mozilla/add-ons/webextensions/prerequisites/index.html b/files/es/mozilla/add-ons/webextensions/prerequisites/index.html new file mode 100644 index 0000000000..d022940dab --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/prerequisites/index.html @@ -0,0 +1,17 @@ +--- +title: Prerequisitos +slug: Mozilla/Add-ons/WebExtensions/Prerequisitos +translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites +--- +

Para desarrollar usando las APIs de WebExtension, debes seguir algunos pasos antes de comenzar.

+ + diff --git a/files/es/mozilla/add-ons/webextensions/prerequisitos/index.html b/files/es/mozilla/add-ons/webextensions/prerequisitos/index.html deleted file mode 100644 index d022940dab..0000000000 --- a/files/es/mozilla/add-ons/webextensions/prerequisitos/index.html +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Prerequisitos -slug: Mozilla/Add-ons/WebExtensions/Prerequisitos -translation_of: Mozilla/Add-ons/WebExtensions/Prerequisites ---- -

Para desarrollar usando las APIs de WebExtension, debes seguir algunos pasos antes de comenzar.

- - diff --git a/files/es/mozilla/add-ons/webextensions/publishing_your_webextension/index.html b/files/es/mozilla/add-ons/webextensions/publishing_your_webextension/index.html deleted file mode 100644 index ef81cd0468..0000000000 --- a/files/es/mozilla/add-ons/webextensions/publishing_your_webextension/index.html +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: Publicando tu extensión -slug: Mozilla/Add-ons/WebExtensions/Publishing_your_WebExtension -tags: - - AMO - - Addons - - WebExtensions -translation_of: Mozilla/Add-ons/WebExtensions/Package_your_extension_ ---- -
{{AddonSidebar}}
- -

Una vez que hayas acabado de modificar y testear tu extensión, es probable que quieras compartirla con el resto del mundo. Mozilla tiene una web: addons.mozilla.org (comunmente abreviada como AMO), en la que los desarrolladores pueden publicar sus complementos y los usuarios pueden encontrarlos. Publicando tu extension en AMO, puedes participar en nuestra comunidad de usuarios y creadores, y encontrar una audiencia para tu extension.

- -

No tienes por que publicar tu extension en AMO.  De todas maneras, aunque no quieras publicarla, tendrás que enviarla a AMO para que pueda ser revisada y firmada. Las versiones oficiales de Firefox no aceptan complementos que no estén firmados por AMO.

- -

En resumen, este es el proceso para publicar una extensión:

- -
    -
  1. Comprime los archivos de tu extension en un zip
  2. -
  3. Crea una cuenta en AMO
  4. -
  5. Sube tu zip a AMO para firmarlo y revisarlo y selecciona una opción
  6. -
  7. Soluciona los problemas encontrados en la revisión
  8. -
  9. Si seleccionas no publicar la extension en AMO, puedes obtener la extension firmada y publicala por tu cuenta
  10. -
- -

Cuando estés listo para lanzar una nueva versión de tu extensión, puedes actualizarla visitando la página de la extensión en addons.mozilla.org, y subiendo ahí la nueva versión. Ten en cuenta que tendrás que actualizar la página de la extensión para que AMO reconozca que es una actualización de la extensión, y no una extensión completamente nueva.

- -

Si seleccionas publicar tu extensión en AMO, Firefox buscará las actualizaciones automaticamente. Si seleccionas publicarla por tu cuenta, tendrás que incluir la clave applications en tu manifest.json, con el atributo update_url apuntando a un update manifest file.

- -
-
-

Las extensiones empaquetadas de Firefox son "archivos XPI", que son simplemente un .ZIP con otra extensión

- -

No tienes que usar la extensión .XPI para subirla a AMO.

-
-
- -

1. Comprime los archivos en un zip

- -

En este punto tu extensión consistirá en una carpeta que contiene un manifest.json y otros archivos que necesite (scripts, iconos, documentos HTML, etc.). Necesitarás comprimir todos en un sólo .zip para poder subirlos a AMO.

- -

Es importante saber que el .zip deber crearse seleccionando todos los archivos de la extensión, no su carpeta contenedora.

- -

Windows

- -
    -
  1. Abre la carpeta que contenga los archivos de tu extensión.
  2. -
  3. Selecciona todos los archivos (CTRL+E o CTRL+A, depende del idioma).
  4. -
  5. Click derecho en Enviar a → Carpeta comprimida (en zip).
  6. -
- -

- -

Mac OS X

- -
    -
  1. Abre la carpeta que contenga los archivos de tu extensión.
  2. -
  3. Selecciona todos los archivos.
  4. -
  5. Click derecho y selecciona Comprimir n Items.
  6. -
- -

- -
- -
- -

Linux / Mac OS X Terminal

- -
    -
  1. cd path/to/my-extension/
  2. -
  3. zip -r -FS ../my-extension.zip *
  4. -
- -
 
- -

2. Crea una cuenta en addons.mozilla.org

- -

Visita https://addons.mozilla.org/. Si ya tienes una Cuenta Firefox, puedes utilizarla para iniciar sesión. Si no, haz click en "Registrar" y se te exigirá crear una cuenta.

- -

3. Sube tu zip

- -

A continuación, sube la extensión comprimida a AMO para poder revisarla y firmarla, y selecciona si quieres publicarla en AMO o no. Hay un tutorial disponible para guiarte durante el proceso de envío. Sería conveniente que también veas Enviando a AMO para más detalles sobre el proceso.

- -
-

Ten en cuenta que una vez que hayas subido la extensión a AMO no podrás actualizarla para usar el Add-on SDK o técnicas XUL/XPCOM. Si decides cambiar a una de estas plataformas, tendrás que enviar la extensión de nuevo como si de una nueva extensión se tratase.

- -

En otras palabras: portar a partir de sistemas de extensiones heredadas para usar APIs WebExtension es un camino de ida.

- -

Antes de subirla, asegurate de que el ZIP contiene sólo los archivos necesarios para la extensión.

-
- -

4. Soluciona los problemas detectados en la revisión

- -

En cuanto subas la aplicación, el servidor AMO realizará varios tests básicos y te notificará inmediatamente de cualquier problema. Los problemas se dividen en dos categorías: "errors" y "warnings". Si tienes errores, tienes que arreglarlos y reenviar la extensión. Si sólo tienes avisos, conviene solucionarlos, pero no es obligatorio. Puedes continuar.

- -

Si el comprobador automático no detecta ningún error, la extensión pasará por una revisión más exhaustiva. Serás contactado con los resultados de la revisión. En caso de tener errores tendrás que solucionarlos e intentarlo de nuevo.

- -

Si has selccionado que la extensión esté hosteada en AMO, este es el final del proceso de publicación. AMO firmará la extensión y la publicará, tras esto los usuarios ya podrán descargarla e instalarla.

- -

5. Publica tu extensión

- -

Si seleccionas no publicarla en AMO, obten la extensión firmada y públicala por tu cuenta.

- -

 

diff --git a/files/es/mozilla/add-ons/webextensions/que_son_las_webextensions/index.html b/files/es/mozilla/add-ons/webextensions/que_son_las_webextensions/index.html deleted file mode 100644 index eca9f0ff30..0000000000 --- a/files/es/mozilla/add-ons/webextensions/que_son_las_webextensions/index.html +++ /dev/null @@ -1,59 +0,0 @@ ---- -title: ¿Qué son las extensiones? -slug: Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions -tags: - - WebExtensions - - extensiones -translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions ---- -
{{AddonSidebar}}
- -

Una extensión agrega características y funciones a un explorador. Se ha creado utilizando tecnologías basadas en Web conocidas: HTML, CSS y JavaScript. Puede aprovechar las mismas API Web que JavaScript en una página web, pero una extensión también tiene acceso a su propio conjunto de APIs de JavaScript. Esto significa que puede hacer mucho más en una extensión de lo que puede con el código en una página web. Estos son sólo algunos ejemplos de las cosas que puedes hacer:

- -

Mejore o complemente un sitio: Use un Add-on para ofrecer funciones adicionales en el navegador o información de su sitio Web. Permita a los usuarios recopilar detalles de las páginas que visitan para mejorar el servicio que ofrecen.

- -

- -

Ejemplos: El asistente de Amazon para Firefox, OneNote Web Clipper y Grammarly para Firefox

- -

Permita que los usuarios demuestren su personalidad: Las extensiones del navegador pueden manipular el contenido de las páginas; por ejemplo, permite a los usuarios agregar su logo favorito o imágen como un fondo de pantalla acada página que visitan. Las extensiones permiten también al usuario actualizar el aspecto de la IU de Firefox, de la misma manera que lo hacen los complementos de temas.

- -

- -

Ejemplos: MyWeb New Tab, Tabliss y VivaldiFox

- -

Agregar o quitar contenido de las páginas web: es posible que desee ayudar a los usuarios a bloquear los anuncios intrusivos de las páginas web, proporcionar acceso a una guía de viajes siempre que un país o ciudad se menciona en una página web, o reformatear el contenido de la página para ofrecer una experiencia de lectura consistente. Con la capacidad de acceder y actualizar tanto HTML como CSS de una página, las extensiones pueden ayudar a los usuarios a ver la Web de la manera que quieren.

- -

- -

Ejemplos: Origen uBlock, Lector y Caja de Herramientas para Google Play Store™

- -

Agregar herramientas y nuevas funciones de navegación: añada nuevas funciones a un taskboard o genere imágenes de código QR a partir de URLs, hipervínculos o texto de página. Con opciones de interfaz de usuario flexibles y la potencia de las APIs de WebExtensions, puede añadir fácilmente nuevas funcionalidades a un navegador. Usted puede realzar casi cualquier característica o funcionalidad de sitios web, no tiene que ser su web.

- -

- -

Ejemplos: QR Code Image Generator, Swimlanes for Trello, y Tomato Clock

- -

Juegos: ofrecer juegos de ordenador tradicionales, con características de juego fuera de línea, pero también explorar nuevas posibilidades de juego, por ejemplo, mediante la incorporación de gameplay en la navegación cotidiana.

- -

- -

Ejemplos: Asteroids in Popup, Solitaire Card Game New Tab, and 2048 Prime.

- -

Agregar herramientas de desarrollo: puede proporcionar herramientas de desarrollo web como su negocio o ha desarrollado una técnica útil o un enfoque para el desarrollo web que desea compartir. De cualquier manera, puede mejorar las herramientas de desarrollo de Firefox incorporadas añadiendo una nueva ficha a la barra de herramientas del desarrollador.

- -

- -

Ejemplos: Web Developer, Web React Developer Tools, and aXe Developer Tools

- -

Las extensiones para Firefox se construyen utilizando las APIs de WebExtensions, un sistema multi-navegador para desarrollar extensiones. En gran medida, la API es compatible con la extension API soportada por Google Chrome y Opera. Extensiones escritas para estos navegadores en la mayoría de los casos se ejecutan en Firefox o Microsoft Edge con sólo unos pocos cambios. La API es también totalmente compatible con los multiprocesos de Firefox.

- -

Si tiene ideas o preguntas, o necesita ayuda para migrar un Add-on heredado a las APIs de WebExtensions, puede comunicarse con nosotros en eldev-addons mailing list o en #extdev en IRC.

- -

¿Qué sigue?

- - diff --git a/files/es/mozilla/add-ons/webextensions/tu_primera_webextension/index.html b/files/es/mozilla/add-ons/webextensions/tu_primera_webextension/index.html deleted file mode 100644 index d444b69f88..0000000000 --- a/files/es/mozilla/add-ons/webextensions/tu_primera_webextension/index.html +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: Tu primera extensión -slug: Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension -tags: - - Guía - - WebExtension -translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension ---- -
{{AddonSidebar}}
- -
-

Si estás familiarizado/a con los conceptos básicos de las extensiones de navegador, omite esta sección y ve a cómo se ponen juntos los archivos. Entonces, usa la documentación de referencia para empezar a construir tu extensión. Visita el Firefox Extension Workshop para aprender más sobre el flujo de trabajo para probar y publicar extensiones para Firefox.

-
- -

En este artículo abordaremos la creación de una extensión para Firefox, desde el comienzo hasta el final. La extensión solo agrega un borde rojo a cualquiera de las páginas cargadas desde "mozilla.org" o cualquiera de sus subdominios.

- -

El código fuente de este ejemplo se encuentra en GitHub: https://github.com/mdn/webextensions-examples/tree/master/borderify.

- -

Primero, necesitas tener instalado Firefox versión 45 o superior.

- -

Escribiendo la extensión

- -

Crea una nuevo directorio y navega a él. Por ejemplo, en tu línea de comandos/terminal se hace de esta manera:

- -
mkdir borderify
-cd borderify
- -

manifest.json

- -

Ahora crearemos un archivo  nuevo llamado "manifest.json" directamente en la carpeta "borderify". Añádale el siguiente contenido:

- -
{
-
-  "manifest_version": 2,
-  "name": "Borderify",
-  "version": "1.0",
-
-  "description": "Agrega un borde rojo a todas las páginas web de mozilla.org.",
-
-  "icons": {
-    "48": "icons/border-48.png"
-  },
-
-  "content_scripts": [
-    {
-      "matches": ["*://*.mozilla.org/*"],
-      "js": ["borderify.js"]
-    }
-  ]
-
-}
- - - -

El parámetro más interesante aquí es content_scripts, el cual le dice a Firefox que cargue el script en las páginas Web, cuyas URL coincidan con un patrón especifico. En este caso, le estamos pidiendo a Firefox que cargue el script llamado "borderify.js" en todas las paginas HTTP o HTTPS cargadas desde "mozilla.org" o cualquiera de sus subdominios.

- - - -
-

En algunas situaciones usted necesita especificar un ID para su extensión. Si necesita especificar un ID para el complemento, incluya el parámetro applications en el manifest.json y configure la propiedad gecko.id:

- -
"applications": {
-  "gecko": {
-    "id": "borderify@example.com"
-  }
-}
-
- -

icons/border-48.png

- -

La extensión debería tener un ícono. Este se mostrará junto al listado de extensiones en el Administrador de Add-ons. Nuestro manifest.json promete que tendremos un ícono  en el directorio "icons/border-48.png".

- -

Crea el directorio "icons" dentro de la carpeta "borderify". Almacena ahí el icono y nómbralo "border-48.png". Puedes utilizar el de nuestro ejemplo, el cual se obtuvo a partir del Google Material Design iconset, y es utilizado bajo los términos de la licencia Creative Commons Attribution-ShareAlike.

- -

Si eliges emplear tu propio icono, este debe ser de 48x48 pixeles. También puedes aplicar un icono de 96x96 pixeles, para resoluciones mayores, y si haces esto, se especifica como la propiedad 96 en el objeto icons del manifest.json:

- -
"icons": {
-  "48": "icons/border-48.png",
-  "96": "icons/border-96.png"
-}
- -

Alternativamente, puedes aplicar un archivo SVG ahí, y este se escalará apropiadamente. (Aunque: si usas SVG y tu icono incluye texto, puedes usar la herramienta "convert to path" del editor SVG para aplanar el texto, de modo que se escalone con un tamaño/posición coherente).

- - - -

borderify.js

- -

Finalmente, crea un archivo de nombre "borderify.js" directamente en el directorio "borderify". Y déjale el siguiente contenido:

- -
document.body.style.border = "5px solid red";
- -

Este script se cargara en las páginas que coincidan con el patrón dado en el parámetro content_scripts del archivo manifest.json. El script tiene acceso directo al documento, de la misma manera que los scripts cargados por la propia página.

- - - -

Probándolo

- -

Primero, verifica que tienes todos los archivos en su lugar:

- -
borderify/
-    icons/
-        border-48.png
-    borderify.js
-    manifest.json
- -

Instalación

- -

Abre "about:debugging" en Firefox, da click en "Cargar complemento temporal" y selecciona cualquier archivo en el directorio de la extensión:

- -

{{EmbedYouTube("cer9EUKegG4")}}

- -

La extensión se encontrará instalada, y lo estará hasta que reinicies Firefox.

- -

Alternativamente, puede ejecuturar la extensión desde la línea de comandos utilizando la herramienta web-ext.

- -

Probando

- -

Ahora pruebe visitando una página bajo "mozilla.org", y usted verá el borde rojo alrededor de la página:

- -

{{EmbedYouTube("rxBQl2Z9IBQ")}}

- -
-

No lo intentes en addons.mozilla.org! Los scripts de contenido están actualmente bloqueados en ese dominio.

-
- -

Experimenta un poco. Edita el contenido del script para cambiar el color del borde, o haz algo más en el contenido de la página. Si actualizas el script de contenido, recarga los archivos de la extensión haciendo clic en el botón "Recargar" en about:debugging. Podrás ver los cambios en el momento:

- -

{{EmbedYouTube("NuajE60jfGY")}}

- - - -

Empaquetar y publicar

- -

Para que otras personas puedan utilizar tu extensión, necesitas empaquetarlo y enviarlo a Mozilla para que lo firmen. Para que aprendas más sobre eso, mira "Publicando tu extension".

- -

¿Qué sigue?

- -

Ahora que tienes una idea acerca del proceso de desarrollo de una WebExtension para Firefox, continúa con:

- - diff --git a/files/es/mozilla/add-ons/webextensions/tutorial/index.html b/files/es/mozilla/add-ons/webextensions/tutorial/index.html deleted file mode 100644 index 559320eca0..0000000000 --- a/files/es/mozilla/add-ons/webextensions/tutorial/index.html +++ /dev/null @@ -1,459 +0,0 @@ ---- -title: Tu segunda extensión -slug: Mozilla/Add-ons/WebExtensions/Tutorial -tags: - - WebExtensions -translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension ---- -
{{AddonSidebar}}
- -

Si ya ha visto el artículo tu primer extensión, ya posee una idea de como escribir una extensión. En este artículo se escribirá una extensión ligeramente más compleja para demostrar un par de cosas más de las APIs.

- -

La extensión añade un nuevo botón a la barra de herramientas de Firefox. Cuando el usuario da clic sobre el botón, mostraremos una ventana emergente que permite escoger un animal. Una vez que un animal sea escogido, reemplazaremos todas las imágenes en la página actual con la imagen del animal seleccionado.

- -

Para implementar esto, haremos lo siguiente:

- - - -

Tu puedes notar que la estructura general de la extensión luce como esto:

- -

- -

Esta es una extensión simple, pero muestra muchos de los principales conceptos de la API WebExtensions:

- - - -

Tu puedes encontrar el código fuente completo de la extensión en GitHub.

- -

Para escribir una extensión, necesitará de Firefox 45 o más reciente.

- -

Escribiendo la extensión

- -

Crea una carpeta nueva y navega hacia ella:

- -
mkdir beastify
-cd beastify
- -

manifest.json

- -

Ahora crea un archivo llamado "manifest.json", y agrega el siguiente contenido:

- -
{
-
-  "manifest_version": 2,
-  "name": "Beastify",
-  "version": "1.0",
-
-  "description": "Agrega un icono de acción navegación a la barra de herramientas. Haga clic en el botón para elegir una bestia. El contenido del cuerpo de la pestaña activa se sustituye por una imagen de la bestia elegida. Consulte https://developer.mozilla.org/es/Add-ons/WebExtensions/Examples#beastify",
-  "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify",
-  "icons": {
-    "48": "icons/beasts-48.png"
-  },
-
-  "permissions": [
-    "activeTab"
-  ],
-
-  "browser_action": {
-    "default_icon": "icons/beasts-32.png",
-    "default_title": "Bestificar",
-    "default_popup": "popup/choose_beast.html"
-  },
-
-  "web_accessible_resources": [
-    "beasts/frog.jpg",
-    "beasts/turtle.jpg",
-    "beasts/snake.jpg"
-  ]
-
-}
-
- - - -

Nota que todas las rutas dadas son relativas a manifest.json.

- -

El ícono

- -

La extensión debería tener un íncono. Éste, será mostrado junto a la lista de complementos en el Administrador de Complementos (Pude abrirlo introduciendo en la URL "about:addons"). El manifest.json promete que se posee un ícono para la barra de herramientas en "icons/beasts-48.png".

- -

Cree el directorio "icons" y guarde un ícono ahí y nómbrelo como "beasts-48.png".  Puede utilizar uno de nuestro ejemplo, el cual ha sido tomado del  conjuto de íconos Aha-Soft’s Free Retina, que es utilizado bajo el término de su propia licencia.

- -

Si elige proporcionar su propio ícono, debería ser de 48x48 pixeles. También puede proporcionar un ícono de 96x96 pixeles, para pantallas de altas resoluciones y, si usted hace esto, deberá especificarlo como la propiedad 96 del objeto icons en el manifest.json:

- -
"icons": {
-  "48": "icons/beasts-48.png",
-  "96": "icons/beasts-96.png"
-}
- -

El botón de la barra de herramientas

- -

El botón de la barra de herramientas necesita un ícono, y nuestro manifest.json promete eso y nos gustaría tener un ícono para la barra de herramientas en "icons/beasts-32.png".

- -

Guarde un ícono llamado "beasts-32.png" en el directorio "icons". Tu podrías usar uno de nuestros ejemplos, los cuales son tomados desde el sitio IconBeast Lite icon set y empleados bajo sus términos de licencia.

- -

Si tu no provees una ventana emergente, entonces el evento clic es disparado hacia tu extensión cuando el usuario de clic sobre el botón. Si provees una ventana emergente entonces el evento clic no se disparará, pero en cambio, se muestra la ventana emergente. Nosotros queremos una ventana emergente, así que vamos a crearla.

- -

La ventana emergente

- -

La función de la ventana emergente es habilitada si el usuario escoge una de los tres animales.

- -

Crea una nueva carpeta llamada "popup" bajo la carpeta raíz de la extensión . Esta será donde pondremos el código para la ventana emergente. La carpeta "popup" contendrá estos tres archivos:

- - - -

choose_beast.html

- -

El archivo HTML luce así:

- -
<!DOCTYPE html>
-
-<html>
-  <head>
-    <meta charset="utf-8">
-    <link rel="stylesheet" href="choose_beast.css"/>
-  </head>
-
-<body>
-  <div id="popup-content">
-    <div class="button beast">Frog</div>
-    <div class="button beast">Turtle</div>
-    <div class="button beast">Snake</div>
-    <div class="button reset">Reset</div>
-  </div>
-  <div id="error-content" class="hidden">
-    <p>Can't beastify this web page.</p><p>Try a different page.</p>
-  </div>
-  <script src="choose_beast.js"></script>
-</body>
-
-</html>
- -

Tenemos un elemento <div> con un ID "popup-content" que contiene un elemento para cada elección de animal. Además, tenemos otro <div> con un ID "error-content" y una clase "hidden", que usaremos en el case de que surja algún problema al inicializar la ventana emergente.

- -

Note que referenciamos los archivos CSS y JS en el HTML como lo haríamos si se tratase de una página web.

- -

choose_beast.css

- -

El CSS ajusta el tamaño de la ventana emergente, se asegura que las tres posibles opciones llenen el espacio y les da un poco de estilo básico. Además oculta los elementos con class="hidden": esto significa que nuestro "error-content" <div> estará oculto por defecto.

- -
html, body {
-  width: 100px;
-}
-
-.hidden {
-  display: none;
-}
-
-.button {
-  margin: 3% auto;
-  padding: 4px;
-  text-align: center;
-  font-size: 1.5em;
-  cursor: pointer;
-}
-
-.beast:hover {
-  background-color: #CFF2F2;
-}
-
-.beast {
-  background-color: #E5F2F2;
-}
-
-.reset {
-  background-color: #FBFBC9;
-}
-
-.reset:hover {
-  background-color: #EAEA9D;
-}
- -

choose_beast.js

- -

Aquí está el JavaScript para la ventana emergente:

- -
/**
- * CSS para ocultar toda la página
- * Excepto los elementos que pertenecen a la clase "beastify-image".
- */
-const hidePage = `body > :not(.beastify-image) {
-                    display: none;
-                  }`;
-
-/**
- * Esucha los clicks en los botones y envía el mensaje apropiado
- * al script de contenido de la página.
- */
-function listenForClicks() {
-  document.addEventListener("click", (e) => {
-
-    /**
-     * Recibe el nombre de una bestia y obtiene la URL de la imagen correspondiente.
-     */
-    function beastNameToURL(beastName) {
-      switch (beastName) {
-        case "Frog":
-          return browser.extension.getURL("beasts/frog.jpg");
-        case "Snake":
-          return browser.extension.getURL("beasts/snake.jpg");
-        case "Turtle":
-          return browser.extension.getURL("beasts/turtle.jpg");
-      }
-    }
-
-    /**
-     * Inserta dentro de la pestaña activa el CSS que oculta la página
-     * luego toma la URL de la imagen y
-     * envía un mensaje "beastify" al script de contenido de la pestaña activa.
-     */
-    function beastify(tabs) {
-      browser.tabs.insertCSS({code: hidePage}).then(() => {
-        let url = beastNameToURL(e.target.textContent);
-        browser.tabs.sendMessage(tabs[0].id, {
-          command: "beastify",
-          beastURL: url
-        });
-      });
-    }
-
-    /**
-     * Remueve el CSS que oculta la página y
-     * envía un mensaje de "reset" al script de contenido de la pestaña activa.
-     */
-    function reset(tabs) {
-      browser.tabs.removeCSS({code: hidePage}).then(() => {
-        browser.tabs.sendMessage(tabs[0].id, {
-          command: "reset",
-        });
-      });
-    }
-
-    /**
-     * Imprime el error en consola.
-     */
-    function reportError(error) {
-      console.error(`Could not beastify: ${error}`);
-    }
-
-    /**
-     * Toma la pestaña activa y
-     * llama a "beastify()" o "reset()" según corresponda.
-     */
-    if (e.target.classList.contains("beast")) {
-      browser.tabs.query({active: true, currentWindow: true})
-        .then(beastify)
-        .catch(reportError);
-    }
-    else if (e.target.classList.contains("reset")) {
-      browser.tabs.query({active: true, currentWindow: true})
-        .then(reset)
-        .catch(reportError);
-    }
-  });
-}
-
-/**
- * Si hubo algún error al ejecutar el script,
- * Despliega un popup con el mensaje de error y oculta la UI normal.
- */
-function reportExecuteScriptError(error) {
-  document.querySelector("#popup-content").classList.add("hidden");
-  document.querySelector("#error-content").classList.remove("hidden");
-  console.error(`Failed to execute beastify content script: ${error.message}`);
-}
-
-/**
- * Cuando se carga la ventana emergente, inyecta el script de contenido en la pestaña activa,
- * y agrega un manejador de eventos.
- * Si no es posible inyectar el script, se ocupa de manejar el error.
- */
-browser.tabs.executeScript({file: "/content_scripts/beastify.js"})
-.then(listenForClicks)
-.catch(reportExecuteScriptError);
- -

Empecemos por la linea 96. La ventana emergente ejecuta un script de contenido en la pestaña activa tan pronto como se termina de cargar, usando la API browser.tabs.executeScript(). Si la ejecución del script de contenido es exitosa, este quedará cargado en la página hasta que sea cerrada la pestaña o hasta que el usuario navegue hacia una página distinta.

- -
-

Un motivo común por el cual el llamado a browser.tabs.executeScript() puede fallar, es porque no es posible ejecutar scripts de contenido en todas las páginas, por ejemplo, en páginas de navegador privilegiadas como about:debugging, o páginas del dominio addons.mozilla.org, no es posible hacerlo.

-
- -

Si la ejecución falla, reportExecuteScriptError() ocultará el <div> "popup-content", mostrará el <div> "error-content", y reportará el error en la consola.

- -

Si la ejecución del script de contenido es exitosa, se llamará a listenForClicks(), que atiende los eventos que se generan al cliquear en la ventana emergente.

- - - -

La función beastify() hace tres cosas:

- - - -

La función reset() deshace lo hecho por beastify():

- - - -

El script de contenido

- -

Crea una carpeta nueva bajo la raíz del complemento llamada "content_scripts" y crea un nuevo archivo en ella llamado "beastify.js", con el contenido siguiente:

- -
(function() {
-  /**
-   * Revisa e inicializa una variable de guardia.
-   * Si este script de contenido es insertado más de una vez
-   * en la misma página, dejará de ejecutarse.
-   */
-  if (window.hasRun) {
-    return;
-  }
-  window.hasRun = true;
-
-/**
-* Recibe la URL de la imagen, remueve las que se hayan agregado antes,
-* crea un nodo IMG que apunt hacia la imagen
-* e inserta ese nodo en el documento.
-*/
-  function insertBeast(beastURL) {
-    removeExistingBeasts();
-    let beastImage = document.createElement("img");
-    beastImage.setAttribute("src", beastURL);
-    beastImage.style.height = "100vh";
-    beastImage.className = "beastify-image";
-    document.body.appendChild(beastImage);
-  }
-
-  /**
-   * Remueve todas las bestias de la página.
-   */
-  function removeExistingBeasts() {
-    let existingBeasts = document.querySelectorAll(".beastify-image");
-    for (let beast of existingBeasts) {
-      beast.remove();
-    }
-  }
-
-  /**
-   * Atiende mensajes del script de segundo plano.
-   * Llama a "beastify()" o "reset()".
-  */
-  browser.runtime.onMessage.addListener((message) => {
-    if (message.command === "beastify") {
-      insertBeast(message.beastURL);
-    } else if (message.command === "reset") {
-      removeExistingBeasts();
-    }
-  });
-
-})();
- -

Lo primero que hace el script de contenido es revisar la variable global window.hasRun: si está inicializada termina su ejecución, sino, la inicializa y continúa. La razón por la que hacemos esto es porque cada vez que el usuario abre la ventana emergente, se vuelve a ejecutar el script de contenido en la pestaña activa, por lo que podríamos tener múltiples instancias del script ejecutandose en una sola pestaña. Si esto sucede, necesitamos asegurarnos de que sea sólo la primera instancia la que vaya a realizar cambios.

- -

Luego, en la linea 40, donde el script de contenido atiende mensajes provenientes de la ventana emergente (usando la API browser.runtime.onMessage), vemos que ésta puede enviar dos mensajes diferentes: "beastify" y "reset".

- - - -

Las bestias

- -

Finalmente, necesitamos incluir las imágenes de los animales.

- -

Crea una carpeta nueva llamada "beasts", y adiciona tres imágenes en ella, con su nombre apropiado. Tu puedes obtener estas imágenes desde el repositorio en GitHub, o desde aquí:

- -

- -

Probándolo

- -

Primero, comprueba nuevamente que tienes todos los archivos necesarios en el lugar adecuado:

- -
beastify/
-
-    beasts/
-        frog.jpg
-        snake.jpg
-        turtle.jpg
-
-    content_scripts/
-        beastify.js
-
-    icons/
-        beasts-32.png
-        beasts-48.png
-
-    popup/
-        choose_beast.css
-        choose_beast.html
-        choose_beast.js
-
-    manifest.json
- -

Comenzando con Firefox 45, pueden instalar temporalmente una extensión desde el disco.

- -

Abre "about:debugging" en Firefox, de clic en "Cargar complemento temporalmente", y seleccione el archivo manifest.json. Entonces, debería de ver el ícono de la extensión aparecer en la barra de herramientas de Firefox:

- -

{{EmbedYouTube("sAM78GU4P34")}}

- -

Abra una página web, luego haga clic sobre el ícono, seleccione una bestia, y vea cómo cambia la página web:

- -

{{EmbedYouTube("YMQXyAQSiE8")}}

- -

Desarrollo desde la línea de comandos

- -
-
-
 
- -

Puede automatizar el paso de instalación temporal mediante la herramienta web-ext. Pruebe esto:

-
-
- -
cd beastify
-web-ext run
- -

 

diff --git a/files/es/mozilla/add-ons/webextensions/user_interface/accion_navegador/index.html b/files/es/mozilla/add-ons/webextensions/user_interface/accion_navegador/index.html deleted file mode 100644 index 55ce89a9c7..0000000000 --- a/files/es/mozilla/add-ons/webextensions/user_interface/accion_navegador/index.html +++ /dev/null @@ -1,50 +0,0 @@ ---- -title: Botón de la Barra de Herramientas -slug: Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador -tags: - - WebExtension -translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action ---- -
{{AddonSidebar}}
- -

Generalmente referidas como acciones de navegador, esta opción de interfaz de usuario corresponde a un botón agregado a la barra de herramientas del navegador. Los usuarios pueden hacer click en el botón para interactuar con tu extensión.
-

- -

El botón de la barra de herramientas (acción de navegador) es muy parecido al botón de la barra de direcciones (acción de página). Para conocer las diferencias y obtener consejo en cuándo usar qué tipo de botón, te recomendamos ver Acciones de página y acciones de navegador.

- -

Especificando la acción de navegador

- -

Puedes definir las propiedades de la acción de navegador utilizando la llave browser_action del archivo manifest.json:

- -
"browser_action": {
-  "default_icon": {
-    "19": "button/geo-19.png",
-    "38": "button/geo-38.png"
-  },
-  "default_title": "Whereami?"
-}
- -

El único campo obligatorio es default_icon.

- -

Existen dos formas de especificar una acción de navegador: con o sin una ventana emergente. Si no especificas una ventana emergente, se le entregará un evento a la extensión cada vez que el usuario haga click en el botón. El evento es escuchable usando browserAction.onClicked:

- -
browser.browserAction.onClicked.addListener(handleClick);
- -

En cambio, si especificas una ventana emergente, el evento de click no es despachado al hacer click en el botón: en su lugar, la ventana emergente es mostrada. El usuario podrá interactuar con la ventana emergente, la cual se cerrará automáticamente cada vez que el usuario haga click fuera de ella. Te recomendamos revisar el artículo de ventanas emergentes para conocer más detalles sobre la creación y administración de éstas.

- -

Cabe destacar que tu extensión puede tener solamente una acción de navegador.

- -

Puedes cambiar cualquier propiedad de la acción de navegador de forma programática, utilizando la API browserAction.

- -

Íconos

- -

Para más detalles sobre cómo crear íconos para usarlos en tu acción de navegador, revisa Iconografía en la documentación del Sistema de Diseño Photon.

- -

Ejemplos

- -

El repositorio de GitHub webextensions-examples contiene dos ejemplos de extensiones que implementan acciones de navegador:

- - diff --git a/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html b/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html new file mode 100644 index 0000000000..55ce89a9c7 --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/user_interface/browser_action/index.html @@ -0,0 +1,50 @@ +--- +title: Botón de la Barra de Herramientas +slug: Mozilla/Add-ons/WebExtensions/user_interface/Accion_navegador +tags: + - WebExtension +translation_of: Mozilla/Add-ons/WebExtensions/user_interface/Browser_action +--- +
{{AddonSidebar}}
+ +

Generalmente referidas como acciones de navegador, esta opción de interfaz de usuario corresponde a un botón agregado a la barra de herramientas del navegador. Los usuarios pueden hacer click en el botón para interactuar con tu extensión.
+

+ +

El botón de la barra de herramientas (acción de navegador) es muy parecido al botón de la barra de direcciones (acción de página). Para conocer las diferencias y obtener consejo en cuándo usar qué tipo de botón, te recomendamos ver Acciones de página y acciones de navegador.

+ +

Especificando la acción de navegador

+ +

Puedes definir las propiedades de la acción de navegador utilizando la llave browser_action del archivo manifest.json:

+ +
"browser_action": {
+  "default_icon": {
+    "19": "button/geo-19.png",
+    "38": "button/geo-38.png"
+  },
+  "default_title": "Whereami?"
+}
+ +

El único campo obligatorio es default_icon.

+ +

Existen dos formas de especificar una acción de navegador: con o sin una ventana emergente. Si no especificas una ventana emergente, se le entregará un evento a la extensión cada vez que el usuario haga click en el botón. El evento es escuchable usando browserAction.onClicked:

+ +
browser.browserAction.onClicked.addListener(handleClick);
+ +

En cambio, si especificas una ventana emergente, el evento de click no es despachado al hacer click en el botón: en su lugar, la ventana emergente es mostrada. El usuario podrá interactuar con la ventana emergente, la cual se cerrará automáticamente cada vez que el usuario haga click fuera de ella. Te recomendamos revisar el artículo de ventanas emergentes para conocer más detalles sobre la creación y administración de éstas.

+ +

Cabe destacar que tu extensión puede tener solamente una acción de navegador.

+ +

Puedes cambiar cualquier propiedad de la acción de navegador de forma programática, utilizando la API browserAction.

+ +

Íconos

+ +

Para más detalles sobre cómo crear íconos para usarlos en tu acción de navegador, revisa Iconografía en la documentación del Sistema de Diseño Photon.

+ +

Ejemplos

+ +

El repositorio de GitHub webextensions-examples contiene dos ejemplos de extensiones que implementan acciones de navegador:

+ + diff --git a/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html b/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html new file mode 100644 index 0000000000..eca9f0ff30 --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/what_are_webextensions/index.html @@ -0,0 +1,59 @@ +--- +title: ¿Qué son las extensiones? +slug: Mozilla/Add-ons/WebExtensions/Que_son_las_WebExtensions +tags: + - WebExtensions + - extensiones +translation_of: Mozilla/Add-ons/WebExtensions/What_are_WebExtensions +--- +
{{AddonSidebar}}
+ +

Una extensión agrega características y funciones a un explorador. Se ha creado utilizando tecnologías basadas en Web conocidas: HTML, CSS y JavaScript. Puede aprovechar las mismas API Web que JavaScript en una página web, pero una extensión también tiene acceso a su propio conjunto de APIs de JavaScript. Esto significa que puede hacer mucho más en una extensión de lo que puede con el código en una página web. Estos son sólo algunos ejemplos de las cosas que puedes hacer:

+ +

Mejore o complemente un sitio: Use un Add-on para ofrecer funciones adicionales en el navegador o información de su sitio Web. Permita a los usuarios recopilar detalles de las páginas que visitan para mejorar el servicio que ofrecen.

+ +

+ +

Ejemplos: El asistente de Amazon para Firefox, OneNote Web Clipper y Grammarly para Firefox

+ +

Permita que los usuarios demuestren su personalidad: Las extensiones del navegador pueden manipular el contenido de las páginas; por ejemplo, permite a los usuarios agregar su logo favorito o imágen como un fondo de pantalla acada página que visitan. Las extensiones permiten también al usuario actualizar el aspecto de la IU de Firefox, de la misma manera que lo hacen los complementos de temas.

+ +

+ +

Ejemplos: MyWeb New Tab, Tabliss y VivaldiFox

+ +

Agregar o quitar contenido de las páginas web: es posible que desee ayudar a los usuarios a bloquear los anuncios intrusivos de las páginas web, proporcionar acceso a una guía de viajes siempre que un país o ciudad se menciona en una página web, o reformatear el contenido de la página para ofrecer una experiencia de lectura consistente. Con la capacidad de acceder y actualizar tanto HTML como CSS de una página, las extensiones pueden ayudar a los usuarios a ver la Web de la manera que quieren.

+ +

+ +

Ejemplos: Origen uBlock, Lector y Caja de Herramientas para Google Play Store™

+ +

Agregar herramientas y nuevas funciones de navegación: añada nuevas funciones a un taskboard o genere imágenes de código QR a partir de URLs, hipervínculos o texto de página. Con opciones de interfaz de usuario flexibles y la potencia de las APIs de WebExtensions, puede añadir fácilmente nuevas funcionalidades a un navegador. Usted puede realzar casi cualquier característica o funcionalidad de sitios web, no tiene que ser su web.

+ +

+ +

Ejemplos: QR Code Image Generator, Swimlanes for Trello, y Tomato Clock

+ +

Juegos: ofrecer juegos de ordenador tradicionales, con características de juego fuera de línea, pero también explorar nuevas posibilidades de juego, por ejemplo, mediante la incorporación de gameplay en la navegación cotidiana.

+ +

+ +

Ejemplos: Asteroids in Popup, Solitaire Card Game New Tab, and 2048 Prime.

+ +

Agregar herramientas de desarrollo: puede proporcionar herramientas de desarrollo web como su negocio o ha desarrollado una técnica útil o un enfoque para el desarrollo web que desea compartir. De cualquier manera, puede mejorar las herramientas de desarrollo de Firefox incorporadas añadiendo una nueva ficha a la barra de herramientas del desarrollador.

+ +

+ +

Ejemplos: Web Developer, Web React Developer Tools, and aXe Developer Tools

+ +

Las extensiones para Firefox se construyen utilizando las APIs de WebExtensions, un sistema multi-navegador para desarrollar extensiones. En gran medida, la API es compatible con la extension API soportada por Google Chrome y Opera. Extensiones escritas para estos navegadores en la mayoría de los casos se ejecutan en Firefox o Microsoft Edge con sólo unos pocos cambios. La API es también totalmente compatible con los multiprocesos de Firefox.

+ +

Si tiene ideas o preguntas, o necesita ayuda para migrar un Add-on heredado a las APIs de WebExtensions, puede comunicarse con nosotros en eldev-addons mailing list o en #extdev en IRC.

+ +

¿Qué sigue?

+ + diff --git a/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html b/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html new file mode 100644 index 0000000000..d444b69f88 --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/your_first_webextension/index.html @@ -0,0 +1,160 @@ +--- +title: Tu primera extensión +slug: Mozilla/Add-ons/WebExtensions/Tu_primera_WebExtension +tags: + - Guía + - WebExtension +translation_of: Mozilla/Add-ons/WebExtensions/Your_first_WebExtension +--- +
{{AddonSidebar}}
+ +
+

Si estás familiarizado/a con los conceptos básicos de las extensiones de navegador, omite esta sección y ve a cómo se ponen juntos los archivos. Entonces, usa la documentación de referencia para empezar a construir tu extensión. Visita el Firefox Extension Workshop para aprender más sobre el flujo de trabajo para probar y publicar extensiones para Firefox.

+
+ +

En este artículo abordaremos la creación de una extensión para Firefox, desde el comienzo hasta el final. La extensión solo agrega un borde rojo a cualquiera de las páginas cargadas desde "mozilla.org" o cualquiera de sus subdominios.

+ +

El código fuente de este ejemplo se encuentra en GitHub: https://github.com/mdn/webextensions-examples/tree/master/borderify.

+ +

Primero, necesitas tener instalado Firefox versión 45 o superior.

+ +

Escribiendo la extensión

+ +

Crea una nuevo directorio y navega a él. Por ejemplo, en tu línea de comandos/terminal se hace de esta manera:

+ +
mkdir borderify
+cd borderify
+ +

manifest.json

+ +

Ahora crearemos un archivo  nuevo llamado "manifest.json" directamente en la carpeta "borderify". Añádale el siguiente contenido:

+ +
{
+
+  "manifest_version": 2,
+  "name": "Borderify",
+  "version": "1.0",
+
+  "description": "Agrega un borde rojo a todas las páginas web de mozilla.org.",
+
+  "icons": {
+    "48": "icons/border-48.png"
+  },
+
+  "content_scripts": [
+    {
+      "matches": ["*://*.mozilla.org/*"],
+      "js": ["borderify.js"]
+    }
+  ]
+
+}
+ + + +

El parámetro más interesante aquí es content_scripts, el cual le dice a Firefox que cargue el script en las páginas Web, cuyas URL coincidan con un patrón especifico. En este caso, le estamos pidiendo a Firefox que cargue el script llamado "borderify.js" en todas las paginas HTTP o HTTPS cargadas desde "mozilla.org" o cualquiera de sus subdominios.

+ + + +
+

En algunas situaciones usted necesita especificar un ID para su extensión. Si necesita especificar un ID para el complemento, incluya el parámetro applications en el manifest.json y configure la propiedad gecko.id:

+ +
"applications": {
+  "gecko": {
+    "id": "borderify@example.com"
+  }
+}
+
+ +

icons/border-48.png

+ +

La extensión debería tener un ícono. Este se mostrará junto al listado de extensiones en el Administrador de Add-ons. Nuestro manifest.json promete que tendremos un ícono  en el directorio "icons/border-48.png".

+ +

Crea el directorio "icons" dentro de la carpeta "borderify". Almacena ahí el icono y nómbralo "border-48.png". Puedes utilizar el de nuestro ejemplo, el cual se obtuvo a partir del Google Material Design iconset, y es utilizado bajo los términos de la licencia Creative Commons Attribution-ShareAlike.

+ +

Si eliges emplear tu propio icono, este debe ser de 48x48 pixeles. También puedes aplicar un icono de 96x96 pixeles, para resoluciones mayores, y si haces esto, se especifica como la propiedad 96 en el objeto icons del manifest.json:

+ +
"icons": {
+  "48": "icons/border-48.png",
+  "96": "icons/border-96.png"
+}
+ +

Alternativamente, puedes aplicar un archivo SVG ahí, y este se escalará apropiadamente. (Aunque: si usas SVG y tu icono incluye texto, puedes usar la herramienta "convert to path" del editor SVG para aplanar el texto, de modo que se escalone con un tamaño/posición coherente).

+ + + +

borderify.js

+ +

Finalmente, crea un archivo de nombre "borderify.js" directamente en el directorio "borderify". Y déjale el siguiente contenido:

+ +
document.body.style.border = "5px solid red";
+ +

Este script se cargara en las páginas que coincidan con el patrón dado en el parámetro content_scripts del archivo manifest.json. El script tiene acceso directo al documento, de la misma manera que los scripts cargados por la propia página.

+ + + +

Probándolo

+ +

Primero, verifica que tienes todos los archivos en su lugar:

+ +
borderify/
+    icons/
+        border-48.png
+    borderify.js
+    manifest.json
+ +

Instalación

+ +

Abre "about:debugging" en Firefox, da click en "Cargar complemento temporal" y selecciona cualquier archivo en el directorio de la extensión:

+ +

{{EmbedYouTube("cer9EUKegG4")}}

+ +

La extensión se encontrará instalada, y lo estará hasta que reinicies Firefox.

+ +

Alternativamente, puede ejecuturar la extensión desde la línea de comandos utilizando la herramienta web-ext.

+ +

Probando

+ +

Ahora pruebe visitando una página bajo "mozilla.org", y usted verá el borde rojo alrededor de la página:

+ +

{{EmbedYouTube("rxBQl2Z9IBQ")}}

+ +
+

No lo intentes en addons.mozilla.org! Los scripts de contenido están actualmente bloqueados en ese dominio.

+
+ +

Experimenta un poco. Edita el contenido del script para cambiar el color del borde, o haz algo más en el contenido de la página. Si actualizas el script de contenido, recarga los archivos de la extensión haciendo clic en el botón "Recargar" en about:debugging. Podrás ver los cambios en el momento:

+ +

{{EmbedYouTube("NuajE60jfGY")}}

+ + + +

Empaquetar y publicar

+ +

Para que otras personas puedan utilizar tu extensión, necesitas empaquetarlo y enviarlo a Mozilla para que lo firmen. Para que aprendas más sobre eso, mira "Publicando tu extension".

+ +

¿Qué sigue?

+ +

Ahora que tienes una idea acerca del proceso de desarrollo de una WebExtension para Firefox, continúa con:

+ + diff --git a/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html b/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html new file mode 100644 index 0000000000..559320eca0 --- /dev/null +++ b/files/es/mozilla/add-ons/webextensions/your_second_webextension/index.html @@ -0,0 +1,459 @@ +--- +title: Tu segunda extensión +slug: Mozilla/Add-ons/WebExtensions/Tutorial +tags: + - WebExtensions +translation_of: Mozilla/Add-ons/WebExtensions/Your_second_WebExtension +--- +
{{AddonSidebar}}
+ +

Si ya ha visto el artículo tu primer extensión, ya posee una idea de como escribir una extensión. En este artículo se escribirá una extensión ligeramente más compleja para demostrar un par de cosas más de las APIs.

+ +

La extensión añade un nuevo botón a la barra de herramientas de Firefox. Cuando el usuario da clic sobre el botón, mostraremos una ventana emergente que permite escoger un animal. Una vez que un animal sea escogido, reemplazaremos todas las imágenes en la página actual con la imagen del animal seleccionado.

+ +

Para implementar esto, haremos lo siguiente:

+ + + +

Tu puedes notar que la estructura general de la extensión luce como esto:

+ +

+ +

Esta es una extensión simple, pero muestra muchos de los principales conceptos de la API WebExtensions:

+ + + +

Tu puedes encontrar el código fuente completo de la extensión en GitHub.

+ +

Para escribir una extensión, necesitará de Firefox 45 o más reciente.

+ +

Escribiendo la extensión

+ +

Crea una carpeta nueva y navega hacia ella:

+ +
mkdir beastify
+cd beastify
+ +

manifest.json

+ +

Ahora crea un archivo llamado "manifest.json", y agrega el siguiente contenido:

+ +
{
+
+  "manifest_version": 2,
+  "name": "Beastify",
+  "version": "1.0",
+
+  "description": "Agrega un icono de acción navegación a la barra de herramientas. Haga clic en el botón para elegir una bestia. El contenido del cuerpo de la pestaña activa se sustituye por una imagen de la bestia elegida. Consulte https://developer.mozilla.org/es/Add-ons/WebExtensions/Examples#beastify",
+  "homepage_url": "https://github.com/mdn/webextensions-examples/tree/master/beastify",
+  "icons": {
+    "48": "icons/beasts-48.png"
+  },
+
+  "permissions": [
+    "activeTab"
+  ],
+
+  "browser_action": {
+    "default_icon": "icons/beasts-32.png",
+    "default_title": "Bestificar",
+    "default_popup": "popup/choose_beast.html"
+  },
+
+  "web_accessible_resources": [
+    "beasts/frog.jpg",
+    "beasts/turtle.jpg",
+    "beasts/snake.jpg"
+  ]
+
+}
+
+ + + +

Nota que todas las rutas dadas son relativas a manifest.json.

+ +

El ícono

+ +

La extensión debería tener un íncono. Éste, será mostrado junto a la lista de complementos en el Administrador de Complementos (Pude abrirlo introduciendo en la URL "about:addons"). El manifest.json promete que se posee un ícono para la barra de herramientas en "icons/beasts-48.png".

+ +

Cree el directorio "icons" y guarde un ícono ahí y nómbrelo como "beasts-48.png".  Puede utilizar uno de nuestro ejemplo, el cual ha sido tomado del  conjuto de íconos Aha-Soft’s Free Retina, que es utilizado bajo el término de su propia licencia.

+ +

Si elige proporcionar su propio ícono, debería ser de 48x48 pixeles. También puede proporcionar un ícono de 96x96 pixeles, para pantallas de altas resoluciones y, si usted hace esto, deberá especificarlo como la propiedad 96 del objeto icons en el manifest.json:

+ +
"icons": {
+  "48": "icons/beasts-48.png",
+  "96": "icons/beasts-96.png"
+}
+ +

El botón de la barra de herramientas

+ +

El botón de la barra de herramientas necesita un ícono, y nuestro manifest.json promete eso y nos gustaría tener un ícono para la barra de herramientas en "icons/beasts-32.png".

+ +

Guarde un ícono llamado "beasts-32.png" en el directorio "icons". Tu podrías usar uno de nuestros ejemplos, los cuales son tomados desde el sitio IconBeast Lite icon set y empleados bajo sus términos de licencia.

+ +

Si tu no provees una ventana emergente, entonces el evento clic es disparado hacia tu extensión cuando el usuario de clic sobre el botón. Si provees una ventana emergente entonces el evento clic no se disparará, pero en cambio, se muestra la ventana emergente. Nosotros queremos una ventana emergente, así que vamos a crearla.

+ +

La ventana emergente

+ +

La función de la ventana emergente es habilitada si el usuario escoge una de los tres animales.

+ +

Crea una nueva carpeta llamada "popup" bajo la carpeta raíz de la extensión . Esta será donde pondremos el código para la ventana emergente. La carpeta "popup" contendrá estos tres archivos:

+ + + +

choose_beast.html

+ +

El archivo HTML luce así:

+ +
<!DOCTYPE html>
+
+<html>
+  <head>
+    <meta charset="utf-8">
+    <link rel="stylesheet" href="choose_beast.css"/>
+  </head>
+
+<body>
+  <div id="popup-content">
+    <div class="button beast">Frog</div>
+    <div class="button beast">Turtle</div>
+    <div class="button beast">Snake</div>
+    <div class="button reset">Reset</div>
+  </div>
+  <div id="error-content" class="hidden">
+    <p>Can't beastify this web page.</p><p>Try a different page.</p>
+  </div>
+  <script src="choose_beast.js"></script>
+</body>
+
+</html>
+ +

Tenemos un elemento <div> con un ID "popup-content" que contiene un elemento para cada elección de animal. Además, tenemos otro <div> con un ID "error-content" y una clase "hidden", que usaremos en el case de que surja algún problema al inicializar la ventana emergente.

+ +

Note que referenciamos los archivos CSS y JS en el HTML como lo haríamos si se tratase de una página web.

+ +

choose_beast.css

+ +

El CSS ajusta el tamaño de la ventana emergente, se asegura que las tres posibles opciones llenen el espacio y les da un poco de estilo básico. Además oculta los elementos con class="hidden": esto significa que nuestro "error-content" <div> estará oculto por defecto.

+ +
html, body {
+  width: 100px;
+}
+
+.hidden {
+  display: none;
+}
+
+.button {
+  margin: 3% auto;
+  padding: 4px;
+  text-align: center;
+  font-size: 1.5em;
+  cursor: pointer;
+}
+
+.beast:hover {
+  background-color: #CFF2F2;
+}
+
+.beast {
+  background-color: #E5F2F2;
+}
+
+.reset {
+  background-color: #FBFBC9;
+}
+
+.reset:hover {
+  background-color: #EAEA9D;
+}
+ +

choose_beast.js

+ +

Aquí está el JavaScript para la ventana emergente:

+ +
/**
+ * CSS para ocultar toda la página
+ * Excepto los elementos que pertenecen a la clase "beastify-image".
+ */
+const hidePage = `body > :not(.beastify-image) {
+                    display: none;
+                  }`;
+
+/**
+ * Esucha los clicks en los botones y envía el mensaje apropiado
+ * al script de contenido de la página.
+ */
+function listenForClicks() {
+  document.addEventListener("click", (e) => {
+
+    /**
+     * Recibe el nombre de una bestia y obtiene la URL de la imagen correspondiente.
+     */
+    function beastNameToURL(beastName) {
+      switch (beastName) {
+        case "Frog":
+          return browser.extension.getURL("beasts/frog.jpg");
+        case "Snake":
+          return browser.extension.getURL("beasts/snake.jpg");
+        case "Turtle":
+          return browser.extension.getURL("beasts/turtle.jpg");
+      }
+    }
+
+    /**
+     * Inserta dentro de la pestaña activa el CSS que oculta la página
+     * luego toma la URL de la imagen y
+     * envía un mensaje "beastify" al script de contenido de la pestaña activa.
+     */
+    function beastify(tabs) {
+      browser.tabs.insertCSS({code: hidePage}).then(() => {
+        let url = beastNameToURL(e.target.textContent);
+        browser.tabs.sendMessage(tabs[0].id, {
+          command: "beastify",
+          beastURL: url
+        });
+      });
+    }
+
+    /**
+     * Remueve el CSS que oculta la página y
+     * envía un mensaje de "reset" al script de contenido de la pestaña activa.
+     */
+    function reset(tabs) {
+      browser.tabs.removeCSS({code: hidePage}).then(() => {
+        browser.tabs.sendMessage(tabs[0].id, {
+          command: "reset",
+        });
+      });
+    }
+
+    /**
+     * Imprime el error en consola.
+     */
+    function reportError(error) {
+      console.error(`Could not beastify: ${error}`);
+    }
+
+    /**
+     * Toma la pestaña activa y
+     * llama a "beastify()" o "reset()" según corresponda.
+     */
+    if (e.target.classList.contains("beast")) {
+      browser.tabs.query({active: true, currentWindow: true})
+        .then(beastify)
+        .catch(reportError);
+    }
+    else if (e.target.classList.contains("reset")) {
+      browser.tabs.query({active: true, currentWindow: true})
+        .then(reset)
+        .catch(reportError);
+    }
+  });
+}
+
+/**
+ * Si hubo algún error al ejecutar el script,
+ * Despliega un popup con el mensaje de error y oculta la UI normal.
+ */
+function reportExecuteScriptError(error) {
+  document.querySelector("#popup-content").classList.add("hidden");
+  document.querySelector("#error-content").classList.remove("hidden");
+  console.error(`Failed to execute beastify content script: ${error.message}`);
+}
+
+/**
+ * Cuando se carga la ventana emergente, inyecta el script de contenido en la pestaña activa,
+ * y agrega un manejador de eventos.
+ * Si no es posible inyectar el script, se ocupa de manejar el error.
+ */
+browser.tabs.executeScript({file: "/content_scripts/beastify.js"})
+.then(listenForClicks)
+.catch(reportExecuteScriptError);
+ +

Empecemos por la linea 96. La ventana emergente ejecuta un script de contenido en la pestaña activa tan pronto como se termina de cargar, usando la API browser.tabs.executeScript(). Si la ejecución del script de contenido es exitosa, este quedará cargado en la página hasta que sea cerrada la pestaña o hasta que el usuario navegue hacia una página distinta.

+ +
+

Un motivo común por el cual el llamado a browser.tabs.executeScript() puede fallar, es porque no es posible ejecutar scripts de contenido en todas las páginas, por ejemplo, en páginas de navegador privilegiadas como about:debugging, o páginas del dominio addons.mozilla.org, no es posible hacerlo.

+
+ +

Si la ejecución falla, reportExecuteScriptError() ocultará el <div> "popup-content", mostrará el <div> "error-content", y reportará el error en la consola.

+ +

Si la ejecución del script de contenido es exitosa, se llamará a listenForClicks(), que atiende los eventos que se generan al cliquear en la ventana emergente.

+ + + +

La función beastify() hace tres cosas:

+ + + +

La función reset() deshace lo hecho por beastify():

+ + + +

El script de contenido

+ +

Crea una carpeta nueva bajo la raíz del complemento llamada "content_scripts" y crea un nuevo archivo en ella llamado "beastify.js", con el contenido siguiente:

+ +
(function() {
+  /**
+   * Revisa e inicializa una variable de guardia.
+   * Si este script de contenido es insertado más de una vez
+   * en la misma página, dejará de ejecutarse.
+   */
+  if (window.hasRun) {
+    return;
+  }
+  window.hasRun = true;
+
+/**
+* Recibe la URL de la imagen, remueve las que se hayan agregado antes,
+* crea un nodo IMG que apunt hacia la imagen
+* e inserta ese nodo en el documento.
+*/
+  function insertBeast(beastURL) {
+    removeExistingBeasts();
+    let beastImage = document.createElement("img");
+    beastImage.setAttribute("src", beastURL);
+    beastImage.style.height = "100vh";
+    beastImage.className = "beastify-image";
+    document.body.appendChild(beastImage);
+  }
+
+  /**
+   * Remueve todas las bestias de la página.
+   */
+  function removeExistingBeasts() {
+    let existingBeasts = document.querySelectorAll(".beastify-image");
+    for (let beast of existingBeasts) {
+      beast.remove();
+    }
+  }
+
+  /**
+   * Atiende mensajes del script de segundo plano.
+   * Llama a "beastify()" o "reset()".
+  */
+  browser.runtime.onMessage.addListener((message) => {
+    if (message.command === "beastify") {
+      insertBeast(message.beastURL);
+    } else if (message.command === "reset") {
+      removeExistingBeasts();
+    }
+  });
+
+})();
+ +

Lo primero que hace el script de contenido es revisar la variable global window.hasRun: si está inicializada termina su ejecución, sino, la inicializa y continúa. La razón por la que hacemos esto es porque cada vez que el usuario abre la ventana emergente, se vuelve a ejecutar el script de contenido en la pestaña activa, por lo que podríamos tener múltiples instancias del script ejecutandose en una sola pestaña. Si esto sucede, necesitamos asegurarnos de que sea sólo la primera instancia la que vaya a realizar cambios.

+ +

Luego, en la linea 40, donde el script de contenido atiende mensajes provenientes de la ventana emergente (usando la API browser.runtime.onMessage), vemos que ésta puede enviar dos mensajes diferentes: "beastify" y "reset".

+ + + +

Las bestias

+ +

Finalmente, necesitamos incluir las imágenes de los animales.

+ +

Crea una carpeta nueva llamada "beasts", y adiciona tres imágenes en ella, con su nombre apropiado. Tu puedes obtener estas imágenes desde el repositorio en GitHub, o desde aquí:

+ +

+ +

Probándolo

+ +

Primero, comprueba nuevamente que tienes todos los archivos necesarios en el lugar adecuado:

+ +
beastify/
+
+    beasts/
+        frog.jpg
+        snake.jpg
+        turtle.jpg
+
+    content_scripts/
+        beastify.js
+
+    icons/
+        beasts-32.png
+        beasts-48.png
+
+    popup/
+        choose_beast.css
+        choose_beast.html
+        choose_beast.js
+
+    manifest.json
+ +

Comenzando con Firefox 45, pueden instalar temporalmente una extensión desde el disco.

+ +

Abre "about:debugging" en Firefox, de clic en "Cargar complemento temporalmente", y seleccione el archivo manifest.json. Entonces, debería de ver el ícono de la extensión aparecer en la barra de herramientas de Firefox:

+ +

{{EmbedYouTube("sAM78GU4P34")}}

+ +

Abra una página web, luego haga clic sobre el ícono, seleccione una bestia, y vea cómo cambia la página web:

+ +

{{EmbedYouTube("YMQXyAQSiE8")}}

+ +

Desarrollo desde la línea de comandos

+ +
+
+
 
+ +

Puede automatizar el paso de instalación temporal mediante la herramienta web-ext. Pruebe esto:

+
+
+ +
cd beastify
+web-ext run
+ +

 

diff --git a/files/es/mozilla/developer_guide/build_instructions/index.html b/files/es/mozilla/developer_guide/build_instructions/index.html new file mode 100644 index 0000000000..8322104d8e --- /dev/null +++ b/files/es/mozilla/developer_guide/build_instructions/index.html @@ -0,0 +1,73 @@ +--- +title: Compilar e instalar +slug: Compilar_e_instalar +tags: + - Documentación_de_compilado +translation_of: Mozilla/Developer_guide/Build_Instructions +translation_of_original: Build_and_Install +--- +

NOTE: Do not make substantive changes to this document without consulting Benjamin Smedberg <benjamin@smedbergs.us> or one of the build-config peers.

+
+ NOTA: No comience a compilar sin antes configurar las opciones de compilación!
+

Compilando

+

Debes usar GNU make para verificar y compilar Mozilla, no se acepta otro programa "make". En Windows, Mac OS X, y GNU/Linux usa "make" para ejecutar GNU make; en la mayoría de los unix-no GNU debes usar "gmake".

+

Una vez que verificaste el código, asegúrate de configurar la aplicación como se describe en las opciones de configuración.

+

Para Windows, Mac OS X, y GNU/Linux, asegúrate de estar en el nivel superior del directorio fuente ("mozilla") cuando llames el comando make:

+
$ make -f client.mk build
+
+

Para la mayoría de los unix no-GNU:

+
$ gmake -f client.mk build
+
+

Si quieres configurar y compilar de forma manual, cd a tu objdir, ejecuta el programa de configuración, y luego ejecuta make/gmake. El programa de configuración tomará las opciones de tu archivo .mozconfig.

+

Ejecutando tu compilación nueva

+

Es posible ejecutar la compilación nueva directamente desde el directorio en donde fue creada. De todas formas, el directorio de compilación tal vez contenga symlinks dentro del árbol; debes ejecutar la instalación/packaging para generar una compilación que puede ser movida o compartida.

+

Windows y Linux

+

En sistemas no-macintosh, el producto final se puede hallar en objdir/dist/bin. En plataformas POSIX (BDS, GNU/LINUX, Solaris), debes ejecutar el archivo "mozilla" o "firefox", no el binario "mozilla-bin" o "firefox-bin".

+

Mac OS X

+

En Macintosh, el sistema de compilado genera una aplicación en objdir/dist/AppName.app por ejemplo, objdir/dist/Minefield.app.

+

Fijate que cuando compilas con --enable-debug, la aplicación se ubica en objdir/dist/AppNameDebug.app, por ejemplo objdir/dist/MinefieldDebug.app.

+

Puedes ejecutar la aplicación, ya sea abriendo la aplicación via Finder o con la línea de comando:

+
$ objdir/dist/AppName[Debug].app/Contents/MacOS/appname
+
+

Para el ejemplo:

+
$ objdir/dist/MinefieldDebug.app/Contents/MacOS/firefox
+
+

Instalando tu compilación

+

En plataformas POSIX, puedes instalar ejecutando gmake install. Pero es mejor que sigas los pasos siguientes para crear un tar, luego descomprime el tar.

+

Para la mayoria de las aplicaciones, crea el tar dentro del directorio específico de la aplicación:

+ +

Ejemplo real: Si usas un .mozconfig Firefox estático optimizado

+ +

Esto generará un archivo firefox-2.0.0.3.en-US.linux-i686.tar.gz dentro del directorio ff-opt-static/dist, el cual puedes descomprimir donde desees.

+

Para hacer un instalador para Windows, crea el destino del instalador en el directorio superior

+ +

NOTA: Para crear el instalador lo más comprimido posible, para Firefox y Thunderbird con el sistema basado en Cygwin, debes instalar algunos programas adicionales.

+ +

Ambos programas se deben encontrar en el PATH. También MOZ_INSTALLER_USE_7ZIP debe ser exportado a tu entorno. Si usas el sistema MozillaBuild, ambos se instalarán automaticamente.

+

 

+
+

Información del documento

+ +

Información sobre el documento original

+ +
+

{{ languages( { "en": "en/Build_and_Install", "fr": "fr/Compilation_et_installation", "ja": "ja/Build_and_Install", "zh-cn": "cn/\u7f16\u8bd1\u4e0e\u5b89\u88c5" } ) }}

diff --git a/files/es/mozilla/developer_guide/mozilla_build_faq/index.html b/files/es/mozilla/developer_guide/mozilla_build_faq/index.html new file mode 100644 index 0000000000..6e0c380577 --- /dev/null +++ b/files/es/mozilla/developer_guide/mozilla_build_faq/index.html @@ -0,0 +1,343 @@ +--- +title: Preguntas frecuentes sobre la compilación de Mozilla +slug: Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla +tags: + - Documentación_de_compilado + - NecesitaRevisiónGramatical +translation_of: Mozilla/Developer_guide/Mozilla_build_FAQ +--- +

Mira también:

+ + + +

Preguntas Generales

+ +
+
Que plataformas soportan Mozilla?
+
Hay varios niveles o grados de "soporte" para Mozilla: +

Grado-1 son las plataformas en las cuales se centra el desarrollo. Los problemas en estas plataformas son considerados primordiales. También son las plataformas que se muestran en SeaMonkey tinderbox page.

+ +

Las Grado-1 son:

+ +
    +
  • linux/x86 (gcc)
  • +
  • win32/x86 (msvc)
  • +
  • OS X (gcc)
  • +
+ +

Grado-2 son las plataformas en las que hay algunos desarrolladores y contribuyentes activos, pero que la mayor parte del desarrollo no se centra en los problemas. Nos referimos a estas plataformas como los Puertos y la mayoría se encuentran en SeaMonkey-Ports tinderbox page.

+ +

Estas son:

+ +
    +
  • aix 4.3 (aCC)
  • +
  • beos 5.0.3 (gcc)
  • +
  • bsdi 4.x (gcc)
  • +
  • hpux 10.x,11.x (HP cc)
  • +
  • irix 6.x/gcc (gcc/MIPSpro)
  • +
  • linux/ppc (gcc)
  • +
  • os/2 (gcc)
  • +
  • osf1 5.x (Compaq cc)
  • +
  • solaris (sparc & x86) 2.6+ (gcc/Forte)
  • +
+ +

Grado-3 son aquellas en las que casi no hay desarrollo activo por la mayor parte de los desarrolladores pero que hay algunas soluciones contribuidas por terceros.

+ +

Las Grado-3 son:

+ +
    +
  • freebsd (gcc)
  • +
  • linux/alpha (gcc)
  • +
  • netbsd (gcc)
  • +
  • openvms (?)
  • +
  • ps2linux (gcc)
  • +
  • qnx 6 (gcc)
  • +
  • win32/x86 (gcc)
  • +
+ +

Las demás plataformas "no son soportadas" por Mozilla. En realidad "no soportada" quiere decir que no hay gente trabajando activamente en eso y que no son una prioridad.

+ +

La mayoría de los desarrolladores no tienen acceso a las plataformas que no sean Grado-1; así que cualquier bug reportado en una plataforma que no sea Grado-1,debería poseer bastante información para ayudar al responsable del bug a determinar la causa y brindar una solución apropiada. Si puedes proporcionar un parche y/o verificar que el parche del desarrollador funciona en tu plataforma, puedes ayudar a muchos a verificar y arreglar sus bugs.

+ +

 

+
+
Qué tipo de sistema de compilación usa Mozilla?
+
Mozilla usa para todas las plataformas una delgada capa de configuración GNU sobre el legado de sistema de makefile recursivo de Netscape. Como la mayoría de los proyectos configure-based, utiliza GNU autoconf para generar el script de configuración. GNU make se utiliza para manejar el proceso de compilado. +

 

+
+
Por qué usa GNU?
+
GNU make ha sido exportado a muchos sistemas. Esto hace que exportar Mozilla a esos sistemas sea un poco más fácil. Utilizando las características de make, que son soportadas por el programa nativo make en 10 plataformas diferentes, se logra que el sistema de compilado no sea innecesariamente complicado. +

 

+
+
Funciona otra versión de make?
+
No. El makefiles Mozilla utilza características propias de GNU make que, obviamente, sólo funcionan con GNU make. +

 

+
+
Por qué no usa automake?
+
Parte del legado de Netscape involucra utilizar el make de GNU. Tiene características para incluir un conjunto de reglas comunes desde un puñado de archivos en cada Makefile que necesite usarlas. También, hoy en día el método de generación de librerías de Mozilla no funciona bien con libtool. +

 

+
+
Qué les sucedió a nmake y al sistema de compilado CodeWarrior?
+
Ya no existen. El soporte para nmake se dejó durante la distribución de Mozilla 1.2a. El sistema mac cfm se abandonó con el soporte para OS9 poco después de la liberación de Mozilla 1.3 +

 

+
+
Por qué no ant, tmake, scons o inserte su sistema favorito aquí?
+
Principalmente porque nadie los utiliza en Mozilla. Cuando Mozilla empezó a ser de código abierto, sólo contenia el legado de Netscape. Autoconf se integró en una rama y se mantuvo en paralelo durante 6 meses antes de convertirse en el sistema standard para unix. +

 

+
+
Si deseo utilizar mi sistema favorito,¿ lo empezarìan a usar en Mozilla?. No quiero perder mi tiempo si no lo van a usar.
+
No hay garantías de que cualquier código escrito para Mozilla sea aceptado en árbol por defecto. Todo sistema que se desee utilizar debe demostrar ser mejor que el sistema actual. Velocidad, flexibilidad, portabilidad y la capacidad de que un gran grupo de desarrolladores- que tiene 3 años o más de experiencia- pueda cambiarlo facilmente, son los principales factores que deciden el cambio. Si hablas en serio y vas a realizar mucho trabajo, contacta a User:Benjamin Smedberg para discutir los detalles. +

 

+
+
Por qué Mozilla no soporta autoconf 2.5x?
+
Simplemente porque autoconf 2.5x no ofrece nada para que los esfuerzos por actualizar valgan la pena. Autoconf 2.5x no es compatible con 2.13 y las restricciones adicionales hechas en las nuevas versiones de autoconf requirirían reescribir gran parte del código- sistema de compilado de Mozilla. +

Algunas características de 2.13, como la posibilidad de pasar argumentos adicionales para sub-configuración, no están disponibles en 2.5x. Varios han preguntado por estas características en las listas de correos de autoconf y no han obtenido respuestas favorables. No es conveniente reescribir las configuraciones para subprojectos de Mozilla (NSPR & LDPA).

+ +

 

+
+
Por qué NSS no usa aurtoconf?
+
El projecto NSS también es utilizado fuera de Mozilla, y los miembros del mismo creen que cambiar a autoconf no vale la pena. Mira {{ Bug(52990) }} para más detalles. +

 

+
+
Puedo compilar múltiples proyectos basados en Mozilla desde un único árbol-fuente?
+
Sí!, cada projecto debe ser compilado en su propio objdir. +

 

+
+
Qué es un objdir?
+
Un objdir se refiere a crear los archivos de salida en un directorio distinto al que se encuentran las fuentes. Es un estándar en la mayoría de los proyectos basados en configuración. Te permite, desde un único árbol-fuente, compilar para múltiples configuraciones, incluyendo varias plataformas si trabajas en un sistema de archivos de red. También elimina la corrupción de tu árbol-fuente, de esta manera sabes que los archivos en el árbol no han sido modificados en el proceso de compilado. +

Si ejecutas configure manualmente, puedes usar el método estàndar de crear un directorio vacío en cualquier parte de la unidad, y luego entrar a ese directorio y ejecutar path/to/mozilla/configure.

+ +
mkdir obj-debug
+cd obj-debug
+../mozilla/configure
+
+ +

Si usas client.mk, puedes agregar lo siguiente al .mozconfig:

+ +
mk_add_options MOZ_OBJDIR=/path/to/objdir
+
+ +

 

+
+
Puedo multi-compilar Mozilla?
+
Sí, mira el documento Cross-Compiling Mozilla. No soporta Canadian Cross-Compiling. +

 

+
+
Cómo puedo compilar sólo ciertos archivos para pruebas, en lugar de compilar todo el árbol, mientras modifico el código?
+
Entra en el directorio objdir, luego vè al directorio especifico que deseas compilar (la estructura del objdir coincide con la estructura de los directorios de las fuentes), y tipea "make". Sólo funciona si encuentras un directorio que tenga un Makefile (el equivalente en el árbol fuente tandrá "Makefile.in". Si quieres algo más especifico que eso puedes probar con "make <nombrearchivo>.obj". Mira Incremental Build. +

 

+
+
Funcionan las compilaciones paralelas (make -j) en Mozilla?
+
Sí, mira GNU Make Parallel Execution para su uso óptimo. +

Si obtienes errores de compilación al utilizar aquello (sobre todo cuando usas -j en lugar de -jN), prueba reduciendo el número de paralelismo disminuyendo el valor de N (o, si usaste paralelismo ilimitado, agrega un número pequeño N a -j)

+ +

La compilación en paralelo con -j4 y -j8 parece funcionar.

+ +

 

+
+
Cómo fuerzo al sistema de compilación para aceptar cualquier cambio hecho a mi archivo .mozconfig?
+
Toca cualquiera de los scripts de configuración en el árbol. No hay dependencia sobre el archivo mozconfig; el archivo puede encontrarse donde sea a tráves de la variable de entorno MOZCONFIG. +

 

+
+
error: file '../../toolkit/locales/en-US/chrome/necko/contents.rdf' doesn't exist at ../../config/make-jars.pl line 418, <STDIN> line 9.
+
Estás tratando de compilar Firefox sin seguir las intrucciones sobre cómo Configurar las opciones de compilación. En particular, tu mozconfig debe contener el mozconfig por defecto de Firefox: +
. $topsrcdir/browser/config/mozconfig
+# add your custom additional options here
+
+ +

 

+
+
Initial cvs checkout fails with the message: cvs {{ mediawiki.external('checkout aborted') }}: *PANIC* administration files missing
+
No puedes crear un árbol CVS debajo de un directorio llamado "CVS". Es una característica/bug de CVS. CVS espera encontrar cierta administración de archivos debajo del directorio CVS y no funciona si no la encuentra. +

 

+
+
Error: ../coreconf/rules.mk:406: target `c' doesn't match the target pattern
+
Necesitas make 3.80 y no otras versiones como 3.81 +
    +
  • make 3.80 ya no está disponible en el instlador de Cygwin, así que lo deberás encontrar por ti mismo. Puedes buscarlo en google como make-3.80-1.tar.bz2, también está disponbleaquí.
  • +
+ +

 

+
+
+ +

Preguntas específicas sobre Mac

+ +

 

+ +
+
Puede compilar una aplicación Mozilla como un binario universal?
+
Sí, mira Mac OS X Universal Binaries. +

 

+
+
Cómo puedo usar distcc para ayudar a compilar?
+
TBA. +

 

+
+
Mozilla compila UFS?
+
Sí, ha sido arreglado desde {{ Bug(157036) }}. +

 

+
+
Mozilla corre sobre UFS?
+
Sí. +

 

+
+
Puedo usar CodeWarrior para compilar Mach-O?
+
No, CodeWarrior murió. Mira {{ Bug(119589) }}. +

 

+
+
Luego de re-compilar, ej. layout. Cómo hago que mi FirefoxDebug.app refleje el cambio?
+
make -C browser/app.
+
+ +

Para errores comunes en Mac y consejos adicionales sobre solución de problemas. Mira solución de problemas en Requerimientos para la compilación en Mac OS X.

+ +

Preguntas sobre Win32

+ +

 

+ +
+
Existe un archivo de proyecto Microsoft Visual Studio para compilar Mozilla?
+
No. Debes usar cygwin y GNU make. +

 

+
+
Puedo correr los comandos para compilar desde cmd.exe?
+
Sí. Make llama la subshell cygwin /bin/sh para ejecutar el comando, así que no hay problema sobre cual shell uses para llamar a make. +

 

+
+
Qué versión del paquete de autoconf de cygwin debo usar?
+
Debido a las incompatibilidades entre autonconf 2.1x y 2.5x, la gente de cygwin escribió un script (wrapper) que determinará qué versión necesitará tu script de configuración y llamará a esa versión. Necesitarás los paquetes autoconf(-wrapper) y autoconf estable. Mira http://cygwin.com/ml/cygwin-announce.../msg00177.html para más detalles +

 

+
+
Las herramientas de Microsoft (CL, LINK, RC) tiran error File not found
+
Las variables de entorno INCLUDE y LIB son usadas por las herramientas de Microsoft Visual C++. Comúnmente están configuradas en vcvars32.bat. Tal vez necesites o no MFC y ATL, dependiendo de qué modulos estés compilando. Debajo hay paths que funcionan si Visual C++ está instalado en "C:\msvs" +
set INCLUDE=C:\msvs\VC\Include;C:\msvs\VC\ATLMFC\Include
+set LIB=C:\msvs\VC\Lib;C:\msvs\VC98\ATLMFC\Lib
+
+ +

 

+
+
cvs update: authorization failed: server XXXX rejected access -- used empty password; try "cvs login" with a real password
+
Estás mezclando wincvs y cygwin cvs. Usa uno o el otro. +

 

+
+
cvs {{ mediawiki.external('checkout aborted') }}: cannot rename file CVS/Entries.Backup to CVS/Entries: Permission denied
+
En cygwin 1.3.13, ntsec está activada. ntsec es un intento de cygwin por obtener una estructura de permiso mas similar a UNIX sobre características de seguridad que Windows NT. El mensaje de error indica que hay una discrepancia de mapeo entre los permisos de unix listados en el archivo de cygwin /etc/password y los usados por Windows NT. Puedes agregar "nontsec" a tu variable de entorno CYGWIN. Para arreglarlo de forma adecuada deberías solucionar el problema de mapeo. +

 

+
+
Al descomprimir, no se encuentra un archivo .dtd
+
Probablemente usaste Winzip para descomprimir los archivos. No hagas eso. Por defecto, Winzip no extrae los archivos sin longitud (0 bytes). Usa otro utilitario. +

 

+
+
nsinstall u otro programa nativo win32 no encuentra un archivo
+
Revisa tu tabla de subida. Ejecuta el comando de montura, deberia devovler algo como esto: +
c: on /cygdrive/c type user (binmode,noumount)
+e: on /cygdrive/e type user (binmode,noumount)
+c:\cygwin on / type system (binmode)
+c:\cygwin\bin on /usr/bin type system (binmode)
+c:\cygwin\lib on /usr/lib type system (binmode)
+
+ +

El sistema de compilado espera que las particiones del disco hayan sido montadas usando /cygdrive como prefijo de la unidad. Si C: o E: no usan /cygwin como prefijo de unidad no podrás compilar Mozilla en esas unidades. Debes montar la unidad manualmente usando:

+ +
mount -s "e:\" /cygdrive/e
+
+ +

Si tu árbol fuente está debajo de tu $HOME, el modo de montura debería ser binmode (finales de líneas estilo Unix), de otro modo fallará al compilar. Si el árbol está fuera de tu $HOME, no importa el modo de montura siempre y cuando tu editor reconozca finales de linea estilo Unix.

+
+
No such file or directory errors from lines in your mozconfig
+
This can be caused by your mozconfig file having Windows-style line endings. Convert them to UNIX-style and the error should go away.
+
xpidl.exe cae con una violación de acceso
+
Usualmente ocurre por una discordancia entre tu compilador y tus librerías glib y/o libIDL. +

Si compilas con Visual Studio .NET, debes enlazar con las version de VC7 de las DLL glib y libIDL. Para Visual Studio .NET 2003, usa las versiones VC7.1. Para Visual Studio 2005, usa VC8.

+ +

El directorio que contenga esas versiones de librerías para tu compilador debe estar en tu PATH antes que cualquier otra versión de las mismas librerías. Los archivos .dll y lib deben ser ejecutable o cygwin no los cargará.

+ +

Mira los Requerimientos para la compilación en Windows sobre más consejos para compilar con VC7 o superior.

+ +

También en {{ Bug(242870) }} se encuentran disponibles algunas librerías estáticas que pueden ser usadas en lugar de las librerías específicas del compilador.

+ +

Si compilas con VC6, debes asegurarte que no estás usando las librerías de VC7 a la hora de compilar o ejecutar.

+
+
configure: error: the midl major version, , does not match the compiler suite version, <Visual C++ nro de versión> -- lo mismo para el linker
+
TLa herramienta cygwin "link.exe" para enlazar no reconoce el objeto enlazador de la suite del compilador Microsoft, o no se encuentra midl. Asegúrate que las herramientas de Microsoft se encuentran antes que cygwin en el PATH (Mira las intrucciones), o renombra o quita el archivo /bin/link.exe. Nota que cygwin tal vez modifique el path cuando arranque su shell, asi que también mira export.
+
configure: error: installation or configuration problem: C compiler cannot create executables.
+
Prueba asegurándote que la variable PATH incluya todos los directorios necesarios. Si usas MS Visual Studio, ejecuta vcvars32.bat (que configura las variables PATH, LIB, y INCLUDE). Si tu entorno ha cambiado, tal vez debas eliminar el archivo config.cache (en el directorio mozilla o directorio objeto) y luego volver a compilar.
+
build error: ../coreconf/rules.mk:365: target `c' doesn't match the target pattern
+
Has usado make 3.81 del instalador cygwin. Debes usar make 3.80. Por favor lee las instrucciones.
+
fatal error LNK1112: module machine type 'IA64' conflicts with target machine type 'X86'
+
Prueba cambiando el orden de los directorios en las variables PATH, LIB e INCLUDE. Cambia cualquier directorio que incluya cerca del final: "win64" o "IA64" (o "AMD64").
+
LINK : fatal error LNK1104: cannot open file 'atlthunk.lib'
+
De acuerdo con this Microsoft forum thread, hay una versión diferente de Active Template Library (ATL) para  Platform Software Development Kit -libre- (PSDK),  que para Visual Studio. La ATL en el PSDK no soporta código 32-bits, sólo 64-bits; mientras que Visual Studio soporta ambas y no requiere atlthunk.lib. Aparentemente el archivo atlthunk.lib no está disponible y no se pudo compilar desde freely available tools, incluyendo las herramientas Visual C++ y Visual Studio Express. De todos modos puedes actualizar a la versión full de Visual Studio y utilizar la versión de ATL del mismo, o puedes trabajar en el problema cambiando algunos códigos en atlbase.h (en \include\atl debajo del directorio PSDK). Ejemplo: +
--- atlbase.h.old       2006-06-08 08:20:26.671875000 -0400
++++ atlbase.h   2006-06-08 08:13:26.578125000 -0400
+@@ -283,7 +283,7 @@
+         }
+ };
+ #pragma pack(pop)
+-
++/*
+ PVOID __stdcall __AllocStdCallThunk(VOID);
+ VOID  __stdcall __FreeStdCallThunk(PVOID);
+
+@@ -291,6 +291,11 @@
+ #define FreeStdCallThunk(p) __FreeStdCallThunk(p)
+
+ #pragma comment(lib, "atlthunk.lib")
++*/
++
++// workaround for not having atlthunk.lib in PSDK or VC++ 2005 Express Edition
++#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
++#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)
+
+ #elif defined (_M_AMD64)
+ #pragma pack(push,2)
+
+ +

También hubo que borrar el directorio objeto y volver a compilar desde el principio, de modo que el compilador tome el cambio.

+
+
Compilar o generar un ejecutable con cygwin y VS6.0 termina en FIND: Parameter format not correct
+
Hay una confusión entre System32 "find" y /usr/bin/find de cygwin. Lo que queremos es el find de cygwin. Es causado por el orden del path. Algunas posibles soluciones serían: +
    +
  • Renombrar temporalmente system32/find.exe
  • +
  • Asegurarse que en la entrada del path esté primero cygwin que system32
  • +
+
+
Empaqueté Firefox a través del instalador: make -C ${OBJ_DIR}/browser/installer installer sin problemas. Al ejecutar pide el archivo perdido mozz.dll; la instalación falla.
+
Tanto Firefox como Thunderbird,deberían compilarse con las etiquetas --enable-static --disable-shared
+
shlibsign.exe - Entry Point Not Found; El procedimiento CERT_GetFirstEmailAddress no ha sido localizado en la librería nss3.dll.
+
Tal vez tengas muchos nss3.dll en tu máquina y en tu path. Haz una búsqueda para todas las copias de este archivo. Mueve todas las copias que se encuentren dentro del árbol de Firefox durante la compilación y vuelve a colocarlos cuando se termine la compilación.
+
+ +

Preguntas sobre Mingw32

+ + + +

Preguntas sobre Unix

+ +
+
Galeon necesita libgtksuperwin.so pero no tengo ese archivo en mi Mozilla gtk2, dónde está?
+
Sólo Mozilla gtk1 compila libgtksuperwin.so. Si deseas usar galeon con compilación gtk2, debes usar galeon2. +

 

+
+
Por qué la configuración dice que necesito libIDL >= 0.6.3 cuando tengo instalado libIDL 0.8.x?
+
libIdl 0.8.x sólo puede ser usado compilando con gtk2. Por defecto, Mozilla compila con gtk1. Para usar libIDl 0.8.x y gtk2 debes especificar --enable-default-toolkit=gtk2 en la línea de comando de laconfiguración o  .mozconfig. NOTA: Esto es viejo y ha sido arreglado en Mozilla 1.8
+
Cómo compilo en Solaris 10 x86 (SeaMonkey)?
+
Tuve que hacer lo siguiente para conseguir un entorno que funcione:
+
1. instalar forte (Gratis desde Sun)
+
2. Instalar gmake (desde blastwave)
+
3. mv /usr/ucb/cc /usr/ucb/cc.hold
+
4. CFLAGS="-xlibmil"; exporta CFLAGS
+
5. CXXFLAGS="-xlibmil -xlibmopt -features=tmplife -norunpath"; exporta CXXFLAGS
+
6. LDFLAGS='-R$ORIGIN -R/usr/sfw/lib -R/opt/sfw/lib -R/usr/local/lib -R/opt/csw/lib'; exporta LDFLAGS
+
7. PATH=$PATH:/opt/SUNWspro/bin:/opt/csw/bin:/opt/csw/sbin:/usr/ucb/bin:/usr/ccs/bin; exporta PATH
+
8. LD_LIBRARY_PATH=/opt/SUNWspro/lib:$LD_LIBRARY_PATH; exporta LD_LIBRARY_PATH
+
9. Crear un archivo mozconfig y compilar normalmente.
+
10. La generación del paquete (tar y gzip) falló, así que simplemente lo cree manualmente con los archivos resultantes en el directorio dist.
+
libxpcom_core.so: cannot restore segment prot after reloc: Permission denied</dt>
+
Probablemente estés usando Fedora Core 5, o alguna otra distribución de Linux que tiene activado SELinux. Para arreglarlo, utiliza el comando 'chcon -t chcon -t texrel_shlib_t lib*' en el directorio dist/bin.</dd>
+
diff --git "a/files/es/mozilla/developer_guide/preguntas_frecuentes_sobre_la_compilaci\303\263n_de_mozilla/index.html" "b/files/es/mozilla/developer_guide/preguntas_frecuentes_sobre_la_compilaci\303\263n_de_mozilla/index.html" deleted file mode 100644 index 6e0c380577..0000000000 --- "a/files/es/mozilla/developer_guide/preguntas_frecuentes_sobre_la_compilaci\303\263n_de_mozilla/index.html" +++ /dev/null @@ -1,343 +0,0 @@ ---- -title: Preguntas frecuentes sobre la compilación de Mozilla -slug: Mozilla/Developer_guide/Preguntas_frecuentes_sobre_la_compilación_de_Mozilla -tags: - - Documentación_de_compilado - - NecesitaRevisiónGramatical -translation_of: Mozilla/Developer_guide/Mozilla_build_FAQ ---- -

Mira también:

- - - -

Preguntas Generales

- -
-
Que plataformas soportan Mozilla?
-
Hay varios niveles o grados de "soporte" para Mozilla: -

Grado-1 son las plataformas en las cuales se centra el desarrollo. Los problemas en estas plataformas son considerados primordiales. También son las plataformas que se muestran en SeaMonkey tinderbox page.

- -

Las Grado-1 son:

- -
    -
  • linux/x86 (gcc)
  • -
  • win32/x86 (msvc)
  • -
  • OS X (gcc)
  • -
- -

Grado-2 son las plataformas en las que hay algunos desarrolladores y contribuyentes activos, pero que la mayor parte del desarrollo no se centra en los problemas. Nos referimos a estas plataformas como los Puertos y la mayoría se encuentran en SeaMonkey-Ports tinderbox page.

- -

Estas son:

- -
    -
  • aix 4.3 (aCC)
  • -
  • beos 5.0.3 (gcc)
  • -
  • bsdi 4.x (gcc)
  • -
  • hpux 10.x,11.x (HP cc)
  • -
  • irix 6.x/gcc (gcc/MIPSpro)
  • -
  • linux/ppc (gcc)
  • -
  • os/2 (gcc)
  • -
  • osf1 5.x (Compaq cc)
  • -
  • solaris (sparc & x86) 2.6+ (gcc/Forte)
  • -
- -

Grado-3 son aquellas en las que casi no hay desarrollo activo por la mayor parte de los desarrolladores pero que hay algunas soluciones contribuidas por terceros.

- -

Las Grado-3 son:

- -
    -
  • freebsd (gcc)
  • -
  • linux/alpha (gcc)
  • -
  • netbsd (gcc)
  • -
  • openvms (?)
  • -
  • ps2linux (gcc)
  • -
  • qnx 6 (gcc)
  • -
  • win32/x86 (gcc)
  • -
- -

Las demás plataformas "no son soportadas" por Mozilla. En realidad "no soportada" quiere decir que no hay gente trabajando activamente en eso y que no son una prioridad.

- -

La mayoría de los desarrolladores no tienen acceso a las plataformas que no sean Grado-1; así que cualquier bug reportado en una plataforma que no sea Grado-1,debería poseer bastante información para ayudar al responsable del bug a determinar la causa y brindar una solución apropiada. Si puedes proporcionar un parche y/o verificar que el parche del desarrollador funciona en tu plataforma, puedes ayudar a muchos a verificar y arreglar sus bugs.

- -

 

-
-
Qué tipo de sistema de compilación usa Mozilla?
-
Mozilla usa para todas las plataformas una delgada capa de configuración GNU sobre el legado de sistema de makefile recursivo de Netscape. Como la mayoría de los proyectos configure-based, utiliza GNU autoconf para generar el script de configuración. GNU make se utiliza para manejar el proceso de compilado. -

 

-
-
Por qué usa GNU?
-
GNU make ha sido exportado a muchos sistemas. Esto hace que exportar Mozilla a esos sistemas sea un poco más fácil. Utilizando las características de make, que son soportadas por el programa nativo make en 10 plataformas diferentes, se logra que el sistema de compilado no sea innecesariamente complicado. -

 

-
-
Funciona otra versión de make?
-
No. El makefiles Mozilla utilza características propias de GNU make que, obviamente, sólo funcionan con GNU make. -

 

-
-
Por qué no usa automake?
-
Parte del legado de Netscape involucra utilizar el make de GNU. Tiene características para incluir un conjunto de reglas comunes desde un puñado de archivos en cada Makefile que necesite usarlas. También, hoy en día el método de generación de librerías de Mozilla no funciona bien con libtool. -

 

-
-
Qué les sucedió a nmake y al sistema de compilado CodeWarrior?
-
Ya no existen. El soporte para nmake se dejó durante la distribución de Mozilla 1.2a. El sistema mac cfm se abandonó con el soporte para OS9 poco después de la liberación de Mozilla 1.3 -

 

-
-
Por qué no ant, tmake, scons o inserte su sistema favorito aquí?
-
Principalmente porque nadie los utiliza en Mozilla. Cuando Mozilla empezó a ser de código abierto, sólo contenia el legado de Netscape. Autoconf se integró en una rama y se mantuvo en paralelo durante 6 meses antes de convertirse en el sistema standard para unix. -

 

-
-
Si deseo utilizar mi sistema favorito,¿ lo empezarìan a usar en Mozilla?. No quiero perder mi tiempo si no lo van a usar.
-
No hay garantías de que cualquier código escrito para Mozilla sea aceptado en árbol por defecto. Todo sistema que se desee utilizar debe demostrar ser mejor que el sistema actual. Velocidad, flexibilidad, portabilidad y la capacidad de que un gran grupo de desarrolladores- que tiene 3 años o más de experiencia- pueda cambiarlo facilmente, son los principales factores que deciden el cambio. Si hablas en serio y vas a realizar mucho trabajo, contacta a User:Benjamin Smedberg para discutir los detalles. -

 

-
-
Por qué Mozilla no soporta autoconf 2.5x?
-
Simplemente porque autoconf 2.5x no ofrece nada para que los esfuerzos por actualizar valgan la pena. Autoconf 2.5x no es compatible con 2.13 y las restricciones adicionales hechas en las nuevas versiones de autoconf requirirían reescribir gran parte del código- sistema de compilado de Mozilla. -

Algunas características de 2.13, como la posibilidad de pasar argumentos adicionales para sub-configuración, no están disponibles en 2.5x. Varios han preguntado por estas características en las listas de correos de autoconf y no han obtenido respuestas favorables. No es conveniente reescribir las configuraciones para subprojectos de Mozilla (NSPR & LDPA).

- -

 

-
-
Por qué NSS no usa aurtoconf?
-
El projecto NSS también es utilizado fuera de Mozilla, y los miembros del mismo creen que cambiar a autoconf no vale la pena. Mira {{ Bug(52990) }} para más detalles. -

 

-
-
Puedo compilar múltiples proyectos basados en Mozilla desde un único árbol-fuente?
-
Sí!, cada projecto debe ser compilado en su propio objdir. -

 

-
-
Qué es un objdir?
-
Un objdir se refiere a crear los archivos de salida en un directorio distinto al que se encuentran las fuentes. Es un estándar en la mayoría de los proyectos basados en configuración. Te permite, desde un único árbol-fuente, compilar para múltiples configuraciones, incluyendo varias plataformas si trabajas en un sistema de archivos de red. También elimina la corrupción de tu árbol-fuente, de esta manera sabes que los archivos en el árbol no han sido modificados en el proceso de compilado. -

Si ejecutas configure manualmente, puedes usar el método estàndar de crear un directorio vacío en cualquier parte de la unidad, y luego entrar a ese directorio y ejecutar path/to/mozilla/configure.

- -
mkdir obj-debug
-cd obj-debug
-../mozilla/configure
-
- -

Si usas client.mk, puedes agregar lo siguiente al .mozconfig:

- -
mk_add_options MOZ_OBJDIR=/path/to/objdir
-
- -

 

-
-
Puedo multi-compilar Mozilla?
-
Sí, mira el documento Cross-Compiling Mozilla. No soporta Canadian Cross-Compiling. -

 

-
-
Cómo puedo compilar sólo ciertos archivos para pruebas, en lugar de compilar todo el árbol, mientras modifico el código?
-
Entra en el directorio objdir, luego vè al directorio especifico que deseas compilar (la estructura del objdir coincide con la estructura de los directorios de las fuentes), y tipea "make". Sólo funciona si encuentras un directorio que tenga un Makefile (el equivalente en el árbol fuente tandrá "Makefile.in". Si quieres algo más especifico que eso puedes probar con "make <nombrearchivo>.obj". Mira Incremental Build. -

 

-
-
Funcionan las compilaciones paralelas (make -j) en Mozilla?
-
Sí, mira GNU Make Parallel Execution para su uso óptimo. -

Si obtienes errores de compilación al utilizar aquello (sobre todo cuando usas -j en lugar de -jN), prueba reduciendo el número de paralelismo disminuyendo el valor de N (o, si usaste paralelismo ilimitado, agrega un número pequeño N a -j)

- -

La compilación en paralelo con -j4 y -j8 parece funcionar.

- -

 

-
-
Cómo fuerzo al sistema de compilación para aceptar cualquier cambio hecho a mi archivo .mozconfig?
-
Toca cualquiera de los scripts de configuración en el árbol. No hay dependencia sobre el archivo mozconfig; el archivo puede encontrarse donde sea a tráves de la variable de entorno MOZCONFIG. -

 

-
-
error: file '../../toolkit/locales/en-US/chrome/necko/contents.rdf' doesn't exist at ../../config/make-jars.pl line 418, <STDIN> line 9.
-
Estás tratando de compilar Firefox sin seguir las intrucciones sobre cómo Configurar las opciones de compilación. En particular, tu mozconfig debe contener el mozconfig por defecto de Firefox: -
. $topsrcdir/browser/config/mozconfig
-# add your custom additional options here
-
- -

 

-
-
Initial cvs checkout fails with the message: cvs {{ mediawiki.external('checkout aborted') }}: *PANIC* administration files missing
-
No puedes crear un árbol CVS debajo de un directorio llamado "CVS". Es una característica/bug de CVS. CVS espera encontrar cierta administración de archivos debajo del directorio CVS y no funciona si no la encuentra. -

 

-
-
Error: ../coreconf/rules.mk:406: target `c' doesn't match the target pattern
-
Necesitas make 3.80 y no otras versiones como 3.81 -
    -
  • make 3.80 ya no está disponible en el instlador de Cygwin, así que lo deberás encontrar por ti mismo. Puedes buscarlo en google como make-3.80-1.tar.bz2, también está disponbleaquí.
  • -
- -

 

-
-
- -

Preguntas específicas sobre Mac

- -

 

- -
-
Puede compilar una aplicación Mozilla como un binario universal?
-
Sí, mira Mac OS X Universal Binaries. -

 

-
-
Cómo puedo usar distcc para ayudar a compilar?
-
TBA. -

 

-
-
Mozilla compila UFS?
-
Sí, ha sido arreglado desde {{ Bug(157036) }}. -

 

-
-
Mozilla corre sobre UFS?
-
Sí. -

 

-
-
Puedo usar CodeWarrior para compilar Mach-O?
-
No, CodeWarrior murió. Mira {{ Bug(119589) }}. -

 

-
-
Luego de re-compilar, ej. layout. Cómo hago que mi FirefoxDebug.app refleje el cambio?
-
make -C browser/app.
-
- -

Para errores comunes en Mac y consejos adicionales sobre solución de problemas. Mira solución de problemas en Requerimientos para la compilación en Mac OS X.

- -

Preguntas sobre Win32

- -

 

- -
-
Existe un archivo de proyecto Microsoft Visual Studio para compilar Mozilla?
-
No. Debes usar cygwin y GNU make. -

 

-
-
Puedo correr los comandos para compilar desde cmd.exe?
-
Sí. Make llama la subshell cygwin /bin/sh para ejecutar el comando, así que no hay problema sobre cual shell uses para llamar a make. -

 

-
-
Qué versión del paquete de autoconf de cygwin debo usar?
-
Debido a las incompatibilidades entre autonconf 2.1x y 2.5x, la gente de cygwin escribió un script (wrapper) que determinará qué versión necesitará tu script de configuración y llamará a esa versión. Necesitarás los paquetes autoconf(-wrapper) y autoconf estable. Mira http://cygwin.com/ml/cygwin-announce.../msg00177.html para más detalles -

 

-
-
Las herramientas de Microsoft (CL, LINK, RC) tiran error File not found
-
Las variables de entorno INCLUDE y LIB son usadas por las herramientas de Microsoft Visual C++. Comúnmente están configuradas en vcvars32.bat. Tal vez necesites o no MFC y ATL, dependiendo de qué modulos estés compilando. Debajo hay paths que funcionan si Visual C++ está instalado en "C:\msvs" -
set INCLUDE=C:\msvs\VC\Include;C:\msvs\VC\ATLMFC\Include
-set LIB=C:\msvs\VC\Lib;C:\msvs\VC98\ATLMFC\Lib
-
- -

 

-
-
cvs update: authorization failed: server XXXX rejected access -- used empty password; try "cvs login" with a real password
-
Estás mezclando wincvs y cygwin cvs. Usa uno o el otro. -

 

-
-
cvs {{ mediawiki.external('checkout aborted') }}: cannot rename file CVS/Entries.Backup to CVS/Entries: Permission denied
-
En cygwin 1.3.13, ntsec está activada. ntsec es un intento de cygwin por obtener una estructura de permiso mas similar a UNIX sobre características de seguridad que Windows NT. El mensaje de error indica que hay una discrepancia de mapeo entre los permisos de unix listados en el archivo de cygwin /etc/password y los usados por Windows NT. Puedes agregar "nontsec" a tu variable de entorno CYGWIN. Para arreglarlo de forma adecuada deberías solucionar el problema de mapeo. -

 

-
-
Al descomprimir, no se encuentra un archivo .dtd
-
Probablemente usaste Winzip para descomprimir los archivos. No hagas eso. Por defecto, Winzip no extrae los archivos sin longitud (0 bytes). Usa otro utilitario. -

 

-
-
nsinstall u otro programa nativo win32 no encuentra un archivo
-
Revisa tu tabla de subida. Ejecuta el comando de montura, deberia devovler algo como esto: -
c: on /cygdrive/c type user (binmode,noumount)
-e: on /cygdrive/e type user (binmode,noumount)
-c:\cygwin on / type system (binmode)
-c:\cygwin\bin on /usr/bin type system (binmode)
-c:\cygwin\lib on /usr/lib type system (binmode)
-
- -

El sistema de compilado espera que las particiones del disco hayan sido montadas usando /cygdrive como prefijo de la unidad. Si C: o E: no usan /cygwin como prefijo de unidad no podrás compilar Mozilla en esas unidades. Debes montar la unidad manualmente usando:

- -
mount -s "e:\" /cygdrive/e
-
- -

Si tu árbol fuente está debajo de tu $HOME, el modo de montura debería ser binmode (finales de líneas estilo Unix), de otro modo fallará al compilar. Si el árbol está fuera de tu $HOME, no importa el modo de montura siempre y cuando tu editor reconozca finales de linea estilo Unix.

-
-
No such file or directory errors from lines in your mozconfig
-
This can be caused by your mozconfig file having Windows-style line endings. Convert them to UNIX-style and the error should go away.
-
xpidl.exe cae con una violación de acceso
-
Usualmente ocurre por una discordancia entre tu compilador y tus librerías glib y/o libIDL. -

Si compilas con Visual Studio .NET, debes enlazar con las version de VC7 de las DLL glib y libIDL. Para Visual Studio .NET 2003, usa las versiones VC7.1. Para Visual Studio 2005, usa VC8.

- -

El directorio que contenga esas versiones de librerías para tu compilador debe estar en tu PATH antes que cualquier otra versión de las mismas librerías. Los archivos .dll y lib deben ser ejecutable o cygwin no los cargará.

- -

Mira los Requerimientos para la compilación en Windows sobre más consejos para compilar con VC7 o superior.

- -

También en {{ Bug(242870) }} se encuentran disponibles algunas librerías estáticas que pueden ser usadas en lugar de las librerías específicas del compilador.

- -

Si compilas con VC6, debes asegurarte que no estás usando las librerías de VC7 a la hora de compilar o ejecutar.

-
-
configure: error: the midl major version, , does not match the compiler suite version, <Visual C++ nro de versión> -- lo mismo para el linker
-
TLa herramienta cygwin "link.exe" para enlazar no reconoce el objeto enlazador de la suite del compilador Microsoft, o no se encuentra midl. Asegúrate que las herramientas de Microsoft se encuentran antes que cygwin en el PATH (Mira las intrucciones), o renombra o quita el archivo /bin/link.exe. Nota que cygwin tal vez modifique el path cuando arranque su shell, asi que también mira export.
-
configure: error: installation or configuration problem: C compiler cannot create executables.
-
Prueba asegurándote que la variable PATH incluya todos los directorios necesarios. Si usas MS Visual Studio, ejecuta vcvars32.bat (que configura las variables PATH, LIB, y INCLUDE). Si tu entorno ha cambiado, tal vez debas eliminar el archivo config.cache (en el directorio mozilla o directorio objeto) y luego volver a compilar.
-
build error: ../coreconf/rules.mk:365: target `c' doesn't match the target pattern
-
Has usado make 3.81 del instalador cygwin. Debes usar make 3.80. Por favor lee las instrucciones.
-
fatal error LNK1112: module machine type 'IA64' conflicts with target machine type 'X86'
-
Prueba cambiando el orden de los directorios en las variables PATH, LIB e INCLUDE. Cambia cualquier directorio que incluya cerca del final: "win64" o "IA64" (o "AMD64").
-
LINK : fatal error LNK1104: cannot open file 'atlthunk.lib'
-
De acuerdo con this Microsoft forum thread, hay una versión diferente de Active Template Library (ATL) para  Platform Software Development Kit -libre- (PSDK),  que para Visual Studio. La ATL en el PSDK no soporta código 32-bits, sólo 64-bits; mientras que Visual Studio soporta ambas y no requiere atlthunk.lib. Aparentemente el archivo atlthunk.lib no está disponible y no se pudo compilar desde freely available tools, incluyendo las herramientas Visual C++ y Visual Studio Express. De todos modos puedes actualizar a la versión full de Visual Studio y utilizar la versión de ATL del mismo, o puedes trabajar en el problema cambiando algunos códigos en atlbase.h (en \include\atl debajo del directorio PSDK). Ejemplo: -
--- atlbase.h.old       2006-06-08 08:20:26.671875000 -0400
-+++ atlbase.h   2006-06-08 08:13:26.578125000 -0400
-@@ -283,7 +283,7 @@
-         }
- };
- #pragma pack(pop)
--
-+/*
- PVOID __stdcall __AllocStdCallThunk(VOID);
- VOID  __stdcall __FreeStdCallThunk(PVOID);
-
-@@ -291,6 +291,11 @@
- #define FreeStdCallThunk(p) __FreeStdCallThunk(p)
-
- #pragma comment(lib, "atlthunk.lib")
-+*/
-+
-+// workaround for not having atlthunk.lib in PSDK or VC++ 2005 Express Edition
-+#define AllocStdCallThunk() HeapAlloc(GetProcessHeap(),0,sizeof(_stdcallthunk))
-+#define FreeStdCallThunk(p) HeapFree(GetProcessHeap(), 0, p)
-
- #elif defined (_M_AMD64)
- #pragma pack(push,2)
-
- -

También hubo que borrar el directorio objeto y volver a compilar desde el principio, de modo que el compilador tome el cambio.

-
-
Compilar o generar un ejecutable con cygwin y VS6.0 termina en FIND: Parameter format not correct
-
Hay una confusión entre System32 "find" y /usr/bin/find de cygwin. Lo que queremos es el find de cygwin. Es causado por el orden del path. Algunas posibles soluciones serían: -
    -
  • Renombrar temporalmente system32/find.exe
  • -
  • Asegurarse que en la entrada del path esté primero cygwin que system32
  • -
-
-
Empaqueté Firefox a través del instalador: make -C ${OBJ_DIR}/browser/installer installer sin problemas. Al ejecutar pide el archivo perdido mozz.dll; la instalación falla.
-
Tanto Firefox como Thunderbird,deberían compilarse con las etiquetas --enable-static --disable-shared
-
shlibsign.exe - Entry Point Not Found; El procedimiento CERT_GetFirstEmailAddress no ha sido localizado en la librería nss3.dll.
-
Tal vez tengas muchos nss3.dll en tu máquina y en tu path. Haz una búsqueda para todas las copias de este archivo. Mueve todas las copias que se encuentren dentro del árbol de Firefox durante la compilación y vuelve a colocarlos cuando se termine la compilación.
-
- -

Preguntas sobre Mingw32

- - - -

Preguntas sobre Unix

- -
-
Galeon necesita libgtksuperwin.so pero no tengo ese archivo en mi Mozilla gtk2, dónde está?
-
Sólo Mozilla gtk1 compila libgtksuperwin.so. Si deseas usar galeon con compilación gtk2, debes usar galeon2. -

 

-
-
Por qué la configuración dice que necesito libIDL >= 0.6.3 cuando tengo instalado libIDL 0.8.x?
-
libIdl 0.8.x sólo puede ser usado compilando con gtk2. Por defecto, Mozilla compila con gtk1. Para usar libIDl 0.8.x y gtk2 debes especificar --enable-default-toolkit=gtk2 en la línea de comando de laconfiguración o  .mozconfig. NOTA: Esto es viejo y ha sido arreglado en Mozilla 1.8
-
Cómo compilo en Solaris 10 x86 (SeaMonkey)?
-
Tuve que hacer lo siguiente para conseguir un entorno que funcione:
-
1. instalar forte (Gratis desde Sun)
-
2. Instalar gmake (desde blastwave)
-
3. mv /usr/ucb/cc /usr/ucb/cc.hold
-
4. CFLAGS="-xlibmil"; exporta CFLAGS
-
5. CXXFLAGS="-xlibmil -xlibmopt -features=tmplife -norunpath"; exporta CXXFLAGS
-
6. LDFLAGS='-R$ORIGIN -R/usr/sfw/lib -R/opt/sfw/lib -R/usr/local/lib -R/opt/csw/lib'; exporta LDFLAGS
-
7. PATH=$PATH:/opt/SUNWspro/bin:/opt/csw/bin:/opt/csw/sbin:/usr/ucb/bin:/usr/ccs/bin; exporta PATH
-
8. LD_LIBRARY_PATH=/opt/SUNWspro/lib:$LD_LIBRARY_PATH; exporta LD_LIBRARY_PATH
-
9. Crear un archivo mozconfig y compilar normalmente.
-
10. La generación del paquete (tar y gzip) falló, así que simplemente lo cree manualmente con los archivos resultantes en el directorio dist.
-
libxpcom_core.so: cannot restore segment prot after reloc: Permission denied</dt>
-
Probablemente estés usando Fedora Core 5, o alguna otra distribución de Linux que tiene activado SELinux. Para arreglarlo, utiliza el comando 'chcon -t chcon -t texrel_shlib_t lib*' en el directorio dist/bin.</dd>
-
diff --git a/files/es/mozilla/developer_guide/source_code/cvs/index.html b/files/es/mozilla/developer_guide/source_code/cvs/index.html new file mode 100644 index 0000000000..248231aee9 --- /dev/null +++ b/files/es/mozilla/developer_guide/source_code/cvs/index.html @@ -0,0 +1,149 @@ +--- +title: Código fuente de Mozilla (CVS) +slug: Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) +tags: + - Documentación_de_compilado +translation_of: Mozilla/Developer_guide/Source_Code/CVS +--- +

 

+

Aquellos que desarrollan de forma muy activa pueden comprobar el último código fuente utilizando CVS. Si vas a realizar parches y arreglos este es el método más adecuado, porque te permite ver los últimos cambios y unirlos con los tuyos.

+

Si quieres compilar el producto para su publicación, es mejor Descargar el código fuente de Mozilla en un archivo tar.

+

Guía rápida

+

I seem to not be editing this page in what others on this development site deem appropriate. So, if you are going to just remove this section, can you please be so kind as to suggest an alternate title of a new page that I can put this information on? Thanks, Jeff Carr

+

Los pasos básicos para descargar la rama (inestable) del código fuente de Firefox son:

+
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
+cd mozilla
+make -f client.mk checkout MOZ_CO_PROJECT=browser
+
+

Comenzando

+

CVS significa "Concurrent Versioning System". Para conocer más sobre CVS en general visita ximbiot.com, o lee el tutorial.

+

Cualquiera puede descargar ("check out") el código fuente vía CVS, pero solo ciertas personas pueden subir cambios ("check in" o "commit"). Esas personas son los dueños de módulos y sus delegados. Lee nuestro documento sobre mejorar mozilla para saber como puedes tener la habilidad de enviar cambios. Quizá quieras leer tambien acerca de como usar SSH para conectar al CVS.

+

Requisitos

+

Para descargar el código fuente, necesitas CVS versión 1.11 o posterior. La versión 1.12.13 no funciona con el servidor CVS, y el resultado es que el programa se cuelga, sin embargo la versión 1.12.9 parece funcioanr. Además, debes usar GNU make para descargar y compilar Mozilla. No se acepta ningún otro programa "make". En windows, mac y sistemas GNU habituales (como GNU/Linux), usa "make" para ejecutar GNU make; en la mayoría de los sistemas UNIX no GNU (como por ejemplo Solaris), usa "gmake".

+

Configuración de cliente CVS

+

El "cvsroot" (cadena de identificación del repositorio) que se utiliza para acceder a CVS Mozilla de forma anónima es:

+
:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
+
+

Si usas una interface CVS gráfica, utiliza los siguientes datos del servidor:

+ +

Elegir un proyecto para descargar

+

Ya que se usa el mismo código para compilar distintas aplicaciones debes elegir qué aplicación quieres descargar en la línea de comandos usando la variable MOZ_CO_PROJECT. esta información debe proporcionarse cuando se necesite para la descarga del código fuente actual (lee la sección apropiada sobre la descarga más abajo, dependiendo de la rama que quieras descargar). Las posibles opciones incluyen:

+
+
+ browser 
+
+ El navegador "Firefox".
+
+ mail 
+
+ El cliente de correo/noticias "Thunderbird".
+
+ suite 
+
+ La suite traditional "Mozilla" SeaMonkey con navegador, correo/noticias, editor web, y otras aplicaciones.
+
+ minimo 
+
+ El navegador para pequeños dispositivos.
+
+ composer 
+
+ El editor HTML.
+
+ calendar 
+
+ La aplicación de calendario "Sunbird".
+
+ xulrunner 
+
+ El interprete de nueva generación para aplicaciones XUL.
+
+ camino 
+
+ El navegador nativos para Macintosh, "Camino".
+
+ tamarin 
+
+ La máquina virtual Adobe Ecmascript.
+
+ all 
+
+ Descarga todos los códigos fuente de todos los proyectos de arriba, además de código útil adicional
+
+

Se pueden especificar varios proyectos con comas: MOZ_CO_PROJECT=suite,browser,xulrunner.

+

Ten en cuenta que si estas usando un archivo <tt>.mozconfig</tt> personalizado, debes especificar también el MOZ_CO_PROJECT allí, en vez de hacerlo en la línea de comandos.

+

Descargar el código de una rama nueva

+

Comprueba el Tinderbox

+

Antes de descargar una rama, debes comprobar siempre el Tinderbox apropiado para asegurarte que el código base no esta roto. Si hay tinderboxes en rojo, normalmente es recomendable esperar hasta que estén en verde antes de descargar una rama.

+

Rama HEAD

+

Para descargar una rama nuevo desde cero, toma el archivo client.mk que es el que contiene las instruciones que se usarán para descargar el resto de la rama:

+
$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
+
+

Nota: Si ya tienes un archivo .mozconfig, quizá necesites descargar los siguientes archivos:

+
+
+ Firefox 
+
+
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/browser/config/mozconfig
+
+
+ Thunderbird 
+
+
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/mail/config/mozconfig
+
+
+

Rama específica

+

Si quieres descargar el código de alguna rama CVS específica, usa:

+
$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r RAMA mozilla/client.mk
+
+

Por ejemplo, para descargar la rama en desarrollo de Firefox 2.0, reemplaza RAMA por MOZILLA_1_8_BRANCH. Para ver las ramas disponibles en Mozilla, mira las Etiquetas CVS.

+

Para información sobre como descargar los archivos .mozconfig de un proyecto específico, lee la sección anterior (Por supuesto aplicable a otras ramas diferentes de HEAD también).

+

Descargar

+

Después de elegir la rama correspondiente, ejecuta:

+
$ cd mozilla
+$ make -f client.mk checkout MOZ_CO_PROJECT=opción,opción
+
+

Cómo se mencionó arriba, si ya tienes especificado la rama en un archivo .mozconfig personalizado, no necesitas hacerlo en la línea de comando.

+
+ Utiliza siempre client.mk para descargar las fuentes Mozilla: no descargues directamente el módulo mozilla/, se descargían varios subprojectos como NSS, NSPR y LDAP C SDK, pero el desarrollo habitual de mozilla se da en el tronco (trunk).
+

Fecha específica

+

Si quieres descargar el código de alguna fecha en particular utiliza la variable MOZ_CO_DATE. Por ejemplo <tt>MOZ_CO_DATE="20 Oct 2006 17:00 PDT"</tt>

+

También se puede agregar en el .mozconfig, o escribir en la línea de comandos:

+
$ cd mozilla
+$ make -f client.mk checkout MOZ_CO_DATE="20 Oct 2006 17:00 PDT" MOZ_CO_PROJECT=option,option
+
+

Cambiar el árbol de código a una rama diferente

+

Branch HEAD

+

Para actualizar el árbol de código (ya sea la rama HEAD o cualquier otra) a la última versión, primero ejecuta:

+
$ cd mozilla
+$ cvs up -A client.mk
+
+

La opción -a elimina cualquier información "pegada a la rama", actualizaría la rama HEAD.

+

Rama específica

+

Para actualizar el árbol de código de una rama especifica descargado con anterioridad usa:

+
$ cd mozilla
+$ cvs up -r RAMA client.mk
+
+

Reemplaza RAMA con la etiqueta de la rama que desees actualizar.

+

Actualizar el árbol de código

+

Para actualizar el árbol de código simplemente haz lo siguiente:

+
$ make -f client.mk checkout MOZ_CO_PROJECT=opción,opción
+
+

Igual que siempre, si tienes un .mozconfig personalizado con MOZ_CO_PROJECT definido, no necesitas repetirlo en la línea de comando.

+

Creando un archivo Diff

+

Para crear un diff de un archivo local para aplicar en el archivo actual en reposición, usa:

+
$ cvs diff -u8p NOMBREDEARCHIVO
+
+

Mira Crear un parche para más información.

+

Convertir el árbol de código descargado

+

Los árboles descargados desde mozilla.org (tarballs con el código fuente) ya poseen información CVS, cómo una descarga normal. Puedes actualizarlo como cualquier otro árbol al la última versión, sin ninguna acción en especial. Para ver cómo actualizar un árbol, mira la sección anterior

+

interwiki link

+
+  
+

{{ languages( { "en": "en/Mozilla_Source_Code_(CVS)", "fr": "fr/Obtenir_le_code_source_de_Mozilla_via_CVS", "ja": "ja/Mozilla_Source_Code_(CVS)", "zh-cn": "cn/\u901a\u8fc7CVS\u83b7\u53d6\u6e90\u7801" } ) }}

diff --git "a/files/es/mozilla/developer_guide/source_code/c\303\263digo_fuente_de_mozilla_(cvs)/index.html" "b/files/es/mozilla/developer_guide/source_code/c\303\263digo_fuente_de_mozilla_(cvs)/index.html" deleted file mode 100644 index 248231aee9..0000000000 --- "a/files/es/mozilla/developer_guide/source_code/c\303\263digo_fuente_de_mozilla_(cvs)/index.html" +++ /dev/null @@ -1,149 +0,0 @@ ---- -title: Código fuente de Mozilla (CVS) -slug: Mozilla/Developer_guide/Source_Code/Código_fuente_de_Mozilla_(CVS) -tags: - - Documentación_de_compilado -translation_of: Mozilla/Developer_guide/Source_Code/CVS ---- -

 

-

Aquellos que desarrollan de forma muy activa pueden comprobar el último código fuente utilizando CVS. Si vas a realizar parches y arreglos este es el método más adecuado, porque te permite ver los últimos cambios y unirlos con los tuyos.

-

Si quieres compilar el producto para su publicación, es mejor Descargar el código fuente de Mozilla en un archivo tar.

-

Guía rápida

-

I seem to not be editing this page in what others on this development site deem appropriate. So, if you are going to just remove this section, can you please be so kind as to suggest an alternate title of a new page that I can put this information on? Thanks, Jeff Carr

-

Los pasos básicos para descargar la rama (inestable) del código fuente de Firefox son:

-
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
-cd mozilla
-make -f client.mk checkout MOZ_CO_PROJECT=browser
-
-

Comenzando

-

CVS significa "Concurrent Versioning System". Para conocer más sobre CVS en general visita ximbiot.com, o lee el tutorial.

-

Cualquiera puede descargar ("check out") el código fuente vía CVS, pero solo ciertas personas pueden subir cambios ("check in" o "commit"). Esas personas son los dueños de módulos y sus delegados. Lee nuestro documento sobre mejorar mozilla para saber como puedes tener la habilidad de enviar cambios. Quizá quieras leer tambien acerca de como usar SSH para conectar al CVS.

-

Requisitos

-

Para descargar el código fuente, necesitas CVS versión 1.11 o posterior. La versión 1.12.13 no funciona con el servidor CVS, y el resultado es que el programa se cuelga, sin embargo la versión 1.12.9 parece funcioanr. Además, debes usar GNU make para descargar y compilar Mozilla. No se acepta ningún otro programa "make". En windows, mac y sistemas GNU habituales (como GNU/Linux), usa "make" para ejecutar GNU make; en la mayoría de los sistemas UNIX no GNU (como por ejemplo Solaris), usa "gmake".

-

Configuración de cliente CVS

-

El "cvsroot" (cadena de identificación del repositorio) que se utiliza para acceder a CVS Mozilla de forma anónima es:

-
:pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
-
-

Si usas una interface CVS gráfica, utiliza los siguientes datos del servidor:

- -

Elegir un proyecto para descargar

-

Ya que se usa el mismo código para compilar distintas aplicaciones debes elegir qué aplicación quieres descargar en la línea de comandos usando la variable MOZ_CO_PROJECT. esta información debe proporcionarse cuando se necesite para la descarga del código fuente actual (lee la sección apropiada sobre la descarga más abajo, dependiendo de la rama que quieras descargar). Las posibles opciones incluyen:

-
-
- browser 
-
- El navegador "Firefox".
-
- mail 
-
- El cliente de correo/noticias "Thunderbird".
-
- suite 
-
- La suite traditional "Mozilla" SeaMonkey con navegador, correo/noticias, editor web, y otras aplicaciones.
-
- minimo 
-
- El navegador para pequeños dispositivos.
-
- composer 
-
- El editor HTML.
-
- calendar 
-
- La aplicación de calendario "Sunbird".
-
- xulrunner 
-
- El interprete de nueva generación para aplicaciones XUL.
-
- camino 
-
- El navegador nativos para Macintosh, "Camino".
-
- tamarin 
-
- La máquina virtual Adobe Ecmascript.
-
- all 
-
- Descarga todos los códigos fuente de todos los proyectos de arriba, además de código útil adicional
-
-

Se pueden especificar varios proyectos con comas: MOZ_CO_PROJECT=suite,browser,xulrunner.

-

Ten en cuenta que si estas usando un archivo <tt>.mozconfig</tt> personalizado, debes especificar también el MOZ_CO_PROJECT allí, en vez de hacerlo en la línea de comandos.

-

Descargar el código de una rama nueva

-

Comprueba el Tinderbox

-

Antes de descargar una rama, debes comprobar siempre el Tinderbox apropiado para asegurarte que el código base no esta roto. Si hay tinderboxes en rojo, normalmente es recomendable esperar hasta que estén en verde antes de descargar una rama.

-

Rama HEAD

-

Para descargar una rama nuevo desde cero, toma el archivo client.mk que es el que contiene las instruciones que se usarán para descargar el resto de la rama:

-
$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/client.mk
-
-

Nota: Si ya tienes un archivo .mozconfig, quizá necesites descargar los siguientes archivos:

-
-
- Firefox 
-
-
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/browser/config/mozconfig
-
-
- Thunderbird 
-
-
cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co mozilla/mail/config/mozconfig
-
-
-

Rama específica

-

Si quieres descargar el código de alguna rama CVS específica, usa:

-
$ cvs -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot co -r RAMA mozilla/client.mk
-
-

Por ejemplo, para descargar la rama en desarrollo de Firefox 2.0, reemplaza RAMA por MOZILLA_1_8_BRANCH. Para ver las ramas disponibles en Mozilla, mira las Etiquetas CVS.

-

Para información sobre como descargar los archivos .mozconfig de un proyecto específico, lee la sección anterior (Por supuesto aplicable a otras ramas diferentes de HEAD también).

-

Descargar

-

Después de elegir la rama correspondiente, ejecuta:

-
$ cd mozilla
-$ make -f client.mk checkout MOZ_CO_PROJECT=opción,opción
-
-

Cómo se mencionó arriba, si ya tienes especificado la rama en un archivo .mozconfig personalizado, no necesitas hacerlo en la línea de comando.

-
- Utiliza siempre client.mk para descargar las fuentes Mozilla: no descargues directamente el módulo mozilla/, se descargían varios subprojectos como NSS, NSPR y LDAP C SDK, pero el desarrollo habitual de mozilla se da en el tronco (trunk).
-

Fecha específica

-

Si quieres descargar el código de alguna fecha en particular utiliza la variable MOZ_CO_DATE. Por ejemplo <tt>MOZ_CO_DATE="20 Oct 2006 17:00 PDT"</tt>

-

También se puede agregar en el .mozconfig, o escribir en la línea de comandos:

-
$ cd mozilla
-$ make -f client.mk checkout MOZ_CO_DATE="20 Oct 2006 17:00 PDT" MOZ_CO_PROJECT=option,option
-
-

Cambiar el árbol de código a una rama diferente

-

Branch HEAD

-

Para actualizar el árbol de código (ya sea la rama HEAD o cualquier otra) a la última versión, primero ejecuta:

-
$ cd mozilla
-$ cvs up -A client.mk
-
-

La opción -a elimina cualquier información "pegada a la rama", actualizaría la rama HEAD.

-

Rama específica

-

Para actualizar el árbol de código de una rama especifica descargado con anterioridad usa:

-
$ cd mozilla
-$ cvs up -r RAMA client.mk
-
-

Reemplaza RAMA con la etiqueta de la rama que desees actualizar.

-

Actualizar el árbol de código

-

Para actualizar el árbol de código simplemente haz lo siguiente:

-
$ make -f client.mk checkout MOZ_CO_PROJECT=opción,opción
-
-

Igual que siempre, si tienes un .mozconfig personalizado con MOZ_CO_PROJECT definido, no necesitas repetirlo en la línea de comando.

-

Creando un archivo Diff

-

Para crear un diff de un archivo local para aplicar en el archivo actual en reposición, usa:

-
$ cvs diff -u8p NOMBREDEARCHIVO
-
-

Mira Crear un parche para más información.

-

Convertir el árbol de código descargado

-

Los árboles descargados desde mozilla.org (tarballs con el código fuente) ya poseen información CVS, cómo una descarga normal. Puedes actualizarlo como cualquier otro árbol al la última versión, sin ninguna acción en especial. Para ver cómo actualizar un árbol, mira la sección anterior

-

interwiki link

-
-  
-

{{ languages( { "en": "en/Mozilla_Source_Code_(CVS)", "fr": "fr/Obtenir_le_code_source_de_Mozilla_via_CVS", "ja": "ja/Mozilla_Source_Code_(CVS)", "zh-cn": "cn/\u901a\u8fc7CVS\u83b7\u53d6\u6e90\u7801" } ) }}

diff --git a/files/es/mozilla/firefox/releases/1.5/index.html b/files/es/mozilla/firefox/releases/1.5/index.html new file mode 100644 index 0000000000..2372dd0f81 --- /dev/null +++ b/files/es/mozilla/firefox/releases/1.5/index.html @@ -0,0 +1,164 @@ +--- +title: Firefox 1.5 para Desarrolladores +slug: Firefox_1.5_para_Desarrolladores +tags: + - CSS + - Complementos + - DOM + - Desarrollo_Web + - Estándares_Web + - HTML + - JavaScript + - RDF + - SVG + - Servicios_Web_XML + - Todas_las_Categorías + - XML + - XSLT + - XUL + - extensiones +translation_of: Mozilla/Firefox/Releases/1.5 +--- +
{{FirefoxSidebar}}

Firefox 1.5

+ +

Se ha lanzado Firefox 1.5 y ya se puede descargar descarga. Este programa esta basado en el motor de Gecko 1.8, esta nueva versión del navegador mejora su ya magnífico soporte a los estándares web y proporciona nuevas capacidades que hacen posible una nueva generación de aplicaciones web. Algunas de las nuevas características de Firefox 1.5 son: soporte de CSS2 y CSS3 mejorado, APIs para programar gráficos en 2D por medio de <canvas>, o gráficos vectoriales con SVG 1.1, XForms y eventos XML, así como muchas mejoras en DHTML, JavaScript y DOM.

+ +

Firefox 1.5 ya puede descargarse en el siguiente link: - http://www.mozilla.com/firefox/

+ +

Herramientas para desarrolladores

+ +

Firefox 1.5 dispone de diversas herramientas y extensiones de gran utilidad para los desarrolladores.

+ + + +

Nota: Algunas extensiones no soportan actualmente Firefox 1.5, y serán automáticamente desactivadas.

+ +

Descripción

+ +

Algunas de las nuevas características en Firefox 1.5:

+ +

Desarrolladores de sitios web y aplicaciones

+ +
+
Introducción a SVG en HTML
+
Aprenda cómo usar SVG en sus páginas XHTML y a manipular imágenes con JavaScript y CSS de forma similar a como haría un script para XHTML. Vea también SVG en Firefox 1.5 para saber más sobre el estado y los problemas de la implementación de SVG en Firefox 1.5.
+
+ +
+
Dibujar gráficos con Canvas 
+
Aprenda acerca de la nueva etiqueta <canvas> y cómo dibujar gráficos y otros objetos en Firefox.
+
+ +
+
Columnas con CSS-3 
+
Aprenda sobre el soporte a la disposición automática de texto en multi-columnas según lo propuesto en CSS3.
+
+ +
+
El cache de Firefox 1.5 
+
Aprenda acerca de bfcache y cómo aumenta la velocidad de la navegación en páginas ya visitadas.
+
+ +

XUL y Desarrolladores de Extensión

+ +
+
Creando una extensión 
+
Este tutorial te llevará a través de los pasos necesarios para construir una extensión para Firefox muy básica. Ver también otro tutorial en la base de conocimiento MozillaZine, el cual demuestra las nuevas características del Administrador de Extensión en 1.5, que hace la creación de una nueva extensión incluso mas fácil.
+
+ +
+
XPCNativeWrapper 
+
XPCNativeWrapper es una forma de envolver un objeto cuyo acceso es seguro desde un código privilegiado. Puede ser usado en todas las versiones de Firefox, a pesar que su funcionamiento ha cambiado con la versión 1.5 (Gecko 1.8).
+
+ +
+
Preferencias del Sistema 
+
Aprenda acerca de los nuevos widgets, que te permiten crear ventanas de Opciones mas fácilmente y usando menos código JavaScript.
+
+ +
+
Caracteres Internacionales en XUL JavaScript 
+
Ahora los archivos XUL JavaScript pueden contener caracteres no-ASCII.
+
+ +
+
Cambios en el API tree 
+
Las interfaces para acceder a los elementos <tree> han cambiado.
+
+ +
+
Cambios en XUL en Firefox 1.5 
+
Un resumen de los cambios en Xul. Vea también Adaptando las aplicaciones XUL a Firefox 1.5.
+
+ +
+
Cambios referentes a la red 
+
 
+
+ + + +

Nuevas características para el usuario final

+ +

Experiencia de usuario

+ + + +

Seguridad y privacidad

+ + + +

Soporte a los estándares Web

+ +

Firefox es lider de la industria en el soporte a los estandares Web con constantes implementaciones multiplataforma para:

+ + + +

Firefox 1.5 soporta: los siguientes protocolos para transporte de datos (HTTP, FTP, SSL, TLS, y otros), caracteres multilingües (Unicode), múltiples formatos gráficos (GIF, JPEG, PNG, SVG, y otros) y la última versión del lenguaje para scripts más popular del mundo, JavaScript 1.6.

+ +

Cambios desde Firefox 1.0

+ +

Muchos cambios han sido introducido en Firefox desde su lanzamiento el 9 de noviembre de 2004. Firefox ha sido mejorado con muchas nuevas características y correciones de bugs. Las release-notes de Deer Park y Firefox son unas excelentes fuentes la información sobre los cambios en cada lanzamiento de Firefox.

+ + diff --git a/files/es/mozilla/firefox/releases/19/index.html b/files/es/mozilla/firefox/releases/19/index.html new file mode 100644 index 0000000000..bf38aea264 --- /dev/null +++ b/files/es/mozilla/firefox/releases/19/index.html @@ -0,0 +1,66 @@ +--- +title: Firefox 19 para Desarrolladores +slug: Firefox_19_para_desarrolladores +translation_of: Mozilla/Firefox/Releases/19 +--- +
{{FirefoxSidebar}}
+ +

+

Quieres ayudar a documentar Firefox 19? Visita la lista de bugs que necesitan ser revisados e inicia!

+

+ +

Cambios para desarrolladores

+ +

JavaScript

+ + + +

CSS

+ + + +

DOM

+ + + +

XForms

+ +

Support for XForms has been removed in Firefox 19.

+ +

Changes for add-on and Mozilla developers

+ +
+

Note: A key change in Firefox 19 is that nsresult is now strongly typed. This will help make it easier to detect bugs that are caused by mishandling of return values, but may cause existing code to break if it's making incorrect assumptions in this regard.

+
+ + + +

See also

+ + + +

Older versions

+ +

{{Firefox_for_developers('18')}}

diff --git a/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html b/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html new file mode 100644 index 0000000000..5b8c50bc83 --- /dev/null +++ b/files/es/mozilla/firefox/releases/2/adding_feed_readers_to_firefox/index.html @@ -0,0 +1,51 @@ +--- +title: Añadir lectores de canales a Firefox +slug: Añadir_lectores_de_canales_a_Firefox +tags: + - RSS + - Todas_las_Categorías +translation_of: Mozilla/Firefox/Releases/2/Adding_feed_readers_to_Firefox +--- +
{{FirefoxSidebar}}

A partir de Firefox 2, Firefox permite seleccionar diferentes lectores de canales RSS o Atom para usarlos cuando se trata de leer un canal. Este artículo proporciona información sobre cómo añadir lectores adicionales no admitidos por defecto.

+ +

Añadir un nuevo lector de canales basado en la web

+ +

Para añadir un nuevo lector de canales basado en la web, todo lo que tiene que hacer es añadir tres nuevas preferencias:

+ +
+
browser.contentHandlers.types.número.title
+
El nombre del lector de canales.
+
browser.contentHandlers.types.número.type
+
Para un lector de canales, en este caso sería "application/vnd.mozilla.maybe.feed".
+
browser.contentHandlers.types.número.uri
+
La URI del lector de canales. Utilice "%s" donde se deba insertar la URL del canal.
+
+ +

número debe ser reemplazado con el siguiente número único más alto que no haya sido usado aún. Por ejemplo, si desea añadir un nuevo lector de canales llamado "Lector Sencillo", y ya están definidos manejadores de contenido con los números 0 al 4, debe sustituir número por 5, como sigue:

+ + + +

Puede añadir estas preferencias manualmente, visitando about:config, o puede programarlo, si una extensión desea instalar un nuevo lector de canales.

+ +

Añadir un lector de canales desde una aplicación web

+ +

El código JavaScript en la web puede añadir un lector de canales fácilmente, usando la función navigator.registerContentHandler(), de esta manera:

+ +
navigator.registerContentHandler("application/vnd.mozilla.maybe.feed",
+                                 "http://www.urllectorsencillo.com?feed=%s",
+                                 "Lector Sencillo");
+
+ +

Añadir una nueva aplicación lectora de canales

+ +

La manera más sencilla de hacer esto es simplemente usar la interfaz de usuario disponible, usando el panel Canales en la ventana de preferencias (u opciones, dependiendo de su plataforma).

+ +

También se puede hacer programáticamente mediante una extensión, lo cual se hace estableciendo el valor de la opción browser.feeds.handlers.application a la ruta de la aplicación a usar para leer los canales.

+ +
 
+ +

{{ languages( { "en": "en/Adding_feed_readers_to_Firefox", "ja": "ja/Adding_feed_readers_to_Firefox", "zh-tw": "zh_tw/\u65b0\u589e\u6d88\u606f\u4f86\u6e90\u95b1\u8b80\u5de5\u5177" } ) }}

diff --git a/files/es/mozilla/firefox/releases/2/index.html b/files/es/mozilla/firefox/releases/2/index.html new file mode 100644 index 0000000000..54da671995 --- /dev/null +++ b/files/es/mozilla/firefox/releases/2/index.html @@ -0,0 +1,157 @@ +--- +title: Firefox 2 para desarrolladores +slug: Firefox_2_para_desarrolladores +tags: + - CSS + - Complementos + - DOM + - Desarrollo_Web + - Estándares_Web + - HTML + - JavaScript + - RDF + - SVG + - Servicios_Web_XML + - Todas_las_Categorías + - XML + - XSLT + - XUL + - extensiones +translation_of: Mozilla/Firefox/Releases/2 +--- +
{{FirefoxSidebar}}

Nuevas características para desarrolladores en Firefox 2

+ +

Firefox 2 aporta gran cantidad de funcionalidades nuevas, este artículo proporciona enlaces que describen estas nuevas capacidades.

+ +

Para desarrolladores de sitios y aplicaciones web.

+ +
+
MicroResúmenes (en)
+
Son breves recopilaciones actualizables de la información más importante en una página Web. Pueden ser proporcionados por los desarrolladores del sitio o por terceros. Cuando se añade a marcadores una página con esta funcionalidad, los usuarios pueden escoger que se muestre este microresúmen en vez del típico título estático.
+
+ +
+
Cómo crear un Microresumen
+
Tutorial sobre cómo crear un generador de microresúmenes.
+
+ +
+
Marcado XML en los microresúmenes
+
Una guía de referencia sobre el marcado XML usado para crear microresúmenes.
+
+ +
+
Soporte OpenSearch
+
Firefox 2 admite el formato de búsqueda OpenSearch.
+
+ +
+
Creación de plugins MozSearch
+
Firefox 2 soporta MozSearch, un plugin de búsqueda basado en OpenSearch, pero previsto sólo para uso interno.
+
+ +
+
Permitir sugerencias en los plugins de búsqueda
+
Cómo hacer que su plugin MozSearch ofrezca sugerencias de búsqueda en una ventana emergente cuando usamos la barra de búsqueda.
+
+ +
+
Novedades en JavaScript 1.7
+
Firefox 2 soporta JavaScript 1.7, que incluye nuevas características como let, asignación desestructurada, generadores e iteradores, y "array comprehensions".
+
+ +
+
WHATWG Sesiones del lado cliente y el almacenamiento continuo (Almacenamiento DOM)
+
Las sesiones del lado cliente y el almacenamiento continuo permiten que las aplicaciones web puedan almacenar datos estructurados en el lado del cliente.
+
+ +
+
SVG en Firefox
+
Firefox 2 mejora el soporte a Gráficos Vectoriales Escalables (SVG), implementando el elemento <textPath> y aumentando el número de atributos soportados.
+
+ +
+
Control de la corrección ortográfica en formularios HTML
+
Firefox 2 incluye soporte para la revisión ortográfica en línea de los campos y áreas de texto. Este artículo describe cómo escribir HTML para activar o desactivar la revisión ortográfica en los elementos del formulario de manera individual.
+
+ +
+
Seguridad en Firefox 2
+
Firefox 2 cambia los protocolos de seguridad que están activos por defecto.
+
+ +

Para desarrolladores XUL y de extensiones

+ +
+
API de restauración de sesión
+
Aporta métodos para poder guardar y restaurar entre sesiones en Firefox.
+
+ +
+
API de acceso a canales
+
API que permite al desarrollador tener acceso y parsear canales Atom y RSS.
+
+ +
+
SAX
+
API de parseo basado en eventos XML.
+
+ +
+
Instalación de motores de búsqueda desde páginas web
+
Un código JavaScript puede indicarle a Firefox cómo instalar el plugin de un nuevo motor de búsqueda escrito en formato Sherlock u OpenSearch.
+
+ +
+
Añadir datos para la protección anti-phishing
+
Es posible aumentar la protección anti-phishing de Firefox añadiendo datos adicionales del proveedor para un sistema de navegación seguro.
+
+ +
+
Añadir lectores de canales a Firefox
+
Puedes añadir más lectores de canales a Firefox, ya sean webs o aplicaciones.
+
+ +
+
Almacenamiento
+
Firefox 2 presenta mozStorage, una arquitectura de base de datos basada en sqlite.
+
+ +
+
Cambios del tema en Firefox 2
+
Comenta los cambios necesarios para actualizar temas existentes para que funcionen en Firefox 2.
+
+ +

Nuevas características para usuarios finales

+ +

Firefox 2.0 proporciona una versión mejorada de la limpia interfaz que ofrecía en versiones anteriores. Con mejoras de seguridad para que tu experiencia en línea sea más segura y práctica que nunca.

+ +

Experiencia de usuario

+ + + +

Seguridad y privacidad

+ + + +

Vea también

+ + + +

Categorías

+ +

Interwiki links

+ +

{{ languages( { "ca": "ca/Firefox_2_per_a_desenvolupadors", "en": "en/Firefox_2_for_developers", "fr": "fr/Firefox_2_pour_les_d\u00e9veloppeurs", "it": "it/Firefox_2.0_per_Sviluppatori", "ja": "ja/Firefox_2_for_developers", "ko": "ko/Firefox_2_for_developers", "pl": "pl/Firefox_2_dla_programist\u00f3w", "pt": "pt/Firefox_2_para_desenvolvedores", "zh-tw": "zh_tw/Firefox_2_\u6280\u8853\u6587\u4ef6" } ) }}

diff --git a/files/es/mozilla/firefox/releases/2/security_changes/index.html b/files/es/mozilla/firefox/releases/2/security_changes/index.html new file mode 100644 index 0000000000..43b55fff7c --- /dev/null +++ b/files/es/mozilla/firefox/releases/2/security_changes/index.html @@ -0,0 +1,13 @@ +--- +title: Seguridad en Firefox 2 +slug: Seguridad_en_Firefox_2 +tags: + - Seguridad + - Todas_las_Categorías +translation_of: Mozilla/Firefox/Releases/2/Security_changes +--- +
{{FirefoxSidebar}}

Firefox 2 tiene tanto SSLv2 como la débil "exportación" de juegos de claves desactivados por defecto, en favor de SSLv3. Esto proporciona mejoras en la seguridad.

+ +

Los métodos preferidos de encriptación son TLS_DHE_DSS_WITH_3DES_EDE_CBC_SHA y TLS_RSA_WITH_3DES_EDE_CBC_SHA. Algunos sevidores se refieren a ellos como SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA y SSL_RSA_WITH_3DES_EDE_CBC_SHA.

+ +

Si el soporte SSLv2 tuviera que ser activado, puede hacerse cambiando en las preferencias de usuario el valor security.ssl2.* deseado a true.

diff --git a/files/es/mozilla/firefox/releases/3.5/index.html b/files/es/mozilla/firefox/releases/3.5/index.html new file mode 100644 index 0000000000..5043206fe8 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3.5/index.html @@ -0,0 +1,231 @@ +--- +title: Firefox 3.5 para desarrolladores +slug: Firefox_3.5_para_desarrolladores +translation_of: Mozilla/Firefox/Releases/3.5 +--- +
{{FirefoxSidebar}}

Firefox 3.5 implementa nuevas funcionalidades, además de agregar y mejorar el funcionamiento de una amplia variedad de estándares web. Este artículo ofrece una extensa lista con enlaces a artículos que explican estas grandes mejoras.

+ +

Nuevas funcionalidades para desarrolladores en Firefox 3.5

+ +

Para desarrolladores de sitios y aplicaciones web

+ +

Funciones de HTML 5

+ +
+
Usar audio y video en Firefox
+
Firefox 3.5 implementa los elementos  audio y video de HTML 5.
+
Recursos sin conexión en Firefox
+
Firefox 3.5 implementa de forma completa la especificación para recursos sin conexión de HTML 5.
+
Arrastrar y soltar (Drag and drop)
+
La API para arrastrar y soltar de HTML 5 permite que el usuario pueda arrastrar y soltar objetos entre sitios web. También permite una API más simple para el uso por parte de las extensiones o aplicaciones basadas en la plataforma Mozilla.
+
+ +

Nuevas características de CSS implementadas

+ +
+
Tipografías descargables
+
La nueva regla {{cssxref("@font-face")}} permite a las páginas web disponer de tipografías descargables, para que los sitios web puedan ser visualizados como el autor lo pretende.
+
Pedidos de CSS según el medio
+
Firefox 3.5 implementa esta característica que permite al autor del sitio web tener más control sobre el archivo CSS que cada dispositivo va a recibir según las características del mismo.
+
{{cssxref(":before")}} y {{cssxref(":after")}} actualizados a CSS 2.1
+
Los pseudo-elementos :before y :after han sido actualizados para implementar por completo las características de CSS 2.1, añadiendo la posibilidad de usar position, float, list-style-* y algunas propiedades de display.
+
opacity
+
La extensión al CSS -moz-opacity fue eliminada para implementar la propiedad estandar opacity.
+
text-shadow
+
La propiedad text-shadow, que permite especificar efectos de sombra para textos y decoraciones del texto, está implementada.
+
word-wrap
+
Esta propiedad permite especificar cuando las líneas deben o no ser cortadas entre palabras para prevenir el overflow cuando una línea que no puede ser cortada es demasiado larga para entrar en una sola línea.
+
-moz-box-shadow
+
-moz-border-image
+
-moz-column-rule
+
-moz-column-rule-width
+
-moz-column-rule-style
+
-moz-column-rule-color
+
Firefox 3.5 añade la posibilidad de usar estas extensiones al CSS de Mozilla.
+
The -moz-nativehyperlinktext color value
+
Este nuevo valor del color representa el predefinido por el sistema del usuario para los hipervínculos.
+
Las nuevas propiedades -moz-window-shadow y -moz-system-metric(mac-graphite-theme)
+
Estas nuevas propiedades de CSS fueron añadidas para facilitar la creación de temas.
+
Nuevos valores para -moz-appearance
+
Los valores -moz-win-glass y -moz-mac-unified-toolbar se agregaron a -moz-appearance.
+
Usar transformaciones CSS
+
Firefox 3.5 implementa las transformaciones CSS.  Mirá -moz-transform y -moz-transform-origin para saber más detalles.
+
:nth-child
+
:nth-last-child
+
:nth-of-type
+
:nth-last-of-type
+
:first-of-type
+
:last-of-type
+
:only-of-type
+
Estos selectores pueden ser usados en Firefox 3.5.
+
+ +

Nuevas funcionalidades del DOM

+ +
+
localStorage
+
Firefox 3.5 implementa el uso de la propiedad localStorage del Web Storage, que permite que las aplicaciones web guarden datos en la computadora del cliente.
+
Usar DOM workers
+
Firefox 3.5 implementa los trabajadores (workers) del DOM lo que permite el multi-threading en las aplicaciones web.
+
Usar geolocalización
+
Firefox 3.5 implementa la API de geolocalización, que permite que las aplicaciones web obtengan información sobre la ubicación actual del usuario si unu proveedor de ese servicio está instalado y habilitado.
+
Usar JSON en Firefox
+
Posibilidad de usar JSON en el DOM.
+
Localizar elementos del DOM con selectores
+
El API de selectores permite pedirle a un documento que localice los elementos que coincidan con una regla seleccionada.
+
El objeto NodeIterator
+
El objeto NodeIterator permite recorrer la lista de nodos en un árbol del DOM.
+
El evento MozAfterPaint
+
Este nuevo evento del DOM es lanzado después de actualizar partes de una ventana.
+
El evento MozMousePixelScroll
+
Este nuevo evento del DOM permite detectar el desplazamiento con la rueda del ratón/mouse en lugar de los eventos basados en la línea de desplazamiento.
+
+ +

Nuevas funcionalidades JavaScript

+ +
+
Nuevo en JavaScript 1.8.1
+
Una introducción a todos los cambios de JavaScript 1.8.1.
+
Object.getPrototypeOf()
+
Este nuevo método retorna el prototipo de un objeto especificado.
+
Uso de JSON nativo
+
Firefox 3.5 tiene soporte para JSON nativo.
+
Nuevos métodos trim en el objeto String
+
El objeto String tiene ahora los métodos trim(), trimLeft(), y trimRight() .
+
+ +

Networking

+ +
+
Controles de acceso cross-site para HTTP
+
En Firefox 3.5, es ahora posible en las peticiones HTTP, incluyendo aquellas hechas por XMLHttpRequest, trabajar entre dominios si el servidor lo permite.
+
Eventos de progreso para XMLHttpRequest
+
Ahora se ofrecen eventos de progreso para que las extensiones puedan monitorizar el progreso de las peticiones.
+
Soporte XMLHttpRequest síncrono mejorado
+
DOM Timeout y Input Events son ahora soportados durante un XMLHttpRequest síncrono.
+
Control de prefetch de DNS
+
Firefox 3.5 ofrece prefetch de DNS, por el que resuelve nombres de dominio con anticipación para links incluidos en la página actual, para ahorrar tiempo cuando los enlaces son realmente clickados. Este artículo describe cómo puedes optimizar tu sitio web para desactivar el prefetch, o ajustar cómo opera el prefetch.
+
+ +

Nuevas funcionalidades Canvas

+ +
+
API de texto HTML 5 para elementos canvas
+
Los elementos Canvas ahora soportan la API de texto HTML 5.
+
Efectos de sombra en un canvas
+
Los efectos de sombra de Canvas son ahora soportados.
+
createImageData()
+
El método canvas createImageData() es ahora soportado, permitiendo al código crear específicamente un objeto ImageData en lugar de necesitar que sea hecho automáticamente. Esto puede mejorar el rendimiento de otros métodos ImageData evitando que deban crear el objeto.
+
Atributo moz-opaque
+
Añadido el atributo DOM moz-opaque, que permite al canvas saber si la translucencia será un factor. Si el canvas sabe que no hay translucencia, el rendimiento de pintado puede ser optimizado.
+
+ +

Nuevas funcionalidades SVG

+ +
+
Aplicar efectos SVG al contenido HTML
+
Ahora puedes aplicar efectos SVG a contenido HTML y XHTML; este artículo describe cómo.
+
+ +

Otras nuevas funcionalidades

+ +
+
Corrección de color ICC en Firefox
+
Firefox 3.5 ahora soporta corrección de color ICC para imágenes etiquetadas.
+
El atributo defer es ahora soportado en elementos script
+
Este atributo indica al navegador que puede escoger continuar parseando y renderizando la página sin esperar a que el script termine de ejecutarse.
+
+ +

Otras mejoras

+ + + +

For XUL and add-on developers

+ +

If you're an extension developer, you should start by reading Updating extensions for Firefox 3.5, which offers a helpful overview of what changes may affect your extension.

+ +

New components and functionality

+ +
+
Supporting private browsing mode
+
Firefox 3.5 offers Private Browsing mode, which doesn't record the user's activities.  Extensions may support private browsing following the guidelines offered by this article.
+
Security changes in Firefox 3.5
+
This article covers security-related changes in Firefox 3.5.
+
Theme changes in Firefox 3.5
+
This article covers theme-related changes in Firefox 3.5.
+
Monitoring WiFi access points
+
Code with UniversalXPConnect privileges can now monitor the list of available access points, getting information on their SSIDs, MAC addresses, and signal strength.  This can be used in tandem with Geolocation to offer WiFi-based location service.
+
+ +

Notable changes and improvements

+ + + +

New features for end users

+ +

User experience

+ +
+
Location aware browsing
+
If you choose, you may allow Firefox 3.5 to share information about your current location with web sites.  Firefox 3.5 can use information about the network you're connected to to share your location. Of course, it asks for your permission before doing so, to ensure your privacy.
+
Open audio and video support
+
Firefox 3.5 supports embedded video and audio using the open Ogg format, as well as WAV for audio. No plugins, no confusing error messages about needing to install something or other that turns out not to be available on your platform anyway.
+
Local data storage
+
Web applications can now use Web Storage's local storage capabilities to store data on your computer.  This is great for anything from site preferences to more complex data.
+
+ +

Security and privacy

+ +
+
Private Browsing
+
Need to use someone else's computer? Switch on Private Browsing mode and nothing will be recorded about your session, including cookies, history, and any other potentially private information.
+
Better privacy controls
+
The Privacy preference pane has been completely redesigned to offer users more control over their private information. Users can choose to retain or discard anything including history information, cookies, downloads, and form field information.  In addition, users can specify whether or not to include history and/or bookmarks in the location bar's automated suggestions, so you can keep private web addresses from popping up unexpectedly while typing in the location bar.
+
+ +

Performance

+ +
+
Faster JavaScript performance
+
JavaScript, the "J" in "AJAX," is sped up dramatically in Firefox 3.5 with the new TraceMonkey JavaScript engine.  Web applications are much faster than in Firefox 3.
+
Faster page rendering
+
Web content draws faster in Firefox 3.5, thanks to technologies such as "speculative parsing." Your users don't need to know what it means, other than "it makes things draw faster."
+
+ +

See also

+ + diff --git a/files/es/mozilla/firefox/releases/3/dom_improvements/index.html b/files/es/mozilla/firefox/releases/3/dom_improvements/index.html new file mode 100644 index 0000000000..dcc39ab4a6 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/dom_improvements/index.html @@ -0,0 +1,35 @@ +--- +title: Mejoras DOM en Firefox 3 +slug: Mejoras_DOM_en_Firefox_3 +tags: + - DOM + - Firefox 3 + - Todas_las_Categorías +translation_of: Mozilla/Firefox/Releases/3/DOM_improvements +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Firefox 3 ofrece una serie de mejoras sobre el Modelo de Objetos del Documento (DOM), especialmente en lo que se refiere a la implementación de extensiones de DOM añadidas por otros navegadores. Este artículo proporciona una lista de estas mejoras, además de enlaces a documentación más detallada.

+ + + +

Ver también

+ + + +

 

+ +
 
+ +

{{ languages( { "en": "en/DOM_improvements_in_Firefox_3", "fr": "fr/Am\u00e9liorations_DOM_dans_Firefox_3", "ja": "ja/DOM_improvements_in_Firefox_3", "pl": "pl/Poprawki_DOM_w_Firefoksie_3" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html b/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html new file mode 100644 index 0000000000..106a680dfa --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/full_page_zoom/index.html @@ -0,0 +1,46 @@ +--- +title: Zoom a página completa +slug: Zoom_a_página_completa +translation_of: Mozilla/Firefox/Releases/3/Full_page_zoom +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }} {{ Gecko_minversion_header(1.9) }}

+ +

El zoom a página completa (o sólo zoom completo) es una nueva característica que probablemente estará con Firefox 3. Puedes verla en funcionamiento en las actuales "trunk builds" desde Gecko 1.9a7. Mientras no exista aún UI puedes usar JavaScript y la interface XPCOM nsIMarkupDocumentViewer.

+ +

Ejemplo (xul:browser)

+ +

El siguiente ejemplo demuestra su uso para la ventana de navegación que posea actualmente el foco. Este es el típico uso para una extensión de Firefox.

+ +
var zoom = 1.5;
+var docViewer = getBrowser().mCurrentBrowser.markupDocumentViewer;
+docViewer.fullZoom = zoom;
+
+ +

Ejemplo (xul:iframe)

+ +

Puedes usar la característica de zoom completo incluso para un xul:iframe. Sin embargo, dado que un iframe no posee ninguna propiedad markupDocumentViewer, debemos primero obtenerla:

+ +
var zoom = 1.5;
+var iframe = document.getElementById("authorFrame");
+var contViewer = iframe.docShell.contentViewer;
+var docViewer = contViewer.QueryInterface(Components.interfaces.nsIMarkupDocumentViewer);
+docViewer.fullZoom = zoom;
+
+ +

Referencías

+ + + +

 

+ +
 
+ +

 

+ +
 
+ +

{{ languages( { "fr": "fr/Zoom_pleine_page", "ja": "ja/Full_page_zoom", "en": "en/Full_page_zoom" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/index.html b/files/es/mozilla/firefox/releases/3/index.html new file mode 100644 index 0000000000..1456bfb969 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/index.html @@ -0,0 +1,283 @@ +--- +title: Firefox 3 para desarrolladores +slug: Firefox_3_para_desarrolladores +tags: + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3 +--- +
{{FirefoxSidebar}}

Si eres un desarrollador que intenta ponerse al día con todas las nuevas características de Firefox 3, este es el lugar perfecto para empezar. Este artículo proporciona una lista de nuevos artículos que tratan sobre las características añadidas a Firefox 3. Aunque no cubre necesariamente todos los pequeños cambios, te ayudará a conocer mejor las mejoras más importantes.

+ +

 

+ +

Características nuevas para desarrolladores en Firefox 3

+ +

Para desarrolladores de sitios y aplicaciones web

+ +
+
Actualizar aplicaciones web para Firefox 3
+
Información sobre los cambios que se podrían necesitar para realizar un sitio o aplicación web y sacarle mayor ventaja a las nuevas características de Firefox 3.
+
+ +
+
Eventos online y offline
+
Firefox 3 implementa los eventos conectado y desconectado definidos por WHATWG, que permiten a aplicaciones y extensiones descubrir si una conexión activa de internet es disponible, además de detectar cuando hay conexión o desconexión.
+
+ +
+
Manipuladores de protocolo web
+
Ahora se puede registrar una aplicación web como manipulador de protocolo con el método navigator.registerProtocolHandler().
+
+ +
+
Dibujar texto usando canvas
+
Ahora se puede dibujar texto en canvas con una API no estándar implementada por Firefox 3.
+
+ +
+
Gestión de transformaciones en canvas
+
Firefox 3 administra los métodos transform() y setTransform() en canvases (lienzos).
+
+ +
+
El uso de microformatos
+
Firefox 3 tiene APIs que permiten trabajar con microformatos.
+
+ +

;Hojas de estilo alternativas :Firefox 3 implementa modelos alternativos de hojas de estilo API de objeto CSS.

+ +
+
Eventos arrastrar y soltar
+
Firefox 3 implementa nuevos eventos que se envían al nodo de origen cuando la operación de arrastre comienza y termina.
+
+ +
+
Gestión del foco en HTML
+
Se han implementado los atributos activeElement y hasFocus de la nueva especificación HTML 5.
+
+ +
+
Recursos en modo desconectado en Firefox
+
Firefox 3 permite ahora que las aplicaciones web soliciten que recursos puedan ser puestos en cache para ser ejecutados en modo desconectado.
+
+ +
+
Mejoras CSS en Firefox 3
+
Firefox 3 ofrece un número de mejoras en su implementación de CSS.
+
+ +
+
Mejoras DOM en Firefox 3
+
Firefox 3 ofrece mejoras en la implementación de DOM, incluyendo la gestión de varias extensiones de Internet Explorer al DOM.
+
+ +
+
Implementación de JavaScript 1.8
+
Firefox 3 ofrece JavaScript 1.8.
+
+ +
+
Implementación de EXSLT
+
Firefox 3 permite la utilización de una parte importante de las extensiones EXSLT y XSLT.
+
+ +
+
Mejoras SVG en Firefox 3
+
La implementación a SVG en Firefox 3 ha sido mejorada de manera significante, con muchos nuevos filtros, elementos, atributos y otras mejoras.
+
+ +
+
Gráficos PNG animados
+
Firefox 3 administra las imágenes animadas en formato PNG (APNG).
+
+ +

Para desarrolladores de XUL y de extensiones

+ +
Cambios y mejoras notables
+ +
+
Actualizar extensiones para Firefox 3
+
Una guía con las cosas que hay que hacer para poner al día una extensión para que trabaje con Firefox 3.
+
+ +
+
Mejoras XUL en Firefox 3
+
Firefox 3 ofrece varios nuevos elementos XUL, incluyendo escaleras deslizables, selectores de hora y fecha, y botones de incremento.
+
+ +
+
Plantillas en Firefox 3
+
Las plantillas han sido notablemente mejoradas en Firefox 3. Las mejoras más importantes es la posibilidad de usar procesadores de solicitud personalizada para permitir el uso de otras fuentes de datos que RDF.
+
+ +
+
Asegurando las actualizaciones
+
Para proporcionar actualizaciones más seguras de los complementos a los usuarios, ahora los complementos requieren proporcionar un método seguro para obtener las actualizaciones antes de ser instaladas. Los complementos alojados en AMO lo proporcionan automáticamente.
+
+ +
+
Migrar y usar el catálogo
+
Un artículo sobre como migrar una extensión existente para utilizar el API de catálogo.
+
+ +
+
Mejoras en el gestor de descargas en Firefox 3
+
El administrador de descargas de Firefox 3 contiene nuevas y mejoradas APIs, incluyendo la implementación de múltiples escuchas de progreso.
+
+ +
+
Uso de nsILoginManager
+
El administrador de contraseñas ha sido reemplazado por el nuevo Login Manager.
+
+ +
+
Integración de los vínculos XBL
+
Ya es posible utilizar el protocolo URL data: para integrar directamente los vínculos XBL en lugar de tener que colocarlos en un archivo XML por separado.
+
+ +
+
Traducir las descripciones de las extensiones
+
Firefox 3 ofrece un nuevo método localizando add-on metadata. Esto permite que los detalles localizados estén disponibles tan pronto como los add-on han sido descargados, al igual que cuando el add-on sea desinstalado.
+
+ +
+
Localización y plurales
+
Firefox 3 dispone del nuevo módulo PluralForm, el cual sirve para ayudar a poner correctamente en plural las palabras según el idioma local.
+
+ +
+
Cambios en los temas de Firefox 3
+
Notas e información para quienes quisiera crear temas para Firefox 3.
+
+ +
Nuevos componentes y funcionalidades
+ +
+
Biblioteca FUEL
+
FUEL sirve para facilitar la productividad de los desarrolladores de extensiones, reduciendo algunas formalidades de XPCOM y colocando algunas ideas "modernas" en JavaScript.
+
+ +
+
Catálogo
+
Las APIS del historial y de los marcadores han sido remplazadas completamente por la nueva API del Catálogo.
+
+ +
+
Servicio idle
+
Firefox 3 ofrece la nueva interfaz {{ Interface("nsIIdleService") }}, la cual permite a las extensiones determinar cuánto tiempo ha pasado desde que el usuario pulso una tecla o movió el ratón por última vez.
+
+ +
+
El convertidor ZIP
+
La nueva interfaz nsIZipWriter permite a las extensiones crear archivos ZIP.
+
+ +
+
Zoom a página completa
+
Firefox 3 mejora la experiencia de usuario ofreciendo zoom a página completa además de zoom de solo texto.
+
+ +
+
El colector de ciclo XPCOM
+
El código XPCOM puede beneficiarse del colector de ciclo, el cual ayuda a asegurar que la memoria no utilizada es liberada y evitar fugas de memoria.
+
+ +
+
El administrador de hilos
+
Firefox 3 proporciona la nueva interfaz {{ Interface("nsIThreadManager") }}, así como otras nuevas interfaces para hilos y eventos de hilos, los cuales proporcionan una manera apropiada de crear y administrar hilos en tu código.
+
+ +
+
Módulos JavaScript
+
Firefox 3 ofrece un nuevo mecanismo de código compartido que te permite crear módulos facilmente en JavaScript que pueden ser cargados por extensiones y aplicaciones para su uso, muy parecido a las librerías compartidas.
+
+ +
+
La interfaz nsIJSON
+
Firefox 3 ofrece la nueva interface {{ Interface("nsIJSON") }}, which offers high-performance encoding and decoding of JSON strings.
+
+ +
+
La interfaz nsIParentalControlsService
+
Ahora Firefox 3 implementa las características del control parental de Microsoft Windows Vista, y permite al cñodigo interactuar con él.
+
+ +
+
Usar las preferencias de contenido
+
Firefox 3 incluye un nuevo servicio para obtener y fijar configuraciones especificas para cada sitio web que pueden usar tanto las extensiones como el código principal para llevar un registro de las preferencias de usuarios en sitios individuales.
+
+ +
+
Vigilancia de plugins
+
Está disponible un nuevo componente del sistema de plugins para controlar el tiempo que les toma a los plugins (como por ejemplo: Macromedia Flash) ejecutar sus llamadas.
+
+ +

Bugs ya solucionados

+ +
+
Bugs importantes solucionados en Firefox 3
+
+ +

Nuevas características para el usuario final

+ +

Mejoras para el usuario

+ + + +

Seguridad y privacidad

+ + + +

Rendimiento

+ + + +

Lecturas relacionadas

+ + + +

 

+ +

{{ languages( { "en": "en/Firefox_3_for_developers", "fr": "fr/Firefox_3_pour_les_d\u00e9veloppeurs", "ja": "ja/Firefox_3_for_developers", "ko": "ko/Firefox_3_for_developers", "pl": "pl/Firefox_3_dla_programist\u00f3w", "pt": "pt/Firefox_3_para_desenvolvedores", "zh-tw": "zh_tw/Firefox_3_for_developers" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html b/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html new file mode 100644 index 0000000000..5dbc833d4a --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/notable_bugs_fixed/index.html @@ -0,0 +1,39 @@ +--- +title: Bugs importantes solucionados en Firefox 3 +slug: Bugs_importantes_solucionados_en_Firefox_3 +tags: + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3/Notable_bugs_fixed +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Este artículo es una lista de correcciones importantes de errores en Firefox 3 que no resultan obvios en la documentación.

+ + + +

Ver también

+ + + +

 

+ +
 
+ +

{{ languages( { "en": "en/Notable_bugs_fixed_in_Firefox_3", "fr": "fr/Bugs_importants_corrig\u00e9s_dans_Firefox_3", "ja": "ja/Notable_bugs_fixed_in_Firefox_3", "pl": "pl/Istotne_b\u0142\u0119dy_poprawione_w_Firefoksie_3" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/svg_improvements/index.html b/files/es/mozilla/firefox/releases/3/svg_improvements/index.html new file mode 100644 index 0000000000..701a6640f8 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/svg_improvements/index.html @@ -0,0 +1,62 @@ +--- +title: Mejoras SVG en Firefox 3 +slug: Mejoras_SVG_en_Firefox_3 +tags: + - Firefox 3 + - SVG + - Todas_las_Categorías +translation_of: Mozilla/Firefox/Releases/3/SVG_improvements +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Firefox 3 ofrece una mejor implementación de Gráficos Vectoriales Escalables (SVG) en comparación con versiones anteriores de Firefox. Aunque estas características están documentadas en otros sitios, este artículo puede servir como una lista que indique fácilmente qué características se han añadido en Firefox 3.

+ + + +

Vea también

+ + + +

 

+ +
 
+ +

{{ languages( { "en": "en/SVG_improvements_in_Firefox_3", "fr": "fr/Am\u00e9liorations_SVG_dans_Firefox_3", "ja": "ja/SVG_improvements_in_Firefox_3", "pl": "pl/Poprawki_SVG_w_Firefoksie_3" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/templates/index.html b/files/es/mozilla/firefox/releases/3/templates/index.html new file mode 100644 index 0000000000..499fa226a2 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/templates/index.html @@ -0,0 +1,27 @@ +--- +title: Plantillas en Firefox 3 +slug: Plantillas_en_Firefox_3 +tags: + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3/Templates +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Las plantillas se han mejorado enormemente en Firefox 3. La mejora más importante permite el uso de procesador de consultas personalizado para manejar otro tipo de fuentes de datos además de RDF. Esto es posible gracias a la nueva sintaxis de consultas. También se incluyen soporte para SQL (mozStorage) y fuentes de datos XML. Ya {{ interwiki('wikimo', 'XUL:Template_Features_in_1.9', 'está disponible') }} una descripción completa de las nuevas características para plantillas. ({{ Bug(285631) }})

+ +

Otras mejoras

+ + + +

Véase también

+ + + +

{{ languages( { "en": "en/Templates_in_Firefox_3", "fr": "fr/Templates_dans_Firefox_3", "ja": "ja/Templates_in_Firefox_3" } ) }}

diff --git a/files/es/mozilla/firefox/releases/3/updating_extensions/index.html b/files/es/mozilla/firefox/releases/3/updating_extensions/index.html new file mode 100644 index 0000000000..fc3f91addd --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/updating_extensions/index.html @@ -0,0 +1,161 @@ +--- +title: Actualizar extensiones para Firefox 3 +slug: Actualizar_extensiones_para_Firefox_3 +tags: + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3/Updating_extensions +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Este artículo ofrece información que será de utilidad para desarrolladores que deseen actualizar sus extensiones, para que éstas funcionen correctamente con Firefox 3.
+
+ Antes de continuar, queremos sugerirte algo: si el único cambio que requiere tu extensión es modificar el campo maxVersion en el manifiesto de instalación, la extensión está disponible en el servidor addons.mozilla.org y ¡no necesitarás actualizar tu extensión a una nueva versión! Simplemente usa el Panel de Control para desarrolladores en AMO para modificar maxVersion. De esta manera, puedes evitar el trabajo de tener que volver a revisar tu extensión.

+ +

 

+ +

Paso 1: Actualiza el manifiesto de instalación

+ +

El primer paso —y para la mayoría de las extensiones, el único que será necesario— es actualizar el archivo install.rdf dentro del manifiesto de instalación para indicar la compatibilidad con Firefox 3.

+ +

Sólo debes buscar la línea que indica la máxima versión compatible de Firefox, lo que para Firefox 2, probablemente sea:

+ +
 <em:maxVersion>2.0.*</em:maxVersion>
+
+ +

Cámbiala para indicar compatibilidad con Firefox 3:

+ +
 <em:maxVersion>3.0.*</em:maxVersion>
+
+ +

A continuación, reinstala la extensión.

+ +

Recuerda que en Firefox 3 no necesitas incluir el ".0" extra en el número de la versión. Por lo tanto, en lugar de escribir "3.0.0.*", sólo necesitas usar "3.0.*".

+ +

Ha habido (y continuará habiendo) una serie de cambios en las APIs, lo que muy probablemente averiará algunas extensiones. Aún estamos trabajando para confeccionar una lista completa de estos cambios.

+ +

Si tu extensión todavía usa un script Install.js en vez de un manifiesto de instalación, necesitas hacer la transición a un manifiesto de instalación lo más pronto posible. Firefox 3 no implementará el script install.js en documentos XPI.

+ +

Agregar localizaciones al manifiesto de instalación

+ +

Firefox 3 cuenta con tres nuevas propiedades en el manifiesto de instalación para especificar descripciones de localización. Los métodos antiguos todavía funcionan. Sin embargo, los nuevos permiten que Firefox escoja la localización, aún cuando la extensión esté deshabilitada o pendiente de instalación. Visita Localizar las_descripciones_de_las_extensiones para más detalles.

+ +

Paso 2: Asegúrate de suministrar actualizaciones seguras

+ +

Si suministras extensiones por tu propia cuenta y no usas un proveedor de hosting seguro como addons.mozilla.org, debes asegurarte de suministrar algún método seguro para la actualización de tus extensiones. Esto puede hacerse de dos formas: puedes usar un hosting con servicio de SSL o bien, puedes usar claves criptográficas para firmar la información de actualización. Lee Cómo hacer actualizaciones seguras para más información.

+ +

Paso 3: Debes estar al tanto de los cambios en las APIs

+ +

Muchas APIs han sido modificadas de forma significativa. Los cambios más importantes, que seguramente afectarán a muchas extensiones son:

+ +

DOM

+ +

Los nodos de documentos externos deberán copiarse idénticamente usando importNode() (o adoptarlos usando adoptNode()) antes de poder insertarlos en el documento actual. Para más información acerca de cuestiones relacionadas con ownerDocument, visita W3C DOM FAQ.

+ +

Actualmente, Firefox no exige hacerlo aunque sí lo hizo durante algún tiempo, durante el desarrollo de Firefox 3. Lo que ocurrió fue que muchos sitios sufrían averías cuando esta política era obligatoria. Nuestra recomendación para los desarrolladores web es que corrijan su código para cumplir con esta regla y así lograr una mejor compatibilidad a futuro.

+ +

Marcadores e Historial

+ +

Si de alguna forma tu extensión tiene acceso a Marcadores o Historial, necesitarás un gran esfuerzo para hacer que sea compatible con Firefox 3. Las APIs antiguas que daban acceso a esta información han sido reemplazadas por la nueva arquitectura Catálogo (Biblioteca). Visita la Guía para la migración a Catálogo (Biblioteca) para más detalles acerca de cómo actualizar tus extensiones para el uso de las APIs de Catálogo (Biblioteca).

+ +

Administrador de descargas

+ +

La API del Administrador de descargas ha cambiado ligeramente debido a la transición del almacén de datos RDF al uso de la API Almacenamiento. Esto debería ser una transición sencilla y fácil. Además , se ha modificado la API que controla los procesos de descarga para permitir varios receptores del administrador de descargas. Visita {{ Interface("nsIDownloadManager") }}, {{ Interface("nsIDownloadProgressListener") }} y Controlar descargas para más información.

+ +

Administrador de contraseñas

+ +

Si tu extensión tiene acceso a información de inicio de sesión de usuario en el Administrador de contraseñas, deberás actualizarla para poder utilizar la nueva API para el Administrador de inicio de sesión.

+ + + +

También puedes sobrescribir el almacén del administrador de contraseñas interno si quieres ofrecer tu propia implementación del almacén de contraseñas en la extensión. Visita Crear un módulo de almacenamiento para el Administrador de inicio de sesión para más detalles

+ +

Ventanas emergentes (Menús, Menús contextuales, Tooltips y Paneles)

+ +

En Firefox 3, se ha modificado sustancialmente el sistema XUL de ventanas emergentes. El sistema de ventanas emergentes ahora contempla menús principales, menús contextuales y paneles. Se ha creado una guía para Utilizar Ventanas emergentes que detalla cómo funciona este sistema. Algo que debes tener en cuenta, es que se desaconseja el uso de popup.showPopup en favor de los nuevos popup.openPopup y popup.openPopupAtScreen.

+ +
+

Autocompletar

+
+ +

El método handleEnter() de la interfaz nsIAutoCompleteController ha cambiado para aceptar un argumento que indique si el texto ha sido seleccionado desde una ventana emergente para Autocompletar o bien, por el usuario que ha pulsado la tecla Entrar (Enter) después de ingresar texto.

+ +

DOMParser

+ + + +

Interfaces eliminadas

+ +

Las siguientes interfaces han sido eliminadas en Gecko 1.9, el motor de renderizado de Firefox 3. Si tu extensión utiliza cualquiera de estas interfaces, deberás actualizar tu código:

+ + + +

Paso 4: Comprueba los cambios importantes en el chrome

+ +

Se ha producido un cambio menor en el chrome que puede requerir cambios en tu código. Se ha añadido un nuevo vbox llamado "browser-bottombox", que integra la barra de búsqueda y la barra de estado en la parte inferior de la ventana del navegador. Aunque esto no afecta la apariencia de la pantalla, puede que afecte tu extensión si el chrome se superpone, en relación a los elementos descriptos.

+ +

Por ejemplo, si has superpuesto algún elemento del chrome antes de la barra de estado de la siguiente manera:

+ +
<window id="main-window">
+  <something insertbefore="status-bar" />
+</window>
+
+ +

Debes cambiar tu código a algo que se parezca a:

+ +
<vbox id="browser-bottombox">
+  <something insertbefore="status-bar" />
+</vbox>
+
+ +

O bien, emplear la siguiente técnica para hacer que la superposición funcione en Firefox 2 y Firefox 3 por igual:

+ +
<window id="main-window">
+  <vbox id="browser-bottombox" insertbefore="status-bar">
+    <something insertbefore="status-bar" />
+  <vbox>
+</window>
+
+ +

{{ Note("Este cambio es efectivo para Firefox 3 beta 4 y la prebeta 4.") }}

+ +

Otros cambios

+ +

Añade aquí cambios sencillos que debas realizar cuando actualizas tu extensión para que funcione con Firefox 3.

+ + diff --git a/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html b/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html new file mode 100644 index 0000000000..e81f21fa49 --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/updating_web_applications/index.html @@ -0,0 +1,87 @@ +--- +title: Actualizar aplicaciones web para Firefox 3 +slug: Actualizar_aplicaciones_web_para_Firefox_3 +tags: + - Firefox 3 +translation_of: Mozilla/Firefox/Releases/3/Updating_web_applications +--- +
{{FirefoxSidebar}}
+ +

{{ Fx_minversion_header(3) }} Existen varios cambios en el próximo Firefox 3 que pueden afectar tu sitio web o aplicación web, así como nuevas características que se pueden aprovechar. Este artículo servirá como punto de partida para actualizar el contenido web de modo que se pueda aprovechar Firefox 3 al máximo.

+ +

Cambios DOM

+ + +

Nodes from external documents should be cloned using document.importNode() (or adopted using document.adoptNode()) before they + can be inserted into the current document. For more on the Node.ownerDocument issues, see the + W3C DOM FAQ.

+ +

Firefox doesn't currently enforce this rule (it did for a while during the development of Firefox 3, but too many + sites break when this rule is enforced). We encourage Web developers to fix their code to follow this rule for + improved future compatibility.

+ +

Cambios HTML

+ +

Cambios en el conjunto de caracteres de herencia

+ +

Firefox 3 cierra un fallo en la seguridad en frames e iframes que les permitía heredar el conjunto de caracteres de donde eran derivadas. Esto podría causar problemas en ciertos casos. Ahora, las frames están solamente permitidas a heredar el conjunto de caracteres si ambos frames y el conjunto de caracteres fue cargado del mismo servidor. Si tienes páginas que asumen que las frames fueron cargadas de otro servidor heredará el mismo conjunto de caracteres, deberías actualizar los HTML de las frames para indicar el conjunto de caracteres específicamente.

+ +

Cambios en el elemento SCRIPT

+ +

Ahora hay que cerrar el elemento <script> en text/html con </script> en los documentos de HTML 4, incluso si no hay contenido dentro. En las versiones previas de Firefox, bastaba con hacer:

+ +
<script ...   />
+
+ +

Ahora se deben cumplir las especificaciones de HTML (si se trata de un HTML), y por lo tanto se deben cerrar, así:

+ +
<script ...></script>
+
+ +

Esto mejora tanto la compatibilidad como la seguridad.

+ +

Cambios en CSS

+ +

Cambio al tamaño de fuente basado en unidades em, ex

+ +

Los valores de fuente en unidades em y ex solían ser afectadas por el tamaño mínimo de fuente utilizado por el usuario: si una fuente se desplegaba más grande debido al tamaño mínimo, el ajuste de las unidades em y ex para el tamaño de fuente basados en esta se incrementarían de forma acorde. Esto era inconsistente con la forma en que las fuentes basadas en porcentaje se comportaban.

+ +

Los valores del tamaño de fuente en unidades em y ex ahora están basadas en un "tamaño de fuente intencionado" que no se ve afectado por el tamaño mínimo de fuente del usuario. En otras palabras, los tamaños de la fuente se calculan de acuerdo a las intenciones del diseñador y se ajustan al tamaño mínimo de fuente después de ello.

+ +

Ver {{ Bug(322943) }} para una demostración (se debe ver con un tamaño mínimo de fuente 6 para detectar la diferencia: las dos cajas en cascada se comportan diferente en Firefox 2, porque el tamaño de fuente basado en em "retorna" el tamaño mínimo de fuente.

+ +

Cambios de seguridad

+ +

Acceso Chrome

+ +

En versiones anteriores de Firefox, cualquier página web podía cargar scripts o imágenes chrome:// usando el protocolo chrome. Entre otras cosas, esto hizo posible que algunos sitios no detectaran la presencia de complementos,  lo cual podía ser usado para traspasar la seguridad del usuario saltando los complementos que agregaban medidas de seguridad al buscador.

+ +

Firefox 3 solo permite contenido web para acceder a los elementos en los espacios del chrome://browser/ y en espacio chrome://toolkit/. Estos archivos pretenden ser accesibles por el contenido web. Ahora cualquier otro contenido chrome es bloqueado para el sitio web.

+ +

Hay, sin embargo, métodos para ciertas extensiones que puden ser accedidos por la web. Se puede especificar una bandera en su archivo chrome.manifest de esta manera:

+ +
content mypackage location/ contentaccessible=yes
+
+ +

Esto no debería ser algo que se haga muy seguido, pero está disponible para aquellos casos raros en los que es necesario. Debe tomarse en cuenta que es posible que Firefox alerte al usuario que su extensión utiliza una bandera en el contentaccessible de alguna manera, ya que consituye un riesgo potencial en la seguridad.

+ +
Nota: Ya que Firefox 2 no entiende la bandera contentaccessible (ignorará la instrucción completa de que contiene la bandera), si se desea que el complemento sea compatible con Firefox 2 y Firefox 3, hay que hacer algo como esto: + +
content mypackage location/
+content mypackage location/ contentaccessible=yes
+
+
+ +

Campos para subir archivos

+ +

En versiones anteriores de Firefox, había casos en los que cuando el usuario seleccionaba un archivo para subir, la aplicación web podía ver la ruta completa del archivo. Esta pertinencia de privacidad ha sido resuelta en Firefox 3; ahora la aplicación web solo mostrará el nombre del archivo.

+ +

Cambios en JavaScript

+ +

Firefox 3 soporta JavaScript 1.8. Un cambio importante que quizás requiera actualizaciones en los sitios web o en las aplicaciones, es que los Script obsoletos y no-estandar no son soportados. Esto no es la etiqueta <script>, pero un objeto de JavaScript que nunca fue estandarizado. De cualquier manera es muy improbable que se use, así que probablemente no surgan problemas.

+ +

Vea también

+ + diff --git a/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html b/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html new file mode 100644 index 0000000000..e649db326a --- /dev/null +++ b/files/es/mozilla/firefox/releases/3/xul_improvements_in_firefox_3/index.html @@ -0,0 +1,109 @@ +--- +title: Mejoras XUL en Firefox 3 +slug: Mejoras_XUL_en_Firefox_3 +tags: + - Firefox 3 + - Todas_las_Categorías + - XUL +translation_of: Mozilla/Firefox/Releases/3/XUL_improvements_in_Firefox_3 +--- +
{{FirefoxSidebar}}

{{ Fx_minversion_header(3) }}

+ +

Firefox 3 proporciona varios nuevos elementos XUL, además de mejoras en los elementos existentes. Aún que este material se documenta en detalle en otro lugar, este artículo ofrece una buena lista de estas mejoras así como enlaces a la documentación detallada.

+ +

 

+ +

Los nuevos elementos

+ + + +

 

+ +

Las mejoras

+ +

en los árboles

+ + + +

de los menús

+ + + +

en las cajas de texto

+ + + +

Otras mejoras

+ + + +

Ver también

+ + + +

 

+ +

 

+ +

{{ languages( { "en": "en/XUL_improvements_in_Firefox_3", "fr": "fr/Am\u00e9liorations_XUL_dans_Firefox_3", "ja": "ja/XUL_improvements_in_Firefox_3", "pl": "pl/Poprawki_XUL_w_Firefoksie_3" } ) }}

-- cgit v1.2.3-54-g00ecf