在javascript中读取iFrame(不在同一个域-YouTube)中的div状态[重复]

Posted

技术标签:

【中文标题】在javascript中读取iFrame(不在同一个域-YouTube)中的div状态[重复]【英文标题】:Read status of a div in an iFrame (not in the same domain - YouTube) in javascript [duplicate] 【发布时间】:2019-08-09 16:34:01 【问题描述】:

我正在尝试检测 Youtube 中“更多视频”栏的状态,当您按下暂停时会显示该栏,那里有两个选项。或者该栏是否可见,并且该按钮仅显示。 (display:block or display:none) 我想知道按钮什么时候显示,这意味着用户已经最小化了“更多视频”栏。

这里需要注意的重要一点是,这是跨域的,因此 Cors 会阻止更改,但如果只是请求信息,它也会阻止吗?为了让它接近核心,我只想使用 vjavascript

这将是搜索元素的选项,但我不想更改它,而是想知道状态(显示:块或显示:无)

var iframe = document.getElementById("myFrame");
var elmnt = iframe.contentWindow.document.getElementsByTagName("H1")[0];
elmnt.style.display = "none";

还需要注意的是,使用了 Youtube-Api,所以我自己没有在页面上添加 iFrame。但是,一旦 iframe 加载完毕,请求可以稍后发送。

我很想知道这个 div:

<iframe id="player" frameborder="0" allowfullscreen="1" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" 
title="YouTube video player"   src="https://www.youtube.com/embed/xxx?enablejsapi=1&amp;origin=http%3A%2F%2Flocalhost%3A46916&amp;widgetid=1">
#document
<body>
 <div id="player" ....
   <div class="class="html5-video-player .....
     <div class="ytp-pause-overlay ytp-scroll-min"...
 ...
</body>
</iframe>

【问题讨论】:

【参考方案1】:

您甚至不允许从另一个域中读取帧。您需要通过自己的服务器代理请求并在返回响应之前播放内容。需要明确的是,没有仅客户端的 JavaScript 解决方案。

【讨论】:

以上是关于在javascript中读取iFrame(不在同一个域-YouTube)中的div状态[重复]的主要内容,如果未能解决你的问题,请参考以下文章

在javascript或jQuery中检测iframe的负载(不是同一个域,动态添加)?

优化完全相同的 iframe 的加载

如何防止 iFrame 中的 JavaScript 访问外部站点的属性,即使 iFrame 的内容来自同一来源?

读取 iframe 重定向(同域)

如何使用 Javascript 访问 iframe 元素?

在 iFrame 中安全地执行 HTML5/Javascript