Skip to content

Instantly share code, notes, and snippets.

@brunohubner
Created April 12, 2025 19:43
Show Gist options
  • Select an option

  • Save brunohubner/8f6581f01d01d56b2f5da9417e6e9013 to your computer and use it in GitHub Desktop.

Select an option

Save brunohubner/8f6581f01d01d56b2f5da9417e6e9013 to your computer and use it in GitHub Desktop.
Remover listeners de eventos de bloqueio

✅ 1. Remover CSS que bloqueia a seleção

No console, você pode forçar a página a permitir seleção de texto:

document.querySelectorAll('*').forEach(el => {
  el.style.userSelect = 'text';
  el.style.webkitUserSelect = 'text';
  el.style.msUserSelect = 'text';
});

Isso percorre todos os elementos da página e seta user-select: text.

✅ 2. Remover listeners de eventos de bloqueio

Muitas páginas bloqueiam seleção com JS usando addEventListener para eventos como contextmenu, copy, mousedown, etc.

Remover manualmente usando DevTools: No DevTools, vá em:

  • Elements → clique com botão direito em um elemento → Break on > Subtree modifications ou attribute modifications;
  • Sources → abra os event listeners na aba "Event Listeners" e remova os que estão em document ou body;

Ou rode isso no console:

const clone = document.cloneNode(true);
document.replaceWith(clone);

Isso remove todos os event listeners do DOM original (clona a estrutura sem os handlers).

Ou de forma mais agressiva:

["copy", "cut", "paste", "contextmenu", "selectstart", "mousedown", "mouseup", "keydown", "keypress"].forEach(evt => {
  document.body.addEventListener(evt, e => e.stopPropagation(), true);
});

Isso impede que os eventos problemáticos sejam tratados pela página, usando o modo capture.

✅ 3. Usar uma extensão do navegador

Caso prefira algo mais rápido para uso frequente, tem boas extensões como:

  • Absolute Enable Right Click & Copy (Chrome)
  • Enable Copy (Firefox)

Essas extensões automatizam o que mostramos acima.

✅ 4. Usar o "Reader Mode" do navegador

Navegadores como Firefox, Edge e até extensões no Chrome permitem visualizar o conteúdo no modo leitura — o que geralmente ignora scripts bloqueadores.

✅ 5. Abrir via Puppeteer ou salvar o DOM

Se quiser algo mais programático ou massivo, você pode usar Puppeteer ou salvar o conteúdo via fetch no console, dependendo da CORS:

fetch(location.href)
  .then(res => res.text())
  .then(html => console.log(html));

⚠️ Observação

Sites com mais proteção (tipo PDFs embutidos via canvas, ou texto renderizado em imagens) exigem técnicas diferentes (OCR ou devtools em modo gráfico).

✅ Dica bônus: usar getSelection

Se você sabe a estrutura da DOM, pode capturar o texto diretamente:

document.getSelection().selectAllChildren(document.body);
// ou copiar com:
navigator.clipboard.writeText(document.body.innerText);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment