Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试动态添加的Javascript代码_Javascript_Firebug_Dynamic - Fatal编程技术网

调试动态添加的Javascript代码

调试动态添加的Javascript代码,javascript,firebug,dynamic,Javascript,Firebug,Dynamic,与我共事的一位程序员的代码与此类似: var head = document.getElementsByTagName("head")[0]; var e = document.createElement("script"); e.type = "text/javascript"; var b = "function moo() { alert('hello'); }"; e.appendChild(document.createTextNode(b)); head.appendCh

与我共事的一位程序员的代码与此类似:

 var head = document.getElementsByTagName("head")[0];
 var e = document.createElement("script");
 e.type = "text/javascript";
 var b = "function moo() { alert('hello'); }";
 e.appendChild(document.createTextNode(b));
 head.appendChild(e);
 moo();
这一切都很好,但我想进入moo(),firebug就是做不到。我知道我可以把整个事情拆开,但我真的不想碰它,他的代码也可以:)

你知道我如何用Firebug调试它吗


干杯

你可以放一个
调试器语句在那里。Firebug应该认识到这一点,并让您介入。

IMO添加一个try-catch块:

 try{ 
      alert(\"hello!\") ; 
 } catch(e) { 
      console.log(e) ; 
 }
以获取任何运行时错误的错误消息。 如果我理解正确,这里的问题是您在
后期
将上述代码分支添加到
早期
(按照解析时间顺序)。Firebug将已经通过您正在更改的部分,因此将无法识别代码。

,使用Safari及其脚本调试器

我延长了你同事的代码,以便有几行代码可以通过

var b = "function moo() { var a=10; a +=1; a+=10; alert(a); }";

请参见图片以获得更清晰的解释。

;不行。我可以中断对moo()的调用,但不能插手。只是为了省去其他人的麻烦:Chrome的开发工具也不能神奇地处理它。FWIW:我想说,调试它的困难是支持重构它的一个很好的论据。你实际上是在那里做一个
eval
(在一般意义上),而且几乎总是有更好的方法来处理它。代码是这样构造的,有什么特别的原因吗?在我看来,如果您已经将代码注入到DOM中,为什么不直接声明它,使用
新函数(“…”
或评估它呢?@Sean:他所做的和
评估
之间存在着很大的范围/上下文差异。如果他要重构它,我会极力避免像ness一样的
评估。:-)@肖恩·金赛:为了回答这个问题,这很可能是一个简化的例子,就像通常的堆栈溢出一样。另外,我认为
eval
new Function()
仍然存在同样的问题。图中显示,Safari的调试器确实能够进入动态创建的函数。我自己还没有验证它是否有效。OP(原始海报)说代码正在工作,所以应该没有可以看到的错误。是的,OP没有说他为什么要进入代码,所以我认为这要么是自我教育,要么可能是正在进行的代码正确性验证。OP说我有什么想法可以用Firebug调试这个吗?为什么你认为他想调试工作代码?