Puedo abrir la consola de Chrome DevTools para esta URL: https://www.google.com/ e ingresar el siguiente comando para imprimir "¡Hola mundo!" a la consola:
console.log("Hello world!")
Sin embargo, cuando intento usar el mismo comando para esta URL: https://svc.mt.gov/dor/property/prc , mi mensaje no se imprime en la consola. ¿Porqué es eso?
¿Hay alguna forma de hacer que la consola funcione para este sitio web de MT?
Intenté usar python/selenium para abrir la página y ejecutar_script() para ejecutar el comando, pero tampoco funcionó.
Si lo haces
console.dir(console.log) y haga clic en [[FunctionLocation]] , verá lo siguiente en el código fuente del sitio:
"Debug" != e && (window.console.log = function() {} )Parece una forma barata (¿pero perezosa?) De suprimir el inicio de sesión en producción.
Una forma de arreglarlo sería usar uno de los muchos otros comandos de la consola . ( console.dir , o console.error , si lo desea)
Si realmente desea que el console.log original vuelva a funcionar, la única forma de hacerlo sería ejecutar el código antes de que se ejecute el código de la página, de modo que pueda guardar una referencia a la función. Por ejemplo, con un script de usuario:
// <metadata block...> // @grant none // ==/UserScript== const origConsoleLog = console.log; // set original window.console.log back to its original // after the page loads setTimeout(() => { window.console.log = origConsoleLog; }, 2000); // there are more elegant but more complicated approaches tooCertainPerformance ya explicó cómo es esto posible y cuál parece ser el motivo para suprimir el registro. Voy a mostrar aquí otro método para recuperar console.log después de que se haya perdido el original.
document.body.appendChild(document.createElement('IFRAME')).onload = function () { this.contentWindow.console.log('Hello, World!'); this.remove(); };Esto básicamente utiliza un método antiguo para restaurar objetos globales desde un iframe temporal.