无法将子项附加到 iframe
Can't append child to iframe
本文关键字:iframe 更新时间:2023-09-26
我正在尝试向YouTube iframe
元素添加div
,以便我可以在视频中显示内容。但是这个代码:
<!DOCTYPE html>
<html>
<body>
<iframe id="player" width="854" height="480" src="https://www.youtube.com/embed/Jn9r0avp0fY" frameborder="0" allowfullscreen></iframe>
<script>
var player = document.getElementById('player');
var div = document.createElement('div');
div.id = 'newDiv';
div.innerHTML = 'Hello, world!';
player.appendChild(div);
</script>
</body>
</html>
完全没有效果。我可以使用JavaScript来确认div
确实在document.getElementById('player').children
,但是在检查页面上的元素时,它无处可寻。为什么会这样?
更新:所以我发现这个网站 https://www.reembed.com/成功地将自己的元素覆盖在YouTube嵌入式iframe
播放器之上,但我不知道他们是如何实现的。
您可以使用该div 的位置绝对和顶部、左侧 CSS 属性来实现这一点,而无需在 Iframe 中插入div。
这是在 iframe 中附加元素的解决方案。
<!DOCTYPE html>
<html>
<body>
<iframe id="player" width="854" height="480" src="https://www.youtube.com/embed/Jn9r0avp0fY" frameborder="0" allowfullscreen></iframe>
<script>
setTimeout(function() {
var player = document.getElementById('player');
var iframeDocument = player.contentDocument || player.contentWindow.document;
var div = document.createElement('div');
div.id = 'newDiv';
div.style.fontSize = '50px';
div.innerHTML = 'Hello, world!';
if (iframeDocument) {
var iframeContent = iframeDocument.getElementsByTagName('body');
console.log(iframeContent);
iframeContent[0].appendChild(div);
}
}, 100);
</script>
</body>
</html>
但是请确保您在同一源上访问iframe,否则将遇到跨源安全问题。
检查跨源安全问题安全错误:阻止具有源的帧访问跨源帧
相关文章:
- 防止Iframe窗体在新窗口中打开
- 将样式表插入iframe
- 在Twitter上用ie9中的空白src访问iframe的contentWindow
- 使用jQuery从原始页面内容创建iframe
- Highslide(iframe的侦听器)
- iframe正在添加标签,需要删除它们
- 通过javascript/html访问twitter共享iframe
- 如何在Facebook上的iframe应用程序中使后退按钮返回到上一页
- 如何使用Angular动态添加iframe-src
- 由于iframe导致的问题
- 正在从页面中删除iframe
- 检测iframe是否跨域的愚蠢方法
- 是否可以使用iframe API在iOS浏览器上播放youtube视频
- 如何操作iframe之外的元素
- 如何使用javascript/jquery获取iframe的URL的锚点属性
- 对特定的iframe使用javascript书签
- node-webkit-从父窗口捕获iframe鼠标事件
- 重定向iFrame中的父URL
- 如何关闭html中的iframe弹出窗口
- Protractor:在Iframe中测试非角度应用程序