无法访问shadowRoot

问题描述 投票:0回答:2

我想在网站 https://sirus.one/#play 上传递验证码,并且我需要在 textarea.g-recaptcha-response -> div.innerText 中设置已解决的验证码值。 TextArea有shadowRoot,网站保存recaptcha的响应。

我尝试像这样访问shadowRoot:

document.querySelector("textarea.g-recaptcha-response").shadowRoot
,但结果为空。

如果我在控制台中打印该元素,则似乎 ShadowRoot 存在 screenshot

如何获取shadowRoot?

javascript dom
2个回答
0
投票

由于它是您试图解决的验证码,我认为这是一个合理的假设,即影子根尚未附加

mode: open
选项。因此,您将无法使用 ShadowRoot 属性来访问它

const div = document.querySelector('div');
const p = document.querySelector('p');

p.attachShadow({mode: 'open'});
div.attachShadow({mode: 'closed'});

console.log('Paragraph has accessible Shadow DOM:', !!p.shadowRoot); // true
console.log('Div has accessible Shadow DOM:', !!div.shadowRoot); // false
<p></p>
<div></div>


-1
投票

这是我的错误。我无法访问浏览器创建的shadowRoot。解决办法就是改变textarea的值:

document.querySelector("#g-recaptcha-response").value = "123"

© www.soinside.com 2019 - 2024. All rights reserved.