【发布时间】:2021-09-22 20:16:28
【问题描述】:
目前我正在尝试设置一个功能,该功能将点击 <input type=time> 内的小时钟,但无法找到标签的 innerHTML 以找到时钟。
这就是我想做的:
html
<input id='timeInput' type='time'/>
JS
document.getElementById("timeInput").children('clockIcon').click()
但是当我运行 document.getElementById('timeInput').innerHTML 时,我得到了 null。
我认为这与Shadow DOM有关,但一直无法找到有关shadow DOM输入的信息。
我以前能够检查隐藏的浏览器 HTML,但无法找到以前的资源。有什么想法吗?
具体来说,我的应用程序仅在 Chrome 和 Opera 浏览器上显示,因为它是 Chrome 扩展程序。
【问题讨论】:
-
从documentation 可以看到,并非所有浏览器的输入中都有这个时钟图标。如果有帮助,使用
document.getElementById('timeInput').focus()可以让用户进入<input>? -
如果你使用一个输入,我建议你添加一个名称标签,它使
querySelector更容易定位,就像在document.querySelector('input[name="inputname"]').click中选择时钟本身很棘手,你的innerhtml会不起作用,因为输入标签本身没有任何内容。我更愿意为其添加一个真正的时钟图标,而不是让浏览器解决您的问题,因为每个浏览器处理输入类型time不同 -
附带说明:并非所有浏览器都支持
<input type="time">。因此,为了使其更容易和跨浏览器,我建议(就像@Dorvalla 一样)创建@987654337 的自定义组合@ 或<select>具有自定义交互,使其在所有浏览器上都相同,并且能够更精确地控制交互。 -
document.getElementById('timeInput').shadowRoot会返回任何东西吗?如果没有,那么你需要打开 shadow DOM。 developer.mozilla.org/en-US/docs/Web/Web_Components/…
标签: javascript html chromium shadow-dom