当我在谷歌Chrome中打开开发人员工具时,我看到了各种各样的功能,如配置文件,时间线和审计,但基本功能,如能够在js文件和html和javascript代码中设置断点是缺失的!我尝试使用javascript控制台,它本身就有bug——例如,一旦遇到JS错误,除非刷新整个页面,否则我无法摆脱它。有人能帮忙吗?
当前回答
您谈论的是<script>标记中的代码,还是HTML标记属性中的代码,就像这样?
<a href="#" onclick="alert('this is inline JS');return false;">Click</a>
无论哪种方式,像这样的调试器关键字都可以工作:
<a href="#" onclick="debugger; alert('this is inline JS');return false;">Click</a>
注意:如果开发工具没有打开,Chrome不会在调试器上暂停。
你也可以在JS文件和<script>标签中设置属性断点:
单击Sources选项卡 单击Show Navigator图标并选择文件 双击左侧空白处的a行号。相应的行被添加到Breakpoints面板(4)。
其他回答
这是上文Rian Schmits回答的延伸。在我的例子中,我在JavaScript代码中嵌入了HTML代码,除了HTML代码,我看不到其他任何东西。也许Chrome调试已经改变了多年,但右键单击源/源选项卡给我添加文件夹到工作区。我可以添加我的整个项目,这让我可以访问我所有的JavaScripts。你可以在这个链接中找到更多细节。我希望这能帮助到一些人。
你必须将type="text/javascript"添加到脚本块中,以便将它们作为脚本拾取。例如: <script type="text/javascript">…你的代码在这里…> < /脚本
调试ajax返回的html内部脚本的另一个直观的简单技巧是临时将console.log("test")放在脚本中。
触发事件后,打开开发人员工具中的控制台选项卡。 您将看到源文件链接显示在"test"调试打印语句的右侧。只需单击源代码(类似VM4xxx),现在就可以设置断点了。
附注:此外,你可以考虑把“调试器”声明,如果你正在使用chrome,就像什么是由@Matt球的建议
添加调试器;我的剧本对我很有用。
我遇到了这个问题,但是我的内联函数是在一个angularJS视图中。因此,在加载时,我无法访问内联脚本来添加调试,因为只有index.html在调试器的sources选项卡中可用。
这意味着,当我打开特定的视图与我的内联(没有选择在这)是不可访问的。
我能击中它的唯一方法是把一个错误的函数或调用内联JS函数。
我的解决方案包括:
function doMyInline(data) {
//Throw my undefined error here.
$("select.Sel").debug();
//This is the real onclick i was passing to
angular.element(document.getElementById(data.id)).scope().doblablabla(data.id);
}
这意味着当我点击我的按钮,我就会在chrome控制台提示。
Uncaught TypeError: undefined is not a function
这里重要的事情是它的来源:VM5658:6单击它可以让我遍历内联并将断点保留在那里以供以后使用。
极其复杂的到达方式。但是当处理动态加载视图的单页应用程序时,它是有用的。
虚拟机[n]无显著值,n on等于脚本ID。此信息可以在这里找到:Chrome“[VM]”
推荐文章
- 如何使gdb保存命令历史?
- 什么时候JavaScript是同步的?
- 如何检查Flutter应用程序是否正在调试中运行?
- 如何在Typescript中解析JSON字符串
- Javascript reduce()在对象
- 在angularJS中& vs @和=的区别是什么
- 错误"Uncaught SyntaxError:意外的标记与JSON.parse"
- JavaScript中的querySelector和querySelectorAll vs getElementsByClassName和getElementById
- 给一个数字加上st, nd, rd和th(序数)后缀
- 如何以编程方式触发引导模式?
- setTimeout带引号和不带括号的区别
- 在JS的Chrome CPU配置文件中,'self'和'total'之间的差异
- 用javascript检查输入字符串中是否包含数字
- 如何使用JavaScript分割逗号分隔字符串?
- 在Javascript中~~(“双波浪号”)做什么?