我制作了一个网站,它会打开一个带有以下JavaScript代码的弹出窗口:
document.getElementById("i_song_name").innerHTML =
'<iframe width="100" height="100" src="https://www.youtube.com/v/FjNdYp2gXRY?autoplay=1" id="i_song_name_i"></iframe>';
此代码将ifra
标记添加到spans
标记。
然后在JS中,我想用以下代码获得YouTube网站的标题:
document.getElementById("h3").innerHTML =
document.getElementById("i_song_name_i")
.contentWindow.document.head
.getElementsByTagName("title")[0].innerHTML
.replace(" - YouTube", "");
所以我想有这个代码:
<span id="i_song_name">
<iframe width="100"
height="100"
src="https://www.youtube.com/v/FjNdYp2gXRY?autoplay=1"
id="i_song_name_i"></iframe>
</span>
<div id="h3">Ahrix - Nova [NCS Release]</div>
不幸的是,我的浏览器(谷歌Chrome),仍然打印一个错误:
SecurityError:阻止了原点为“null”的帧访问跨原点帧。
知道如何解决这个问题吗?
我解决了!我用的是YouTube API,效果很好:)
编辑(2015年12月):这是代码的修复版本:
<!DOCTYPE HTML>
<html>
<head>
<style>
#player {
display: none;
}
</style>
</head>
<body>
<div id="player"></div>
<div id="h3"></div>
<input type="text" placeholder="Type YTB link here" id="input_ytb_link">
<input type="button" value="Confirm!" id="confirm_btn">
<script>
/* String.startsWith(str) */
if (typeof String.prototype.startsWith != 'function'){String.prototype.startsWith = function (str){return this.indexOf(str) == 0;};}
var tag = document.createElement('script'),
player;
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubeIframeAPIReady() {
// do nothing...
}
function setPlayer(w, h, url, eventz) {
if (/^https?:\/\/(www\.)?youtube\.com\/.+\?(.+)?v=(.+)?$/.test(url)) {
if (document.getElementById('player'))
document.getElementById('player').outerHTML = '<div id="player"></div>';
player = undefined;
document.getElementById('h3').innerHTML =
'Processing, please wait a second...';
var pos = url.indexOf('v='),
id = url.substring(pos+2,pos+13);
player = new YT.Player('player', {
height: h,
width: w,
videoId: id,
events: eventz
});
}
}
function onPlayerReady(evt) {
document.getElementById('h3').innerHTML =
evt.target.getVideoData().title;
//evt.target.playVideo();
}
confirm_btn.addEventListener('click', function(){
setPlayer('1','1', input_ytb_link.value, {'onReady':onPlayerReady});
});
</script>
</body>
</html>
谢谢大家的帮助!!
我在Symfony 1.4 prod中的tinymce有问题。任何Iframe都会给我一个空白窗口,并伴有错误:“安全错误:阻止了一个原点为[url]的帧访问一个跨原点帧。” 但是在dev上工作很好!!!
我已经为我的站点使用了mautic时事通讯。 下面是我的代码。 这是我的 当我尝试提交时,控制台上显示以下错误: app.js:190未捕获的DOM异常:阻止原点为“https://resources.incarta.com.au”的帧访问跨原点帧。
安全错误:阻止源"http://www.app.teste.com"的帧访问跨源帧。 我知道有人发过同样的帖子。但我创造这个是因为我有一个特定的问题。 这个错误发生在第一次访问时,当我按f5重新加载页面时效果很好。
我正在尝试列出页面中所有 的名称,以便我可以通过 Selenium 访问它们。 问题是的名称每次都会更改,因此我需要循环遍历所有这些名称。 我得到: 未捕获的DOMException:阻止了具有原点的帧“http://localhost:8080“访问交叉原点框架。 当我尝试使用以下命令循环遍历它们时出错: 有没有办法以不同的方式获取 的名称?