设置断点并调试eval'd JavaScript

时间:2012-06-28 15:39:22

标签: javascript debugging

* 正在使用客户端JS解析XML文件并生成复杂的JS代码到eval。 (生成由运行时启动的可重用函数。)但是,我需要调试生成的代码,并希望使用Chrome的内置断点,步进,监视窗口等。

有没有比这更简单的方法:

  • 将生成的JS字符串转储到控制台和/或窗口。
  • 复制JavaScript
  • (可选)通过类似JSBeautifier的预处理器运行JS。
  • 将JS粘贴到通过另一个网页中的<script src="...">加载的文件中。

* 实际上,我的一个朋友正在这样做,而不是我

1 个答案:

答案 0 :(得分:16)

而不是使用eval,而不是手动复制/粘贴到单独的文件中,您可以使用动态创建的data uri将JS直接动态加载到生成它的页面中<script>元素。通过这种方法,Chrome的开发人员工具(和Firebug)允许您选择数据URI作为脚本,打开漂亮打印,设置断点,然后离开。

var js = createMyJSCodeString();
addCode(js); // Right now! Debuggable!

// Dynamically evaluate JavaScript-as-string in the browser
function addCode(js){
  var e = document.createElement('script');
  e.type = 'text/javascript';
  e.src  = 'data:text/javascript;charset=utf-8,'+escape(js);
  document.body.appendChild(e);
}