Command Palette

Search for a command to run...

iFrames

Trate dados de atividade que vivem dentro de quadros incorporados.

Os scripts de presença em iFrames são suportados como um recurso opcional. Defina iframe como true e informe iFrameRegExp em metadata.json.

Configurar uma presença em iFrame

Adicione o padrão de URL dos frames aninhados em metadata.json:

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

Crie um arquivo iframe.ts ao lado de presence.ts. Ele será executado nos frames aninhados correspondentes:

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,
    },
  })
})

Receba os dados em presence.ts:

presence.on("iFrameData", (data) => {
  iFrameData = data
})

iFrameData é emitido uma vez por mensagem. Com vários frames, identifique ou combine os dados na presença principal. iFrameRegExp é comparado com a URL do frame aninhado.

Abordagem recomendada

Use a manipulação de iframes apenas quando a página principal não conseguir acessar o estado necessário.

Prefira seletores DOM estáveis, elementos de mídia e estado público da página antes de adicionar lógica de iframe.

Segurança

Evite coletar dados pessoais ou sensíveis de frames. Uma presença deve enviar apenas informações de atividade úteis para a Discord Rich Presence.