browser.runtime

Descripción

Usa la API de chrome.runtime para recuperar el service worker, devolver detalles sobre el manifiesto, y escuchar y responder a eventos en el ciclo de vida de la extensión. También puedes usar esta API para convertir la ruta de acceso relativa de las URLs en URLs completamente calificadas.

La mayoría de los miembros de esta API no requieren ningún permiso. Este permiso es necesario para connectNative(), sendNativeMessage() y onNativeConnect.

En el siguiente ejemplo, se muestra cómo declarar el permiso "nativeMessaging" en el manifiesto:

manifest.json:

{
  "name": "My extension",
  ...
  "permissions": [
    "nativeMessaging"
  ],
  ...
}

Conceptos y uso

La API de Runtime proporciona métodos para admitir varias áreas que pueden usar tus extensiones:

Paso de mensajes
Tu extensión puede comunicarse con diferentes contextos dentro de ella y también con otras extensiones usando estos métodos y eventos: connect(), onConnect, onConnectExternal, sendMessage(), onMessage y onMessageExternal. Además, tu extensión puede pasar mensajes a aplicaciones nativas en el dispositivo del usuario con connectNative() y sendNativeMessage().
Accede a los metadatos de la extensión y la plataforma
Estos métodos te permiten recuperar varios datos de metadatos específicos sobre la extensión y la plataforma. Los métodos de esta categoría incluyen getManifest() y getPlatformInfo().
Administra el ciclo de vida y las opciones de las extensiones
Estas propiedades te permiten realizar algunas metaoperaciones en la extensión y mostrar la página de opciones. Los métodos y eventos de esta categoría incluyen onInstalled, onStartup, openOptionsPage(), reload(), requestUpdateCheck() y setUninstallURL().
Utilidades auxiliares
Estos métodos proporcionan utilidades, como la conversión de representaciones de recursos internos en formatos externos. Los métodos de esta categoría incluyen getURL().
Utilidades del modo kiosco
Estos métodos solo están disponibles en ChromeOS y existen principalmente para admitir implementaciones de kiosco. Los métodos de esta categoría incluyen restart() y restartAfterDelay()`.

Comportamiento de las extensiones sin empaquetar

Cuando se vuelve a cargar una extensión sin empaquetar, se trata como una actualización. Esto significa que el evento browser.runtime.onInstalled se activará con el motivo "update". Esto incluye cuando la extensión se vuelve a cargar con browser.runtime.reload().

Casos de uso

Cómo agregar una imagen a una página web

Para que una página web acceda a un recurso alojado en otro dominio, debe especificar la URL completa del recurso (p.ej., <img src="https://example.com/logo.png">). Lo mismo ocurre para incluir un recurso de extensión en una página web. Las dos diferencias son que los recursos de la extensión deben exponerse como recursos accesibles desde la Web y que, por lo general, las secuencias de comandos de contenido son responsables de insertar los recursos de la extensión.

En este ejemplo, la extensión agregará logo.png a la página en la que se inserta la secuencia de comandos de contenido con runtime.getURL() para crear una URL completamente calificada. Sin embargo, primero, el recurso debe declararse como un recurso accesible desde la Web en el manifiesto.

manifest.json:

{
  ...
  "web_accessible_resources": [
    {
      "resources": [ "logo.png" ],
      "matches": [ "https://*/*" ]
    }
  ],
  ...
}

content.js:

{ // Block used to avoid setting global variables
  const img = document.createElement('img');
  img.src = browser.runtime.getURL('logo.png');
  document.body.append(img);
}

Envía datos de una secuencia de comandos de contenido al service worker

Es común que las secuencias de comandos de contenido de una extensión necesiten datos administrados por otra parte de la extensión, como el service worker. Al igual que dos ventanas del navegador abiertas en la misma página web, estos dos contextos no pueden acceder directamente a los valores del otro. En su lugar, la extensión puede usar el paso de mensajes para coordinar estos diferentes contextos.

En este ejemplo, la secuencia de comandos de contenido necesita algunos datos del service worker de la extensión para inicializar su IU. Para obtener estos datos, pasa el mensaje get-user-data definido por el desarrollador al service worker, y este responde con una copia de la información del usuario.

content.js:

// 1. Send a message to the service worker requesting the user's data
browser.runtime.sendMessage('get-user-data', (response) => {
  // 3. Got an asynchronous response with the data from the service worker
  console.log('received user data', response);
  initializeUI(response);
});

service-worker.js:

// Example of a simple user data object
const user = {
  username: 'demo-user'
};

browser.runtime.onMessage.addListener((message, sender, sendResponse) => {
  // 2. A page requested user data, respond with a copy of `user`
  if (message === 'get-user-data') {
    sendResponse(user);
  }
});

Recopila comentarios sobre la desinstalación

Muchas extensiones usan encuestas posteriores a la desinstalación para comprender cómo la extensión podría brindar un mejor servicio a sus usuarios y mejorar la retención. En el siguiente ejemplo, se muestra cómo agregar esta funcionalidad.

background.js:

browser.runtime.onInstalled.addListener(details => {
  if (details.reason === browser.runtime.OnInstalledReason.INSTALL) {
    browser.runtime.setUninstallURL('https://example.com/extension-survey');
  }
});

Ejemplos

Consulta la demostración de Manifest V3: Recursos accesibles en la Web para ver más ejemplos de la API de Runtime.

Tipos

ContextFilter

Chrome 114 y versiones posteriores

Es un filtro para que coincida con ciertos contextos de extensión. Los contextos que coinciden deben cumplir con todos los filtros especificados. Cualquier filtro que no se especifique coincidirá con todos los contextos disponibles. Por lo tanto, un filtro de `{}` coincidirá con todos los contextos disponibles.

Propiedades

  • contextIds

    string[] opcional

  • contextTypes

    ContextType[] opcional

  • documentIds

    string[] opcional

  • documentOrigins

    string[] opcional

  • documentUrls

    string[] opcional

  • frameIds

    number[] opcional

  • incognito

    booleano opcional

  • tabIds

    number[] opcional

  • windowIds

    number[] opcional

ContextType

Chrome 114 y versiones posteriores

Enum

"TAB"
Especifica el tipo de contexto como una pestaña

"POPUP"
Especifica el tipo de contexto como una ventana emergente de extensión

"BACKGROUND"
Especifica el tipo de contexto como un service worker.

"OFFSCREEN_DOCUMENT"
Especifica el tipo de contexto como un documento fuera de pantalla.

"SIDE_PANEL"
Especifica el tipo de contexto como un panel lateral.

"DEVELOPER_TOOLS"
Especifica el tipo de contexto como herramientas para desarrolladores.

ExtensionContext

Chrome 114 y versiones posteriores

Un contexto que aloja contenido de extensiones.

Propiedades

  • ID de contexto

    string

    Un identificador único para este contexto

  • contextType

    Es el tipo de contexto al que corresponde.

  • documentId

    string opcional

    Es un UUID para el documento asociado con este contexto o no definido si este contexto no se aloja en un documento.

  • documentOrigin

    string opcional

    Es el origen del documento asociado con este contexto o no está definido si el contexto no está alojado en un documento.

  • documentUrl

    string opcional

    Es la URL del documento asociado con este contexto o no está definida si el contexto no se aloja en un documento.

  • frameId

    número

    Es el ID del marco de este contexto o -1 si este contexto no está alojado en un marco.

  • incognito

    booleano

    Indica si el contexto está asociado con un perfil de incógnito.

  • tabId

    número

    Es el ID de la pestaña de este contexto o -1 si este contexto no se aloja en una pestaña.

  • windowId

    número

    Es el ID de la ventana para este contexto o -1 si este contexto no se aloja en una ventana.

ExtensionLoadDetails

Chrome 157 o versiones posteriores

Son los detalles sobre el evento de carga de la extensión.

Propiedades

  • previousVersion

    string opcional

    Indica la versión anterior de la extensión. Este campo solo está presente si el valor de "reason" es "update" o "enable". Si el valor de "reason" es "update", esta es la versión de la extensión antes de que se actualizara. Si el valor de "reason" es "enable", esta es la versión actual de la extensión.

  • Es el motivo por el que se envía este evento.

MessageSender

Es un objeto que contiene información sobre el contexto de la secuencia de comandos que envió un mensaje o una solicitud.

Propiedades

  • documentId

    string opcional

    Chrome 106 y versiones posteriores

    Es un UUID del documento que abrió la conexión.

  • documentLifecycle

    string opcional

    Chrome 106 y versiones posteriores

    Es el ciclo de vida en el que se encuentra el documento que abrió la conexión en el momento en que se creó el puerto. Ten en cuenta que el estado del ciclo de vida del documento puede haber cambiado desde la creación del puerto.

  • frameId

    number opcional

    El marco que abrió la conexión. 0 para los marcos de nivel superior y positivo para los marcos secundarios. Este valor solo se establecerá cuando se configure tab.

  • id

    string opcional

    Es el ID de la extensión que abrió la conexión, si la hay.

  • nativeApplication

    string opcional

    Chrome 74 y versiones posteriores

    Es el nombre de la aplicación nativa que abrió la conexión, si la hay.

  • origin

    string opcional

    Chrome 80 y versiones posteriores

    Es el origen de la página o el marco que abrió la conexión. Puede variar de la propiedad url (p.ej., about:blank) o puede ser opaco (p.ej., iframes de zona de pruebas). Esto es útil para identificar si el origen es confiable si no podemos determinarlo de inmediato a partir de la URL.

  • tabulación

    Pestaña opcional

    El tabs.Tab que abrió la conexión, si lo hay. Esta propiedad solo estará presente cuando la conexión se haya abierto desde una pestaña (incluidas las secuencias de comandos de contenido) y solo si el receptor es una extensión, no una app.

  • tlsChannelId

    string opcional

    Es el ID del canal de TLS de la página o el marco que abrió la conexión, si la extensión lo solicita y si está disponible.

  • url

    string opcional

    Es la URL de la página o el marco que abrió la conexión. Si el remitente está en un iframe, será la URL del iframe, no la de la página que lo aloja.

OnInstalledReason

Chrome 44 y versiones posteriores

Es el motivo por el que se envía este evento.

Enum

"install"
Especifica el motivo del evento como una instalación.

"update"
Especifica el motivo del evento como una actualización de la extensión.

"chrome_update"
Especifica el motivo del evento como una actualización de Chrome.

"shared_module_update"
Especifica el motivo del evento como una actualización de un módulo compartido.

OnLoadedReason

Chrome 157 o versiones posteriores

Es el motivo por el que se envía este evento.

Enum

"install"
La extensión se instaló recientemente.

"update"
La extensión se volvió a cargar después de una actualización.

"browser_update"
El navegador se actualizó a una versión nueva.

"enable"
La extensión se volvió a habilitar desde un estado inhabilitado.

"startup"
La extensión se carga durante el inicio del navegador.

"reload"
La extensión se volvió a cargar (p.ej., a través de chrome.runtime.reload() o el usuario la volvió a cargar manualmente).

OnRestartRequiredReason

Chrome 44 y versiones posteriores

Es el motivo por el que se envía el evento. "app_update" se usa cuando se necesita reiniciar porque la aplicación se actualiza a una versión más reciente. "os_update" se usa cuando se necesita reiniciar porque el navegador o el SO se actualizan a una versión más reciente. "periodic" se usa cuando el sistema se ejecuta durante más tiempo que el tiempo de actividad permitido establecido en la política empresarial.

Enum

"app_update"
Especifica el motivo del evento como una actualización de la app.

"os_update"
Especifica el motivo del evento como una actualización del sistema operativo.

"periodic"
Especifica el motivo del evento como un reinicio periódico de la app.

PlatformArch

Chrome 44 y versiones posteriores

La arquitectura del procesador de la máquina.

Enum

"arm"
Especifica la arquitectura del procesador como arm.

"arm64"
Especifica la arquitectura del procesador como arm64.

"x86-32"
Especifica la arquitectura del procesador como x86-32.

"x86-64"
Especifica la arquitectura del procesador como x86-64.

"mips"
Especifica la arquitectura del procesador como mips.

"mips64"
Especifica la arquitectura del procesador como mips64.

"riscv64"
Especifica la arquitectura del procesador como riscv64.

PlatformInfo

Es un objeto que contiene información sobre la plataforma actual.

Propiedades

  • La arquitectura del procesador de la máquina.

  • nacl_arch
    Obsoleto desde Chrome 149

    Este atributo dejó de estar disponible tras la eliminación completa de Native Client.

    La arquitectura de cliente nativo. Esto puede ser diferente de arch en algunas plataformas.

  • Es el sistema operativo en el que se ejecuta Chrome.

PlatformNaclArch

Chrome 44 y versiones posteriores Obsoleta desde Chrome 149

Esta enumeración dejó de estar disponible tras la eliminación completa de Native Client.

La arquitectura de cliente nativo. Esto puede ser diferente de arch en algunas plataformas.

Enum

"arm"
Especifica la arquitectura de cliente nativo como arm.

"x86-32"
Especifica la arquitectura del cliente nativo como x86-32.

"x86-64"
Especifica la arquitectura del cliente nativo como x86-64.

"mips"
Especifica la arquitectura de cliente nativo como mips.

"mips64"
Especifica la arquitectura del cliente nativo como mips64.

PlatformOs

Chrome 44 y versiones posteriores

Es el sistema operativo en el que se ejecuta Chrome.

Enum

"mac"
Especifica el sistema operativo macOS.

"win"
Especifica el sistema operativo Windows.

"android"
Especifica el sistema operativo Android.

"cros"
Especifica el sistema operativo Chrome.

"linux"
Especifica el sistema operativo Linux.

"openbsd"
Especifica el sistema operativo OpenBSD.

Port

Es un objeto que permite la comunicación bidireccional con otras páginas. Consulta Conexiones de larga duración para obtener más información.

Propiedades

  • nombre

    string

    Es el nombre del puerto, como se especifica en la llamada a runtime.connect.

  • onDisconnect

    Event<functionvoidvoid>

    Se activa cuando el puerto se desconecta de los otros extremos. runtime.lastError se puede establecer si el puerto se desconectó por un error. Si el puerto se cierra a través de disconnect, este evento solo se activa en el otro extremo. Este evento se activa como máximo una vez (consulta también Vida útil del puerto).

    La función onDisconnect.addListener se ve de la siguiente manera:

    (callback: function) => {...}

    • callback

      función

      El parámetro callback se ve de la siguiente manera:

      (port: Port) => void

  • onMessage

    Event<functionvoidvoid>

    Este evento se activa cuando el otro extremo del puerto llama a postMessage.

    La función onMessage.addListener se ve de la siguiente manera:

    (callback: function) => {...}

    • callback

      función

      El parámetro callback se ve de la siguiente manera:

      (message: any, port: Port) => void

      • mensaje

        cualquiera

      • puerto
  • remitente

    MessageSender opcional

    Esta propiedad solo estará presente en los puertos que se pasen a los objetos de escucha onConnect, onConnectExternal y onConnectNative.

  • desconectar

    void

    Desconecta el puerto de inmediato. Llamar a disconnect() en un puerto que ya está desconectado no tiene ningún efecto. Cuando se desconecta un puerto, no se envían eventos nuevos a este puerto.

    La función disconnect se ve de la siguiente manera:

    () => {...}

  • postMessage

    void

    Envía un mensaje al otro extremo del puerto. Si el puerto está desconectado, se arroja un error.

    La función postMessage se ve de la siguiente manera:

    (message: any) => {...}

    • mensaje

      cualquiera

      Chrome 52 y versiones posteriores

      Es el mensaje que se enviará. Este objeto debe poder convertirse en JSON.

RequestUpdateCheckStatus

Chrome 44 y versiones posteriores

Es el resultado de la verificación de actualizaciones.

Enum

"throttled"
Especifica que se limitó la verificación de estado. Esto puede ocurrir después de realizar verificaciones repetidas en un período breve.

"no_update"
Especifica que no hay actualizaciones disponibles para instalar.

"update_available"
Especifica que hay una actualización disponible para instalar.

Propiedades

id

Es el ID de la extensión o app.

Tipo

string

lastError

Se completa con un mensaje de error si falla la llamada a una función de la API; de lo contrario, no se define. Esto solo se define dentro del alcance de la devolución de llamada de esa función. Si se produce un error, pero no se accede a runtime.lastError dentro de la devolución de llamada, se registra un mensaje en la consola que indica la función de la API que produjo el error. Las funciones de la API que devuelven promesas no establecen esta propiedad.

Tipo

objeto

Propiedades

  • mensaje

    string opcional

    Son los detalles sobre el error que se produjo.

Métodos

connect()

chrome.runtime.connect(
  extensionId?: string,
  connectInfo?: object,
)
: Port

Intenta conectar objetos de escucha dentro de una extensión (como la página en segundo plano) o con otras extensiones o apps. Esto es útil para las secuencias de comandos de contenido que se conectan a sus procesos de extensión, la comunicación entre apps y extensiones, y la mensajería web. Ten en cuenta que esto no se conecta a ningún objeto de escucha en una secuencia de comandos de contenido. Las extensiones pueden conectarse a secuencias de comandos de contenido incorporadas en pestañas a través de tabs.connect.

Parámetros

  • extensionId

    string opcional

    Es el ID de la extensión a la que se conectará. Si se omite, se intentará establecer una conexión con tu propia extensión. Es obligatorio si se envían mensajes desde una página web para la mensajería web.

  • connectInfo

    objeto opcional

    • includeTlsChannelId

      booleano opcional

      Indica si el ID del canal de TLS se pasará a onConnectExternal para los procesos que escuchan el evento de conexión.

    • nombre

      string opcional

      Se pasará a onConnect para los procesos que escuchan el evento de conexión.

Muestra

  • Es el puerto a través del cual se pueden enviar y recibir mensajes. El evento onDisconnect del puerto se activa si la extensión no existe.

connectNative()

chrome.runtime.connectNative(
  application: string,
)
: Port

Se conecta a una aplicación nativa en la máquina host. Este método requiere el permiso "nativeMessaging". Consulta Mensajería nativa para obtener más información.

Parámetros

  • aplicación

    string

    Es el nombre de la aplicación registrada a la que se conectará.

Muestra

  • Es el puerto a través del cual se pueden enviar y recibir mensajes con la aplicación.

getBackgroundPage()

Solo en primer plano Obsoleto desde Chrome 133
chrome.runtime.getBackgroundPage(): Promise<Window | undefined>

Las páginas en segundo plano no existen en las extensiones de MV3.

Recupera el objeto "window" de JavaScript para la página en segundo plano que se ejecuta dentro de la extensión o app actual. Si la página en segundo plano es una página de eventos, el sistema se asegurará de que se cargue antes de llamar a la devolución de llamada. Si no hay una página en segundo plano, se establece un error.

Muestra

  • Promise<Window | undefined>

    Chrome 99 y versiones posteriores

getContexts()

Chrome 116 y versiones posteriores MV3 y versiones posteriores
chrome.runtime.getContexts(
  filter: ContextFilter,
)
: Promise<ExtensionContext[]>

Recupera información sobre los contextos activos asociados con esta extensión

Parámetros

  • filter

    Es un filtro para encontrar contextos que coincidan. Un contexto coincide si coincide con todos los campos especificados en el filtro. Cualquier campo sin especificar en el filtro coincide con todos los contextos.

Muestra

  • Promise<ExtensionContext[]>

    Es la promesa que se resuelve con los contextos coincidentes, si los hay.

getManifest()

chrome.runtime.getManifest(): object

Muestra detalles sobre la app o extensión del manifiesto. El objeto que se devuelve es una serialización del archivo de manifiesto completo.

Muestra

  • objeto

    Son los detalles del manifiesto.

getPackageDirectoryEntry()

Solo en primer plano
chrome.runtime.getPackageDirectoryEntry(): Promise<DirectoryEntry>

Devuelve un DirectoryEntry para el directorio del paquete.

Muestra

  • Promise<DirectoryEntry>

    Chrome 122 y versiones posteriores

getPlatformInfo()

chrome.runtime.getPlatformInfo(): Promise<PlatformInfo>

Devuelve información sobre la plataforma actual.

Muestra

  • Promise<PlatformInfo>

    Chrome 99 y versiones posteriores

    Es una promesa que se resuelve con información sobre la plataforma actual.

getURL()

chrome.runtime.getURL(
  path: string,
)
: string

Convierte una ruta de acceso relativa dentro de un directorio de instalación de una app o extensión en una URL completamente calificada.

Parámetros

  • ruta de acceso

    string

    Es una ruta de acceso a un recurso dentro de una app o extensión expresada en relación con su directorio de instalación.

Muestra

  • string

    Es la URL completamente calificada del recurso.

getVersion()

Chrome 143 y versiones posteriores
chrome.runtime.getVersion(): string

Muestra la versión de la extensión como se declara en el manifiesto.

Muestra

  • string

    Es la versión de la extensión.

openOptionsPage()

chrome.runtime.openOptionsPage(): Promise<void>

Si es posible, abre la página de opciones de la extensión.

El comportamiento preciso puede depender de la clave options_ui o options_page de tu manifiesto, o de lo que Chrome admita en ese momento. Por ejemplo, la página se puede abrir en una pestaña nueva, en chrome://extensions, en una app o simplemente puede enfocar una página de opciones abierta. Nunca hará que se vuelva a cargar la página que realiza la llamada.

Si tu extensión no declara una página de opciones o Chrome no pudo crear una por algún otro motivo, la devolución de llamada establecerá lastError.

Muestra

  • Promise<void>

    Chrome 99 y versiones posteriores

reload()

chrome.runtime.reload(): void

Vuelve a cargar la app o extensión. Este método no se admite en el modo kiosco. Para el modo kiosco, usa el método chrome.runtime.restart().

requestUpdateCheck()

chrome.runtime.requestUpdateCheck(): Promise<object>

Solicita que se realice una verificación de actualización inmediata para esta app o extensión.

Importante: La mayoría de las extensiones o apps no deberían usar este método, ya que Chrome realiza verificaciones automáticas cada pocas horas y puedes escuchar el evento runtime.onUpdateAvailable sin necesidad de llamar a requestUpdateCheck.

Este método solo es apropiado para llamar en circunstancias muy limitadas, como si tu extensión se comunica con un servicio de backend y este determinó que la versión de la extensión del cliente está muy desactualizada y quieres solicitarle al usuario que la actualice. La mayoría de los demás usos de requestUpdateCheck, como llamarlo de forma incondicional en función de un temporizador repetitivo, probablemente solo sirvan para desperdiciar recursos del cliente, la red y el servidor.

Nota: Cuando se llama con una devolución de llamada, en lugar de devolver un objeto, esta función devolverá las dos propiedades como argumentos separados que se pasan a la devolución de llamada.

Muestra

  • Promise<object>

    Chrome 109 y versiones posteriores

restart()

chrome.runtime.restart(): void

Reinicia el dispositivo ChromeOS cuando la app se ejecute en modo kiosco. De lo contrario, no se realiza ninguna operación.

restartAfterDelay()

Chrome 53 y versiones posteriores
chrome.runtime.restartAfterDelay(
  seconds: number,
)
: Promise<void>

Reinicia el dispositivo ChromeOS cuando la app se ejecute en modo kiosco después de los segundos indicados. Si se vuelve a llamar antes de que finalice el tiempo, se retrasará el reinicio. Si se llama con un valor de -1, se cancelará el reinicio. No se realiza ninguna operación en el modo que no es kiosco. Solo la primera extensión que invoque esta API puede llamarla de forma repetida.

Parámetros

  • segundos

    número

    Es el tiempo de espera en segundos antes de reiniciar el dispositivo, o -1 para cancelar un reinicio programado.

Muestra

  • Promise<void>

    Chrome 99 y versiones posteriores

    Es una promesa que se resuelve cuando se reprograma correctamente una solicitud de reinicio.

sendMessage()

chrome.runtime.sendMessage(
  extensionId?: string,
  message: any,
  options?: object,
)
: Promise<any>

Envía un solo mensaje a los objetos de escucha de eventos dentro de tu extensión o de una extensión o app diferente. Es similar a runtime.connect, pero solo envía un mensaje, con una respuesta opcional. Si se envía a tu extensión, el evento runtime.onMessage se activará en cada marco de tu extensión (excepto en el marco del remitente) o runtime.onMessageExternal, si se trata de una extensión diferente. Ten en cuenta que las extensiones no pueden enviar mensajes a las secuencias de comandos de contenido con este método. Para enviar mensajes a las secuencias de comandos de contenido, usa tabs.sendMessage.

Parámetros

  • extensionId

    string opcional

    Es el ID de la extensión a la que se enviará el mensaje. Si se omite, el mensaje se enviará a tu propia extensión o app. Es obligatorio si se envían mensajes desde una página web para la mensajería web.

  • mensaje

    cualquiera

    Es el mensaje que se enviará. Este mensaje debe ser un objeto que se pueda convertir en JSON.

  • opciones

    objeto opcional

    • includeTlsChannelId

      booleano opcional

      Indica si el ID del canal de TLS se pasará a onMessageExternal para los procesos que escuchan el evento de conexión.

Muestra

  • Promise<any>

    Chrome 99 y versiones posteriores

    En Chrome 99, se agregó compatibilidad con promesas para los contextos de extensiones. Cuando se comunica desde una página web a una extensión, las promesas están disponibles a partir de Chrome 118.

sendNativeMessage()

chrome.runtime.sendNativeMessage(
  application: string,
  message: object,
)
: Promise<any>

Envía un solo mensaje a una aplicación nativa. Este método requiere el permiso "nativeMessaging".

Parámetros

  • aplicación

    string

    Es el nombre del host de mensajería nativa o los detalles del destino.

  • mensaje

    objeto

    Es el mensaje que se pasará al host de mensajería nativa.

Muestra

  • Promise<any>

    Chrome 99 y versiones posteriores

setUninstallURL()

chrome.runtime.setUninstallURL(
  url: string,
)
: Promise<void>

Establece la URL que se visitará cuando se desinstale la extensión. Esto se puede usar para limpiar los datos del servidor, realizar análisis y aplicar encuestas. Se admiten hasta 1,023 caracteres.

Parámetros

  • url

    string

    Es la URL que se abrirá después de que se desinstale la extensión. Esta URL debe tener un esquema http: o https:. Establece una cadena vacía para que no se abra una pestaña nueva después de la desinstalación.

Muestra

  • Promise<void>

    Chrome 99 y versiones posteriores

    Es una promesa que se resuelve cuando se establece la URL de desinstalación. Si la URL proporcionada no es válida, se rechazará la promesa.

Eventos

onBrowserUpdateAvailable

Obsoleto
chrome.runtime.onBrowserUpdateAvailable.addListener(
  callback: function,
)

Usa runtime.onRestartRequired.

Se activa cuando hay una actualización de Chrome disponible, pero no se instala de inmediato porque se requiere reiniciar el navegador.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    () => void

onConnect

chrome.runtime.onConnect.addListener(
  callback: function,
)

Se activa cuando se establece una conexión desde un proceso de extensión o una secuencia de comandos de contenido (por runtime.connect).

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (port: Port) => void

onConnectExternal

chrome.runtime.onConnectExternal.addListener(
  callback: function,
)

Se activa cuando se establece una conexión desde otra extensión (por runtime.connect) o desde un sitio web conectable de forma externa.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (port: Port) => void

onConnectNative

Chrome 76 o versiones posteriores
chrome.runtime.onConnectNative.addListener(
  callback: function,
)

Se activa cuando se establece una conexión desde una aplicación nativa. Este evento requiere el permiso "nativeMessaging". Solo es compatible con ChromeOS.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (port: Port) => void

onEnabled

Chrome 155 y versiones posteriores
chrome.runtime.onEnabled.addListener(
  callback: function,
)

Se activa cuando una extensión pasa de un estado inhabilitado a uno habilitado.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    () => void

onExtensionLoaded

Chrome 157 o versiones posteriores
chrome.runtime.onExtensionLoaded.addListener(
  callback: function,
)

Se activa cuando la extensión se agrega al conjunto de extensiones activas. Esto puede ocurrir en varias situaciones: cuando se instala una extensión por primera vez, se actualiza a una versión nueva, se vuelve a habilitar después de inhabilitarla, se vuelve a cargar, se carga durante el inicio del navegador o se carga cuando el navegador se actualiza a una versión nueva.

Parámetros

onInstalled

chrome.runtime.onInstalled.addListener(
  callback: function,
)

Se activa cuando se instala la extensión por primera vez, cuando se actualiza a una versión nueva y cuando Chrome se actualiza a una versión nueva.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (details: object) => void

    • detalles

      objeto

      • id

        string opcional

        Indica el ID de la extensión del módulo compartido importado que se actualizó. Solo está presente si el valor de "reason" es "shared_module_update".

      • previousVersion

        string opcional

        Indica la versión anterior de la extensión, que se acaba de actualizar. Este campo solo está presente si el valor de "reason" es "update".

      • Es el motivo por el que se envía este evento.

onMessage

chrome.runtime.onMessage.addListener(
  callback: function,
)

Se activa cuando se envía un mensaje desde runtime.sendMessage o tabs.sendMessage.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (message: any, sender: MessageSender, sendResponse: function) => boolean | Promise<any> | undefined

    • mensaje

      cualquiera

    • remitente
    • sendResponse

      función

      El parámetro sendResponse se ve de la siguiente manera:

      (response?: any) => void

      • respuesta

        any optional

        Es la respuesta que se devolverá al remitente del mensaje.

    • muestra

      boolean | Promise<any> | undefined

onMessageExternal

chrome.runtime.onMessageExternal.addListener(
  callback: function,
)

Se activa cuando se envía un mensaje desde otra extensión (por runtime.sendMessage). No se puede usar en una secuencia de comandos de contenido.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (message: any, sender: MessageSender, sendResponse: function) => boolean | Promise<any> | undefined

    • mensaje

      cualquiera

    • remitente
    • sendResponse

      función

      El parámetro sendResponse se ve de la siguiente manera:

      (response?: any) => void

      • respuesta

        any optional

        Es la respuesta que se devolverá al remitente del mensaje.

    • muestra

      boolean | Promise<any> | undefined

onRestartRequired

chrome.runtime.onRestartRequired.addListener(
  callback: function,
)

Se activa cuando se debe reiniciar una app o el dispositivo en el que se ejecuta. La app debe cerrar todas sus ventanas lo antes posible para que se produzca el reinicio. Si la app no hace nada, se aplicará un reinicio después de un período de gracia de 24 horas. Actualmente, este evento solo se activa para las aplicaciones de kiosco de ChromeOS.

Parámetros

onStartup

chrome.runtime.onStartup.addListener(
  callback: function,
)

Se activa cuando se inicia por primera vez un perfil que tiene instalada esta extensión. Este evento no se activa cuando se inicia un perfil de incógnito, incluso si esta extensión funciona en el modo Incógnito "dividido".

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    () => void

onSuspend

chrome.runtime.onSuspend.addListener(
  callback: function,
)

Se envía a la página de eventos justo antes de que se descargue. Esto le da a la extensión la oportunidad de realizar una limpieza. Ten en cuenta que, como la página se está descargando, no se garantiza que se completen las operaciones asíncronas que se inicien mientras se controla este evento. Si se produce más actividad en la página de eventos antes de que se descargue, se enviará el evento onSuspendCanceled y no se descargará la página.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    () => void

onSuspendCanceled

chrome.runtime.onSuspendCanceled.addListener(
  callback: function,
)

Se envía después de onSuspend para indicar que, después de todo, no se descargará la app.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    () => void

onUpdateAvailable

chrome.runtime.onUpdateAvailable.addListener(
  callback: function,
)

Se activa cuando hay una actualización disponible, pero no se instala de inmediato porque la app se está ejecutando. Si no haces nada, la actualización se instalará la próxima vez que se descargue la página en segundo plano. Si quieres que se instale antes, puedes llamar explícitamente a chrome.runtime.reload(). Si tu extensión usa una página en segundo plano persistente, esta nunca se descargará, por lo que, a menos que llames a chrome.runtime.reload() manualmente en respuesta a este evento, la actualización no se instalará hasta la próxima vez que se reinicie Chrome. Si no hay controladores que escuchen este evento y tu extensión tiene una página en segundo plano persistente, se comporta como si se llamara a chrome.runtime.reload() en respuesta a este evento.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (details: object) => void

    • detalles

      objeto

      • versión

        string

        Es el número de versión de la actualización disponible.

onUserScriptConnect

Chrome 115 y versiones posteriores MV3 y versiones posteriores
chrome.runtime.onUserScriptConnect.addListener(
  callback: function,
)

Se activa cuando se establece una conexión desde una secuencia de comandos del usuario de esta extensión.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (port: Port) => void

onUserScriptMessage

Chrome 115 y versiones posteriores MV3 y versiones posteriores
chrome.runtime.onUserScriptMessage.addListener(
  callback: function,
)

Se activa cuando se envía un mensaje desde una secuencia de comandos del usuario asociada con la misma extensión.

Parámetros

  • callback

    función

    El parámetro callback se ve de la siguiente manera:

    (message: any, sender: MessageSender, sendResponse: function) => boolean | undefined

    • mensaje

      cualquiera

    • remitente
    • sendResponse

      función

      El parámetro sendResponse se ve de la siguiente manera:

      (response?: any) => void

      • respuesta

        any optional

        Es la respuesta que se devolverá al remitente del mensaje.

    • muestra

      boolean | undefined