Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 阴影不清晰_Javascript_Jquery_Html_Google Chrome - Fatal编程技术网

Javascript 阴影不清晰

Javascript 阴影不清晰,javascript,jquery,html,google-chrome,Javascript,Jquery,Html,Google Chrome,我需要访问具有阴影DOM的打开窗口的body元素。在浏览器上运行此代码(您需要禁用浏览器上的第三方安全): janela=窗口。打开(“http://www.google.com.br"); window.setTimeout( 函数(){ log(janela.window.document.body.innerHTML); }, 5000 ); 如果您在控制台上看到,将有一个空字符串。现在将URL更改为,它工作正常:主体innerHTML显示在控制台中 我看到Google现在正在使用Sh

我需要访问具有阴影DOM的打开窗口的body元素。在浏览器上运行此代码(您需要禁用浏览器上的第三方安全):


janela=窗口。打开(“http://www.google.com.br");
window.setTimeout(
函数(){
log(janela.window.document.body.innerHTML);
},
5000
);
如果您在控制台上看到,将有一个空字符串。现在将URL更改为,它工作正常:主体innerHTML显示在控制台中


我看到Google现在正在使用ShadowDOM,这可能是造成我问题的原因。在您的浏览器->F12中打开Google.com,您将看到有一个#shadow root元素,我认为这造成了我的问题。我怎样才能绕过它并访问DOM?

影子DOM的整个概念是封装,因此您不能在创建它的上下文之外使用JavaScript访问影子DOM。

影子DOM的整个概念是封装,因此,不能在创建阴影DOM的上下文之外使用JavaScript访问阴影DOM。

阴影DOM与此无关。你的浏览器不想让任何随机的网站打开gmail.com之类的东西,然后阅读他们在那里看到的任何东西。如果是这样的话,那么你访问的任何网站都可以在你登录你的gmail帐户时阅读你的所有电子邮件

请阅读“跨源脚本API访问”部分

iframe.contentWindow、window.parent、window.open和window.opener等JavaScript API允许文档直接相互引用。当两个文档的原点不相同时,这些引用提供了对窗口和位置对象的非常有限的访问,如下面两节所述


阴影DOM与此无关。你的浏览器不想让任何随机的网站打开gmail.com之类的东西,然后阅读他们在那里看到的任何东西。如果是这样的话,那么你访问的任何网站都可以在你登录你的gmail帐户时阅读你的所有电子邮件

请阅读“跨源脚本API访问”部分

iframe.contentWindow、window.parent、window.open和window.opener等JavaScript API允许文档直接相互引用。当两个文档的原点不相同时,这些引用提供了对窗口和位置对象的非常有限的访问,如下面两节所述



谢谢你澄清这一点。但是,如果我在阴影DOM之外(在我提供的示例中,我在阴影DOM之外),为什么我不能访问DOM本身?那么,如果没有阴影,我如何访问DOM树?@Amandanovas您应该能够访问它。这不是由阴影DOM引起的。您测试过我的示例吗?由于阴影,我无法访问DOM。我的例子适用于任何其他网站(bing、gmail、yahoo…),但不适用于Google.com。我无法访问窗口的内容,可能是因为阴影。您能执行此代码并告诉我结果吗?使用--disable web security标志运行chrome,以避免第三方阻止。我看到一个空警报。谢谢你澄清这一点。但是,如果我在阴影DOM之外(在我提供的示例中,我在阴影DOM之外),为什么我不能访问DOM本身?那么,如果没有阴影,我如何访问DOM树?@Amandanovas您应该能够访问它。这不是由阴影DOM引起的。您测试过我的示例吗?由于阴影,我无法访问DOM。我的例子适用于任何其他网站(bing、gmail、yahoo…),但不适用于Google.com。我无法访问窗口的内容,可能是因为阴影。您能执行此代码并告诉我结果吗?使用--disable web security标志运行chrome,以避免第三方阻止。我看到一个空警报。请使用不支持WebComponents的浏览器:)所有页面在Chrome DevTools中都有一个
#shadow root
。这并不意味着他们实际上使用的是影子DOM。除此之外,您的问题与影子DOM无关,而可能与同源策略有关。在你的Chrome上,再试一次-你的代码为me@RGraham不,你错了。我已经在我的Chrome浏览器中使用了--disable web security标志。您的代码在该标志下对我有效。请使用不支持网络组件的浏览器:)所有页面在Chrome DevTools中都有一个
#shadow root
。这并不意味着他们实际上使用的是影子DOM。除此之外,您的问题与影子DOM无关,而可能与同源策略有关。在你的Chrome上,再试一次-你的代码为me@RGraham不,你错了。我已经在我的Chrome上使用了--禁用web安全标志。你的代码在我使用的那个标志上对我起了作用--在我的Chrome上禁用web安全标志,所以你错了。我只是想做一些测试,你们可能不理解我的问题。我在我的Chrome浏览器中使用--disable web security标志,所以你们错了。我只是想做这个测试,你可能不理解我的问题。
<script type="text/javascript">
janela = window.open("http://www.google.com.br");

window.setTimeout(

    function() {

        console.log(janela.window.document.body.innerHTML);

    },
    5000

);
</script>