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

240
Visualizações
No se puede anular el script de la aplicación de Google console.log()

Tengo una gran secuencia de comandos de la aplicación de Google que escribe muchas líneas de registro en el explorador de registros. Quiero poder deshabilitar o habilitar el registro si es necesario.

Aquí hay un código que parece funcionar como se esperaba en un navegador. Aquí allowlog está configurado en el código, pero se recuperará de una fuente externa. Esto no es importante para el propósito de esta publicación.

La función de extracción automática anula console.log y bloquea el registro si es necesario.

 let allowLog = false; function func1(){ console.log("func1 log msg"); } (function(){ //test log 1 console.log("self extracting"); //keep ref to global console.log const _consolelog = console.log; //test log 2 - verify it works _consolelog("self extracting2"); //override global console.log console.log = function(val){ if (allowLog){ _consolelog(val); _consolelog("allowing"); }else{ _consolelog("log disabled"); } } })();

Este código no funciona en la secuencia de comandos de la aplicación de Google y los registros siguen escribiendo.

En el script de la aplicación puedo ver console.log("self extracting"); y _consolelog("self extracting2"); registrar mensajes cuando se carga el módulo. Sin embargo, cuando se llama a func1 , el registro se escribe aunque allowLog = false . _consolelog("allowing"); ni _consolelog("log disabled"); NO está registrado. el archivo console.log global no se anula.

¿Por qué es eso y cómo (si es que lo es) es posible solucionarlo?

El registro esperado para el código anterior es ( allowLog=false ):

  • autoextraíble
  • autoextracción2
  • registro deshabilitado

Para el caso donde allowLog=true :

  • autoextraíble
  • autoextracción2
  • func1 registrar mensaje
  • permitiendo

Las dos primeras líneas autoextracción y autoextracción2 deben imprimirse solo una vez, cuando se ejecuta la función de autoinvocación anónima. El otro debe provenir de la función interna que anula la global.

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

0

Esto se debe a que no se writable en la propiedad de log de la console . Puede verificar eso usando Object.getOwnPropertyDescriptors . Sin embargo, sigue siendo configurable . Por lo tanto, puede delete la propiedad log y establecer un nuevo valor.

 let allowLog = false; (function(){ //test log 1 console.log("self extracting"); //keep ref to global console.log const _consolelog = console.log; //test log 2 - verify it works _consolelog("self extracting2"); //override global console.log //console.log(Object.getOwnPropertyDescriptors(console)); /*{ toString: { value: [Function], writable: true, enumerable: true, configurable: true }, time: { value: [Function], writable: true, enumerable: true, configurable: true }, timeEnd: { value: [Function], writable: true, enumerable: true, configurable: true }, error: { value: [Function], writable: false, enumerable: true, configurable: true }, info: { value: [Function], writable: false, enumerable: true, configurable: true }, log: { value: [Function], writable: false, enumerable: true, configurable: true }, warn: { value: [Function], writable: false, enumerable: true, configurable: true } }*/ delete console.log; console.log = function (val){ if (allowLog){ _consolelog(val); _consolelog("allowing"); }else{ _consolelog("log disabled"); } } })(); function func1(){ console.log("func1 log msg"); }
about 4 years ago · Juan Pablo Isaza Relatório

0

¿Quieres decir esto?

 Logger.log('Test1'); // it will print as usual var _log = Logger.log Logger.log = function(_){}; Logger.log('Test2'); // <-- it will not print since we disabled the 'log()' method Logger.log = _log; // restore the method 'log()' back Logger.log('Test3'); // it will print again

Producción:

 Test1 Test3

ingrese la descripción de la imagen aquí

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