如何检查浏览器中消失的元素?


152

我如何检查鼠标移开时消失的元素? 示例下拉列表消失了

我不知道它是ID,类还是什么,但想检查一下。

我尝试过的解决方案:

在控制台中运行jQuery选择器,$('*:contains("some text")')但没有运气,主要是因为该元素未隐藏,但可能已从DOM树中删除。

手动检查DOM树中的更改并没有给我任何帮助,因为似乎太快就无法注意到更改了。

成功:

我已经成功实现了事件断点。具体来说-就我而言是mousedown 只需Sources-> Event Listener Breakpoints-> Mouse-> mousedown在Chrome中进入即可。之后,我单击了要检查的元素,并在内部Scope Variables看到了一些有用的说明。


2
尽管我没有使用源代码到达断点,但您的问题有所帮助,但是我在控制台中执行了以下脚本:使document.body.addEventListener('mouseup',function(){ debugger; })我陷入了困境,可以检查创建的元素。
HMR

你摇滚 React-Select控件有这个确切的问题,在这里我无法查看列表项目的HTML,因为只要单击鼠标,子树就会删除。需要使用项目ID才能使用Selenium自动执行点击。谢谢!
araisbec

Answers:


177

(此答案仅适用于Chrome开发者工具。请参见下面的更新。)

查找包含消失元素的元素。右键单击该元素,然后应用“中断...>子树修改”。这将在元素消失之前引发调试器暂停,这将允许您在暂停状态下与元素进行交互。

在此处输入图片说明

更新2019年10月22日:随着70版本的发布,FireFox看起来终于支持了这种调试2 3

在此处输入图片说明


1
为避免造成混淆,调试器将在您触发事件时暂停,也就是输入地名。当屏幕暂停时,只需点击DOM本身上的播放按钮,就可以触发事件。
Dylan Pierce

如果页面捕获了右键单击,并且单击鼠标右键是它自己的事,则此方法不起作用。
迈克尔

此操作不适用于同一容器中的两个对话框中的第一个对话框
Still_learning

@Still_learning您能否解释“在同一容器中的两个对话框”的含义。
arxpoetica

<v-container><v-dialog></v-dialog><v-dialog></v-dialog></v-container>-在我的情况下,仅显示第一个对话框,直到数据从数据库到达为止,大约1秒钟
Still_learning

92

Chrome中的另一种方法:

  • 打开devTools(F12)。
  • 选择“来源”标签。
  • 显示所需元素时,请按F8(或Ctrl + /)。这将中断脚本的执行,并完全冻结“ DOM”的显示状态。
  • 从这一点开始,使用Ctrl + Shift + C选择元素。

3
完善!!这正是我想要的
Daniel Loiterton

2
我注意到这仅在您已经在“源”选项卡中打开开发人员工具时有效。
hbulens

3
它确实冻结了执行代码,但元素仍然消失了(我正在使用React)。
Lorem Ipsum Dolor

我的Chrome浏览器说的是F8或Crtl + \(不是Crtl + /)。另外,Crtl + \在我的情况下不起作用...
Roger Veciana

这确实不是工作在谷歌视频控制弹出窗口...的控制似乎从视线消失,因为只要你打的密钥,并冻结发生之前已经完全淡出。
迈克尔

18
  1. 打开控制台
  2. 输入 setTimeout(()=>{debugger;},5000);
  3. 按Enter

现在您有5秒钟的时间使您的元素出现。一旦出现,请等待调试器点击。只要您不继续,就可以使用您的元素,并且它不会消失。


避免每次重复上述步骤的有用提示:

将此添加为书签:

  1. 为任何页面添加书签
  2. 编辑这个新书签
  3. 将URL /位置替换为: javascript:(function(){setTimeout(()=>{debugger;},5000);})();

下次您希望使用此书签时,只需单击/点击此书签。


1
这是调试消失元素的最快,最稳定的方法^
warmwhisky

8

我在Mac上使用chrome,我已经按照上述步骤操作,但是我将尝试说明更多内容:

  1. 右键单击并检查元素。
  2. 转到源标签。
  3. 然后将鼠标悬停在元素上。
  4. 然后使用键盘F8 Command(Window) \。它将以静态状态暂停屏幕,并且该元素在悬停时不会消失。

1
谢谢,谢谢您的详细说明!在显示了极高的灵活性之后-单击按钮,然后按Ctr + Shift + C,将鼠标移到元素上并F8在半秒的间隔内按下-我终于使我的元素处于可检查模式
Still_learning

2

在Firebug中,有不同的解决方案:

  1. 您可以在HTML面板内使用Break On Mutate。(与此同时,您还可以找出它是哪个元素)
  2. 您可以右键单击该元素,然后选择使用Firebug检查元素

另外,您可能需要遵循问题551,该问题要求一种暂时阻止特定事件的方法。

编辑:

要找出它是哪个元素,您还可以启用HTML面板选项“ 突出显示更改”,“ 展开更改”和“ 将更改滚动到视图”将以使该元素在HTML面板内可见。

塞巴斯蒂安


Chrome也有不错的检查器。问题是-在元素上单击鼠标右键使其消失。Chrome浏览器还具有Break on DOM突变。这个问题-我不知道它是动态生成的元素
-lukas.pukenis

1
我只是编辑了答案,以提示如何了解它是哪个元素。
塞巴斯蒂安·扎特纳

2

就我而言,我在Google chrome上使用了“ 递归扩展”选项:

这些步骤是:

  1. 检查下拉字段
  2. 查找动态DOM(紫色突出显示)
  3. 右键单击该动态DOM
  4. 选择递归扩展在此处输入图片说明
  5. 我们可以看到所有元素都在那里

这是一个演示:

在此处输入图片说明


2

用鼠标悬停在元素上,然后按F8键(在Chrome中为this)以暂停脚本执行。悬停状态对您仍然可见。

它带您到“源”选项卡。返回到“元素”选项卡。此时间代码不会消失。


0

您可以在元素下的检查器中查看出现和消失的元素。如果您在可见时导航到该元素,则应该可以看到它消失或当状态更改时看到它的css更改。

Firefox中的萤火虫或Chrome中的内置检查器可以实现此目的。


1
是。我已经说过,DOM中的更改发生得太快,并且页面会大量修改DOM,所以它实际上不是一个解决方案,因为我无法从各处的大量修改中区分出所需的元素:)
lukas.pukenis

您可以尝试使用console.log跟踪发生的情况,例如,在要检查的功能开始时,您可以查看对象的CSS等。或者放慢更改的速度,直到您知道它们可以正常工作,然后将速度更改为所需的速度希望它成为例如jquery中的hide('slow')
matpol

问题是-它不是我自己的代码库,而是一个古老的,大型的,旧的代码库,通过文件进行简单搜索不会给我带来任何好处。:)
lukas.pukenis

您也可以在检查器中查看该页面正在使用哪些文件。我将通过删除它们直到它崩溃,然后查看破坏它的文件并从那里开始。您也可以随时搜索实际文件。
matpol


0

我遇到了同样的问题,但是我使用Firefox,一旦打开检查元素,它就会消失:找到4个破折号(设置),前往Web开发人员>调试器,然后立即按F8键,这是停止脚本的暂停的快捷方式在发现并打开开发人员工具之前

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.