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

use*_*664 13 javascript debugging firebug

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

if (validator.formValidate([dom.forumid]))
Run Code Online (Sandbox Code Playgroud)

我怎样才能跳过这个验证部分并进入该if条款,即使我dom.forumid的无效,即对formValidate()退货的要求false?那我怎么能让它回来true

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

Nic*_*ele 12

从今天开始(Chrome 67),您只需双击“范围”部分下右侧的任何变量,即可对其进行实时编辑。

在此处输入图片说明


try*_*lly 6

在Firebug中,我通过在手表输入字段中输入分配来实现

  • 分配新值
  • 分配一个新函数,该函数返回我期望的值

这也可以在Chrome〜33(刚刚经过测试)的execpt中使用:必须将分配输入到控制台中(实际上也可以在Firefox中使用,但是使用监视面板更快:)。

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

当然,替换该功能将阻止代码在后续运行中正常运行。为了避免这种情况,可以将原始值保存到window._savedFnX大约50左右,然后再次分配分配的功能/值。但是,我认为这是一种解决方法,可以一次又一次地保存代码以达到关注点。我经常意识到情况很糟糕,然后我想继续(而代码不会)测试其余的代码。

看一下这些屏幕截图:

代码背景

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

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

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

萤火虫

(适用于Firebug〜1.12)

  • 在断点处停止
  • 转到控制台
  • 分配将想要的值返回到作用域(或可达)中的变量的函数[ORANGE]

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

Firebug屏幕截图,显示了具有替换功能的监视面板

(适用于Chrome〜34.0)

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

  • 在断点处停止
  • 转到控制台
  • 分配将想要的值返回到作用域(或可达)中的变量的函数[ORANGE]
  • (刷新以查看结果) [GREEN]

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

Chome控制台的屏幕快照,其中显示了具有替换功能的控制台以及具有新返回值的监视面板