【问题标题】:How can I find out what script is setting my element's visibility to hidden?如何找出将元素的可见性设置为隐藏的脚本?
【发布时间】:2011-09-20 20:28:59
【问题描述】:

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

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

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

【问题讨论】:

  • 使用 Firebug 或 IE 开发工具,您可以开始单步执行您的代码。
  • some ASP.NET AJAX and some jQuery:我的哀悼。

标签: javascript jquery asp.net-ajax


【解决方案1】:

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

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

然后,当您找到一些候选代码行时,使用 javascript 调试器(我最喜欢的是 Chrome 中内置的调试器)并在每一行上设置断点。然后,在设置断点后重新加载页面,当其中一个断点被命中时,您可以单步执行该部分代码并查看谁在执行此操作。那时,您甚至可以查看调用堆栈,看看是什么代码调用了这个等等。或者,您可以单步执行这段代码,然后进入调用它的更高级别,看看他们为什么这样做。

如果是 CSS 规则将其隐藏,那么您需要查看触发这些 CSS 规则(类、ID 等)的原因,并弄清楚如何更改其中一个或另一个,以便您想要的对象不会被该 CSS 规则隐藏。请记住,可以通过 javascript 从 DOM 中的对象中添加/删除类,因此这也可能是原因的一部分。

【讨论】:

    【解决方案2】:

    使用Firebug,您可以在整个脚本中设置断点并观察变量在不同点的变化。在你的变量上设置一个监视并在你的脚本中设置断点来尝试找出它何时被设置。祝我好运,在它变得痛苦之前我已经遇到了这个问题

    【讨论】:

      【解决方案3】:

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

      CSS

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

      修改脚本可能会破坏其他内容。 有时在生产环境中,您不允许修改其他预先存在的脚本。 有时只是不值得花时间弄清楚它是什么脚本。特别是如果页面上有 10-20 个脚本可以随时更新或更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-08-22
        • 2013-07-06
        • 2023-03-03
        • 1970-01-01
        • 2020-10-30
        • 2011-12-29
        相关资源
        最近更新 更多