1
我想解决一个页面有很多的JS,包括广告,还有一些是导致window.console被取代,它抑制了我想看到的典型的控制台日志记录输出。有没有办法确定哪个JS被覆盖window.console?
有没有一种方法来确定哪个JS覆盖window.console?也许只有在typeof(window.console)被修改时才会触发一个断点?
我想解决一个页面有很多的JS,包括广告,还有一些是导致window.console被取代,它抑制了我想看到的典型的控制台日志记录输出。有没有办法确定哪个JS被覆盖window.console?
有没有一种方法来确定哪个JS覆盖window.console?也许只有在typeof(window.console)被修改时才会触发一个断点?
好问题!我想我可以帮忙。 使用Object.defineProperty https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty 来重新生成.log属性。
水木清华这样的:
Object.defineProperty(console, "log", {
set: function() { throw 'Hoh!' }
});
console.log = 'abc';
Pottentially ES6的[object.observe(https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/observe)可以帮助?编辑:刚刚意识到它的弃用,但仍然可用它可以做调试。 – ste2425
您可以使用define属性来添加setter描述符。 – Vitalii