如果我在Chrome开发者工具中打开JavaScript控制台来调试扩展程序的内容脚本,我就不会获得内容脚本的上下文.例如,jQuery是不可访问的,除非我去调试器并设置断点,否则我无法访问我的全局变量.
我只是错过了一些东西吗?能够从JS控制台检查我的全局变量或调用jQuery会很棒.
javascript-debugger google-chrome-extension google-chrome-devtools
我尝试以下代码:
var myList = new Object();
var item = new Object();
item.text = "item-1";
myList[3] = item;
console.log(myList);
console.log(myList[3].text);
// Assign another object to the same entry
var item2 = new Object();
item2.text = "item-2";
myList[3] = item2;
console.log(myList);
console.log(myList[3].text);
Run Code Online (Sandbox Code Playgroud)
结果很奇怪:
* Object
* 3: Object
text: "item-2"
item-1
* Object
* 3: Object
text: "item-2"
item-2
Run Code Online (Sandbox Code Playgroud)
但是 - 如果我在一段时间后执行第二部分(使用setTimeout),并展开第一个对象,我说得对,即:
* Object
* 3: Object
text: "item-1"
item-1
* Object
* 3: Object
text: "item-2"
item-2
Run Code Online (Sandbox Code Playgroud)
我发现分享它很重要,因为我认为可以浪费大量时间来试图理解他的代码中的错误.如果有人提到一个开放的bug或其他东西 - …
javascript console firefox google-chrome javascript-debugger
我有一些非常奇怪的行为.我有以下JQuery:
myElement.fadeOut(100);
Run Code Online (Sandbox Code Playgroud)
存在某种竞争条件,因此该元素最终不会被隐藏.如果我在该行上放置一个调试器并逐步执行代码,它就可以正常运行并且元素会淡出并隐藏起来.称之为Heisenbug.
我的问题不是关于竞争条件本身.鉴于JavaScript运行时的性质,我想知道如何实现这一点.根据我的理解,以下谓词是正确的:
setTimeout()调用实现setTimeout() 在某个时间点调度队列中函数的执行鉴于我在调试器中单步执行某个函数,必须暂停执行,并且不能执行其他函数.
我无法看到在这种情况下如何出现竞争条件.您能否建议在调试和非调试代码之间执行的可能性如何?
它们通常被命名为"Script Block(#)",其中井号是任意数字,但我也在"其他"部分中看到了空白的html文档(仅限html和body标签).更具体地说,我所指的"其他"部分可以在Internet Explorer 9调试器的"脚本"选项卡中"开始调试"按钮左侧的下拉列表中找到.(假设您在生成"其他"的网页上)此外,您必须正在调试才能看到"其他"部分.
我有一个带有一些插件的应用程序,我假设这些插件会导致那些"其他"显示出来."脚本块"实际上是生成的并且没有被删除,所以它慢慢开始占用内存,直到我必须刷新页面.在不经意地搜索网页后,我决定来这里,希望能更深入地了解为什么要创建它们以及它们到底是什么?
对不起以上,但我真的不知道一个更好的方式来形容我谈论可怕的描述,我想这就是为什么我在这里...
javascript debugging javascript-debugger internet-explorer-9
我想知道下面显示的序列是如何发生的.
这是有问题的功能:
WebSocketConnector.prototype.sendMessage = function(message) {
if (socket !== null) {
socket.send(message);
console.log('Sent: ' + message);
} else {
alert('Failed to send message. WebSocket connection not established.');
}
};
Run Code Online (Sandbox Code Playgroud)
以下是调试此函数的调用时发生的情况:




sendMessage从一个地方打电话,我正在记录这个电话.sendMessage日志中没有未计入的调用,因此我不认为异步是一种解释.如果我将一个console.log语句添加到else块的第一行(将警报按下到第37行),控件将从第34行直到第37行(跳过console.log语句).
此外,我应该提到,即使直接进入该代码,也不会出现任何警报.
这是sendMessage函数的间距和CRLF :

javascript firefox firebug javascript-debugger firefox-developer-tools
我仅在 Mac 计算机上的 Safari 和 Chrome 中收到此错误,但无法在其他浏览器或 Windows 上重现。主要问题 - 没有关于哪个功能导致问题的信息。异常发生前没有最近调用的堆栈跟踪。甚至“异常暂停”设置也不起作用。它不会在此异常上暂停,仅将信息放入控制台。
如何排除导致问题的原因、在哪个函数上崩溃、崩溃前的调用堆栈是什么?或者如何记录所有函数调用(重要提示,分析器应在页面加载后立即启动)。
javascript debugging javascript-debugger google-chrome-devtools
在Javascript执行期间,某些变量可以被“优化”。因此,此类变量的值在调试时无法检查(用户文档)。如果尝试评估变量,变量视图将显示(优化)消息,并且控制台将引发以下错误:
Error: variable has been optimized out
Run Code Online (Sandbox Code Playgroud)
有什么方法可以在Firefox中强制执行此类变量的评估或禁用此优化?
我正在尝试使用 Chrome 开发者工具调试画布元素。
从这里:
如何检查画布框架
我可以看到有一个实验性功能可以执行类似的操作,但已被删除。
有没有办法搜索/查找负责修改某些特定画布元素的JS代码?这样至少我们可以在 JS 中添加断点
我试图单步执行单个文件,但调试器不断单步执行其他/第三方 js 脚本。我将它们添加到我的忽略列表中,它甚至说“此脚本位于调试器忽略列表中”,但它仍然会逐步执行它们。
如果 chrome 仍然单步执行忽略列表,那还有什么意义呢?
有什么方法可以让我单步执行我想要单步执行的文件吗?当我必须单步执行数十个杂项文件时,调试是一场噩梦。
javascript ×7
debugging ×5
firefox ×3
console ×1
firebug ×1
html5-canvas ×1
ios ×1
react-native ×1
reactjs ×1