Jan*_*sky 13 javascript debugging google-chrome
我正在调试一个大的JavaScript代码库,在某些时候,"console"变量在刷新页面时会变为空.
有没有办法在控制台上设置监视并在该值更改时(或条件(console == null)
为真时)执行JavaScript中断执行?
我在Windows 7上使用Chrome.
aps*_*ers 19
下面的答案不起作用,window.console
因为console
(像其他浏览器本地环境变量一样)是专门处理的.任何分配值的尝试console
只会"掩盖"原始值; 它不会取代它.您无法检测console
值何时更改,但您可以delete window.console
还原原始环境提供的值.
对于其他值,用于Object.defineProperty
为某些全局定义自定义setter window.foobar
.只要window.foobar
分配了新值,setter函数就会运行:
(function() {
var actualFoobar = window.foobar;
Object.defineProperty(window, "foobar", {
set: function(newValue) {
if(newValue === null) {
alert("someone is clobbering foobar!"); // <-- breakpoint here!
}
// comment out to disallow setting window.foobar
actualFoobar = newValue;
},
get: function() { return actualFoobar; }
});
})();
Run Code Online (Sandbox Code Playgroud)
然后,在该setter函数中放置一个断点.
此方法适用于全局变量或任何对象属性(只需更改window
为具有该属性的对象).