Javascript 仅在调试模式下执行JS代码

Javascript 仅在调试模式下执行JS代码,javascript,debugging,browser,Javascript,Debugging,Browser,只有当我打开开发者工具时,才能执行js文件的一部分吗 我想要像这样的东西 #if DEBUG executeMethodOnlyInDebugger(); #endif 但是对于JavaScript。不,JavaScript中没有本机版本。尝试以下库: 它对窗口对象执行一些检查,并在检测到控制台已打开时发出事件。我可能会担心在生产代码中包含这一点,但它可能会成为您用例中有用的调试工具。我认为没有办法在Chrome和Firefox中检查这一点。 最好的办法是在代码中有一个调试标志 虽然IE在开发

只有当我打开开发者工具时,才能执行js文件的一部分吗

我想要像这样的东西

#if DEBUG
executeMethodOnlyInDebugger();
#endif
但是对于JavaScript。

不,JavaScript中没有本机版本。

尝试以下库:


它对
窗口
对象执行一些检查,并在检测到控制台已打开时发出事件。我可能会担心在生产代码中包含这一点,但它可能会成为您用例中有用的调试工具。

我认为没有办法在Chrome和Firefox中检查这一点。 最好的办法是在代码中有一个调试标志

虽然IE在开发人员工具未打开时将控制台设置为未定义。 因此,对于IE,您可以:

if(console){
  //dev tools is open
} else{
  //dev tools not open
}
也可以在此处查看有关chrome的更多信息: 不太可能。
但是你可以用它。请参见以下答案:

对于ASP.NET

在_Layout.cshtml(适用于MVC)或Master(适用于web表单)中,添加以下内容:

<script>
    @if (HttpContext.Current.IsDebuggingEnabled)
    {
    @:var DEBUG = true;
    }
    else
    {
    @:var DEBUG = false;
    }
    alert('DEBUG: ' + DEBUG);
</script>

@if(HttpContext.Current.IsDebuggingEnabled)
{
@:var DEBUG=true;
}
其他的
{
@:var DEBUG=false;
}
警报(“调试:”+DEBUG);
这样做的好处是,您可以使用Web.config中的配置值打开/关闭它,以允许在任何环境中进行调试:

<system.web>
    <compilation debug="false" />
</system.web>


好吧,您可以在代码中设置自己的标志,并在需要调试时切换值。这与:这很好,但您永远无法依赖所有浏览器执行相同的操作。手动设置标志更安全。该标志是Chrome特有的(现在已经过时)。我想OP想知道是否有一些标准化的方法。也许曾经奏效过,但现在肯定不行(在Chrome上,或者在带有内置调试器的Firefox上)。表明它对Firebug也不起作用,至少不可靠。@t.J.Crowder它在Chrome 45和Safari 9中对我有效:编辑:刚刚将Chrome更新为46,在FF中对我仍然有效,尽管正如预期的那样,没有检测到未连接的devtools。无论哪种方式,我同意其他人的观点,即最健壮的方法是设置自己的调试标志(为了方便起见,您甚至可以通过查询字符串或哈希片段或其他方式来控制它)。事实证明,它在Chrome上确实对我有效,但前提是devtools是固定的(因此,更像Firefox bug)。Firefox也是如此。说到底:不可靠,不能使用。我认为条件编译在这里不相关。如果他希望根据开发工具的状态运行(或不运行)代码,那将是一项运行时工作。他基本上是在寻找一个标准的布尔标志。@斜视发布的代码类似于c#的预处理器指令,这是一种条件编译形式。条件是“devtools是否打开”这一点无关紧要。我想这取决于上下文。他没有明确地把它和任何具体的事情联系起来,但我明白你的意思。我不能确定他是否想在工具打开时激活它。