如何找出将元素的可见性设置为隐藏的脚本?

我正在处理一个包含许多不同脚本的复杂页面,一些ASP.NET AJAX和一些jQuery。

出于某种原因,当页面加载其中一个元素时,其可见性设置为隐藏。

有什么可以告诉我是什么导致这个元素不可见? 或者甚至可以阻止在任何脚本中发生的事情的东西正在这样做,所以我可以看到它是什么?

使用DOM检查器(如Chrome中内置的检查器)首先确定是否由于CSS规则将其设置为隐藏,或者是通过直接内联样式设置以编程方式将其设置为隐藏。

如果它以编程方式设置为隐藏,那么我唯一知道的是搜索所有可能改变可见性的javascript代码。

然后,当您找到一些候选行代码时,请使用javascript调试器(我最喜欢的是Chrome内置的调试器)并在每行上设置断点。 然后,在设置断点后重新加载页面,当其中一个断点被击中时,您可以单步执行代码的这一部分,看看是谁在做。 此时,您甚至可以查看调用堆栈并查看调用此代码的代码,依此类推。 或者,您可以逐步执行此代码,并将其调用到调用它的更高级别,并了解它们为何会这样做。

如果它是隐藏的CSS规则,那么你需要查看触发那些CSS规则(类,ID等等)的内容,并找出如何更改其中一个或另一个以便所需的对象不是隐藏的CSS规则。 请记住,可以通过javascript从DOM中的对象添加/删除类,这也可能是原因的一部分。

使用Firebug,您可以在整个脚本中设置断点,并观察变量在不同点上的变化。 在变量上设置监视并在脚本中设置断点以尝试确定何时设置它。 祝你好运我遇到这个问题之前可能会感到很痛苦

你可以尝试调试..或者你可以用这样的东西覆盖它:

CSS

 #element, .elements{ visibility: visible !important; } 

修改脚本可能会破坏其他内容。 有时在生产环境中,您不能修改其他预先存在的脚本。 有时候只是不值得一直试图找出它是什么剧本。 特别是如果页面上有10-20个脚本可以随时更新或更改。