Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

188
Visualizações
Mi extensión de Chrome más simple no surtió efecto

No estoy familiarizado con JavaScript.

Yo mismo escribí una extensión, pero no funcionó.

La función extendida es muy simple, es decir, activar el parámetro onselectstart , porque este parámetro en la página web hace que sea imposible seleccionar el texto de la página web y luego copiarlo. Si activo este parámetro, puedo seleccionar y copiar.

Puedo ejecutar este comando de JavaScript directamente en la consola de Chrome y habilitar onselectstart , funciona bien:

 document.body.onselectstart = function(){return true;};

pero no tendrá efecto después de ponerlo en la extensión.

Mi extensión es muy simple, solo dos archivos:

manifest.json :

 { "manifest_version": 2, "name": "Copy unblocker", "version": "1.0", "description": "enable onselectstart", "icons": { "16": "images/logo.png" }, "permissions": [ "activeTab" ], "content_scripts": [ { "matches": ["<all_urls>"], "js": ["js/content_script.js"] } ] }

content_ script.js :

 document.body.onselectstart= function(){ return true; }

¿Qué pasa, o puedes darme un script de extensión de Chrome que pueda cambiar el parámetro onselectstart ?

árboles de archivo

ingrese la descripción de la imagen aquí

La página web es generada por JS. Este parámetro me impide seleccionar texto

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Devolver true no ayudará, este valor no hace nada en los eventos DOM. Funcionó en la consola porque su oyente simplemente reemplazó al oyente de la página, pero no funciona en scripts de contenido ya que su código JS y los objetos están aislados de la página por diseño.

Una solución es agregar ese código en un elemento de secuencia de comandos a la página como se explica en esta respuesta , pero ejecutar el código en el contexto de la página no es 100% seguro debido a un error en las implementaciones de extensiones de Chrome y Firefox WebExtensions ( wrappedJSObject también se ve afectado) .

Aquí hay una solución más simple: evitar que la página vea el evento.

 // Specifying `true` to register a capturing phase listener window.addEventListener('selectstart', e => e.stopPropagation(), true);

Alguna explicación. Los eventos del DOM se envían en dos fases: 1) la fase de captura, en la que el evento viaja de la window al document de <html> a <body> y desciende hasta el elemento que desencadenó el evento, y 2) la fase de propagación, en la que el evento surge desde el elemento de destino hacia arriba a través de la jerarquía del árbol DOM hasta la window .

La fase predeterminada para los oyentes de eventos es "burbujeante", por lo que la solución más fácil es registrar a su oyente en la fase de "captura", donde detendrá la "propagación" del evento para evitar que los oyentes posteriores vean el evento. Lo hicimos en window , que es el primer destinatario en esta fase, por lo que nuestro oyente es el primero.

Algunos sitios pueden eludirlo utilizando el mismo código y ejecutándolo primero, lo que puede suceder fácilmente porque los scripts de contenido se ejecutan después de DOMContentLoaded de forma predeterminada. Para luchar contra eso, puede declarar su secuencia de comandos de contenido con "run_at": "document_start" para que se ejecute antes de que la página haya ejecutado sus secuencias de comandos.

 "content_scripts": [{ "matches": ["<all_urls>"], "js": ["js/content_script.js"], "run_at": "document_start" }] }
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda