Command Palette

Search for a command to run...

iFrames

Gestiona datos de actividad que viven dentro de marcos incrustados.

Los scripts de presencia en iFrames están disponibles como función opcional. Establece iframe en true y proporciona iFrameRegExp en metadata.json.

Configurar una presencia iFrame

Añade el patrón de URL de los marcos anidados en metadata.json:

{
  "iframe": true,
  "iFrameRegExp": "player\\.example\\.com/embed/"
}

Crea un archivo iframe.ts junto a presence.ts. Se ejecutará dentro de los marcos anidados que coincidan:

const iframe = new iFrame()

iframe.on("UpdateData", () => {
  const video = document.querySelector("video")
  if (!video) return

  iframe.send({
    video: {
      paused: video.paused,
      currentTime: video.currentTime,
      duration: video.duration,
      title: document.querySelector(".video-title")?.textContent,
    },
  })
})

Recibe los datos en presence.ts:

presence.on("iFrameData", (data) => {
  // Combina o reemplaza los datos del marco correspondiente.
  iFrameData = data
})

iFrameData se emite una vez por mensaje. Si hay varios marcos, identifica o combina sus datos en la presencia principal. iFrameRegExp se compara con la URL del marco anidado.

Enfoque recomendado

Usa el manejo de iframes solo cuando la página principal no pueda acceder al estado requerido.

Prefiere selectores DOM estables, elementos multimedia y estado público de la página antes de añadir lógica de iframes.

Seguridad

Evita recopilar datos personales o sensibles de los marcos. Una presencia solo debe enviar información de actividad útil para Discord Rich Presence.