【发布时间】:2019-07-13 13:05:30
【问题描述】:
我一直在学习如何使用 Chrome 开发者工具 (CDT) 进行调试。
我正在尝试向用 HTML/Javascript/jQuery/MySQL 编写的应用程序添加一些功能。基本上,它使用 jQuery 从 MySQL 加载 Ajax 创建的表,同时它会检查 cookie 中的数字列表,该列表表示要打开或关闭的列。
首次加载时,它会检查 cookie 并尽职尽责地加载请求的列。但是当我刷新表格(不是重新加载页面)并再次读取 cookie 时,它会暂时显示列,然后立即将它们再次关闭。
使用 CDT 浏览 javascript 将我带出我的代码并进入 jQuery v3.3.1,在 //callback 或未压缩版本的行号 9523 处开始。弹跳了一下后它停止并且我的页面显示没有其他列。但是 CDT 中没有显示任何错误,而且在我看来它没有任何“看起来”错误。
我知道你们很多人想要的第一件事是 javascript,但它是一个相当大的程序,所以我不知道如何提供一个不工作的、工作的模型,如果你得到了偏差。此外,我对学习使用 CDT 来解决此类问题更感兴趣。但我不知道下一步该做什么,我看了一堆 YouTube 视频,问了几个朋友,但都没有多大帮助。
现在看来,它“闪烁”的问题发生在 jQuery-3.3.1.js 的第 9548 行回调函数的“完整”部分。通过注释掉它来隔离它会使事情变得更糟,似乎没有任何效果。所以我又回到了原点。
在 CDT 中我应该注意什么?
【问题讨论】:
-
这听起来像是屏幕闪烁的常见问题(它有一个不同的术语,但我忘记了),默认 html 显示元素,然后 javascript 隐藏它们。 “修复”此问题的典型方法是默认隐藏它们,并让 javascript 在需要时显示它们,从而消除它短暂显示它们而您不需要显示它们的情况。
-
@Taplar 我真的很喜欢你的回答,所以我试了一下。我输入了两次切换列的相同代码。我在很多地方都试过了,包括之前和之后。不幸的是,这并没有解决问题。屏幕闪烁是对正在发生的事情的一个很好的描述,所以我会在这个想法上停留一段时间。
-
听起来你可能误解了我默认隐藏它们的意思。这指的是使用 css 来设置默认隐藏的元素,一旦页面加载。然后在必要时取消隐藏它们成为 javascripts 的工作。
-
@Taplar 我也会尝试一下。同时。现在看来,它“闪烁”的问题发生在 jQuery-3.3.1.js 的第 9548 行回调函数的“完整”部分。通过注释掉它来隔离它会使事情变得更糟,似乎没有任何效果。所以我又回到了原点。
-
据我了解,您在 devtools 中没有看到任何错误,因为没有。闪烁不是错误,它只是按照代码执行的顺序显示、隐藏和刷新事物的结果。因此,您只需跟踪代码的各个阶段并找出闪烁发生的原因。如果没有看到您的任何代码,任何人都很难提供帮助。看看你能不能创建一个minimal, complete, and verifiable example。
标签: jquery google-chrome-devtools