在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&origin=http%3A%2F%2Flocalhost%3A46916&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的负载(不是同一个域,动态添加)?