对象值更改时在 Web 浏览器中停止调试器
Stop debugger in web browser when object value changed
我有一个<input type="hidden">
。我需要查看它的值何时发生变化。我有很多 JavaScript 个文件在改变它的值。
我可以去所有更改值的地方并添加 debugger
语句,但这会花费很多时间。我了解了 Object.watch() 但它仅在 值更改后 执行特定功能,尽管我想看到 在哪里 它更改了在代码中,而不是 when.
有什么方法可以实现吗,也许是通过输出行号和 JavaScript 文件名,或者在网络浏览器中停止调试器?
以下代码将抛出一个 Cannot assign to read only property..
错误(带有堆栈跟踪),您可以捕获(或在开发工具中查看):
'use strict';
var o = {a: 29};
throwOnChange(o, 'a');
// as much code as you like here..
o.a++; // this will throw an error
function throwOnChange(obj, prop) {
Object.defineProperty(obj, prop, {
value: obj[prop],
writable: false
});
}
只需在您的 input.value
上类似地使用它。
不过有两个注意事项:
- 你必须
'use strict'
它才能工作,否则它会忽略分配。
- 请参阅Object.defineProperty()
希望这对您有所帮助。
DOM 更改断点得到了支持。
- 转到 DevTools 的 Elements 面板。
- 在 HTML 窗格中查找元素。
- Right-click 在元素上。
- Select 中断 > 属性修改.
如果您也需要查看元素值的更改,则在元素的父级上 right-click,以及 select 子树修改 .
我有一个<input type="hidden">
。我需要查看它的值何时发生变化。我有很多 JavaScript 个文件在改变它的值。
我可以去所有更改值的地方并添加 debugger
语句,但这会花费很多时间。我了解了 Object.watch() 但它仅在 值更改后 执行特定功能,尽管我想看到 在哪里 它更改了在代码中,而不是 when.
有什么方法可以实现吗,也许是通过输出行号和 JavaScript 文件名,或者在网络浏览器中停止调试器?
以下代码将抛出一个 Cannot assign to read only property..
错误(带有堆栈跟踪),您可以捕获(或在开发工具中查看):
'use strict';
var o = {a: 29};
throwOnChange(o, 'a');
// as much code as you like here..
o.a++; // this will throw an error
function throwOnChange(obj, prop) {
Object.defineProperty(obj, prop, {
value: obj[prop],
writable: false
});
}
只需在您的 input.value
上类似地使用它。
不过有两个注意事项:
- 你必须
'use strict'
它才能工作,否则它会忽略分配。 - 请参阅Object.defineProperty()
希望这对您有所帮助。
DOM 更改断点得到了支持。
- 转到 DevTools 的 Elements 面板。
- 在 HTML 窗格中查找元素。
- Right-click 在元素上。
- Select 中断 > 属性修改.
如果您也需要查看元素值的更改,则在元素的父级上 right-click,以及 select 子树修改 .