[英]How can I interact with browser-inserted Shadow DOM content in an input field?
目前我正在尝试设置一个函数,该函数将单击<input type=time>
内的小时钟,但无法找到标签的 innerHTML 以找到时钟。
这就是我想要做的:
html
<input id='timeInput' type='time'/>
JS
document.getElementById("timeInput").children('clockIcon').click()
但是当我运行document.getElementById('timeInput').innerHTML
时,我得到空值。
我认为这与 Shadow DOM 有关,但一直无法找到有关 shadow DOM 输入的信息。
我以前能够检查隐藏的浏览器 HTML,但无法找到以前的资源。 有任何想法吗?
具体来说,我的应用程序仅在 Chrome 和 Opera 浏览器上显示,因为它是 Chrome 扩展程序。
无法与影子 DOM 交互。 影子树的全部目的是将功能、行为和样式与外界隔离——即使模式是“开放的”。 如果特定组件的作者希望您能够控制行为或样式,他们将为此提供 API。 如果作者没有为它提供 API,他们不希望你乱用它。
在使用表单字段时,我的经验法则是始终遵循以下规则之一:
例如,自动显示时间选择器会使注意力从用户正在做的事情上转移开。 也许屏幕阅读器正在阅读一些文本,或者高级用户正在使用他们的键盘在导航中切换,然后突然他们在他们不想成为的时间选择器上。
无论您做什么,都不要尝试滚动您自己的精美表单控件。 我保证你会惹恼你的一位用户。
有一种方法可以用纯 js 与开放的 shadow dom 进行交互,比如点击
例子:
document.querySelector("shadowRootsCss").shadowRoot.querySelector("#timeInput").click()
如果您使用谷歌浏览器,检查并找到该元素,在该元素上,单击:复制 js 路径
然后,您将获得需要单击的路径
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.