检查 HTML5 日期选择器阴影 DOM

Posted

技术标签:

【中文标题】检查 HTML5 日期选择器阴影 DOM【英文标题】:Inspect HTML5 date picker shadow DOM 【发布时间】:2015-07-02 18:31:37 【问题描述】:

我正在尝试检查某些 html5 控件的影子 DOM,例如 input type="date" 的日期选择器和绑定到 datalist 的输入的实际建议下拉列表。最好在 Chrome 中,但其他浏览器也可以。

我发现,通过在 Chrome 的检查器选项中启用 Shadow DOM 设置,我可以检查影子 DOM 中的实际 input(其中包括用于显示日期选择器的 ::-webkit-calendar-picker-indicator 箭头),但不能检查日期选择器本身:

datalist 也是如此。看起来这些控件不是输入的一部分,但我也无法在元素面板的其他任何地方找到它们。

是否可以检查这些元素?

澄清的小编辑:我实际上是在寻找哪些伪类适用于哪些控件。有很多网站列出了其中的一些,但我还没有找到一个可以为datalist 元素列出::-webkit-calendar-picker-indicator 的源,它确实被应用了。我正在寻找更多那些鬼鬼祟祟的混蛋,而最好的来源当然是马嘴。

【问题讨论】:

【参考方案1】:

看起来实际的选择器加载在一个完全不同的层中(基本上是一个没有标题栏的不同窗口)。所以我想答案是:不,你不能。

我同意能够自定义它会很棒。还有类似的弹出窗口。 XUL 中的 Mozilla 有 display:popup 用于上下文菜单、弹出窗口和类似的东西。能够在用户态内容中使用它肯定很棒。

【讨论】:

太遗憾了,谢谢。我真的什至不想定制它,而只是检查它的结构并查看应用了哪些伪类。【参考方案2】:

Google Chrome 的日历弹出窗口不在 Shadow DOM 中。 它位于映射到弹出窗口的单独页面中。见WebPagePopupImpl.cpp

并且弹出的内容是written by HTML/javascript

【讨论】:

有趣!我似乎在您链接的源代码中唯一找不到的是它所构建的 HTML。在我能看到的所有东西中,使用的伪类似乎不见了。它们是否出现在代码中的任何位置?

以上是关于检查 HTML5 日期选择器阴影 DOM的主要内容,如果未能解决你的问题,请参考以下文章

日期范围选择器 html5

HTML5 日期选择器仅在第二次点击时打开

为啥 Android 原生 HTML5 日期选择器上的 Chrome 变得非常慢?

为 html5 原生日期选择器设置日历样式

vbscript HTML5输入类型日期 - 为日期选择器指定默认值

vbscript HTML5输入类型日期 - 为日期选择器指定默认值