有没有办法在调试JavaScript时更改变量值?

时间:2014-05-10 18:47:17

标签: javascript debugging firebug

我在这段代码上有一个断点(使用Firebug):

if (validator.formValidate([dom.forumid]))

即使我的if无效,即使dom.forumid的调用返回formValidate(),我如何跳过此验证部分并进入false子句?那么如何让它返回true

我正在考虑修改JavaScript,但我不知道是怎么做的。

2 个答案:

答案 0 :(得分:5)

截至今日(Chrome 67),您只需双击" Scope"右下角的任何变量即可。部分并实时编辑。

enter image description here

答案 1 :(得分:4)

在Firebug中,我通过在监视输入字段

中输入分配来完成此操作
  • 分配新值
  • 分配一个返回我期望的值的新函数

这也适用于Chrome~33(刚刚测试过)execpt:必须在控制台中输入作业(实际上也可以在Firefox中使用,但使用表面板的速度更快:)。

在Firebug中,您必须编辑并重新保存在每次中断时键入输入的作业。

当然,更换该功能会阻止代码在进一步运行时正常运行。为避免这种情况,可以将原始值保存到window._savedFnX左右,然后再次分配保存的函数/值。但我认为这是一种解决方法,从一次又一次地挽救一个代码到达目的地。我经常意识到条件不好然后我想继续(代码不会)来测试其余的代码。

看看这些截图:

代码背景

在屏幕截图中photo是一个包含此代码的实例:

{
   ...
   _loaded: false, // set to true on some condition
   ...
   isLoaded: function(){
       return this._loaded;
   },
   ...
}

示例中将替换方法isLoaded()以始终返回true。 :)

萤火虫

(适用于Firebug~1.12)

  • 在断点处停止
  • 转到控制台
  • 分配函数,将您想要的值返回到范围内的变量(或可访问)[ORANGE]

[BLUE]框突出显示isLoaded()将返回的值以及替换函数返回的值。

Screenshot of Firebug showing the watch panel with replaced function

(适用于Chrome~34.0)

注意:在Chrome中,您还可以编辑源代码并重新运行修改后的版本。

  • 在断点处停止
  • 转到控制台
  • 分配函数,将您想要的值返回到范围内的变量(或可访问)[ORANGE]
  • (刷新以查看结果)[GREEN]

[BLUE]框突出显示isLoaded()将返回的值以及替换函数返回的值。

Screenshot of Chome console showing the console with replaced function and the watch panel with new return value