我有一个iframe,我需要使用那个iframe从主框架中运行的脚本创建一个新对象。问题是,当我以这种方式实例化一个对象时,它会返回undefined,所以我没有办法获取引用并操纵对象。
该示例显示了正在发生的事情:
//main.html
<html>
<script>
var iframe = document.getElementsByTagName("iframe")[0];
//it gives back undef instead of the new object
var foo = new iframe.contentWindow.Foo();
</script>
<iframe src="second.html"></iframe>
</html>
//second.html
<html>
<script>
window.Foo = function() {
this.bar = "BAR";
}
</script>
</html>
我知道这是造成的,因为主框架和iframe的执行环境不同,但有没有办法获取iframe上创建的对象的引用?
我试图将变量放到iframe的全局范围内,希望它可以工作,但它仍未定义:
//main.html
<html>
<script>
var iframe = document.getElementsByTagName("iframe")[0];
//I hoped this helps (because now the variable is on the same
//global environment), but still undefined
iframe.contentWindow.foo = new iframe.contentWindow.Foo();
</script>
<iframe src="second.html"></iframe>
</html>
//second.html
<html>
<script>
window.Foo = function() {
this.bar = "BAR";
}
</script>
</html>
答案 0 :(得分:0)
在主页面上,您可以定义页面名称:
<head>
<script>
window.name = "home";
var home = window;
var NS_MAIN = {
init:function(){
alert(home.SECOND.globalVal);
}
};
</script>
</head>
<body>
<iframe id="frame" src="secondPage.html" border="1" width="50%" height="50%"></iframe>
你的第二页
<head>
<script>
var NS_SECOND = {
globalVal:null,
init:function(){
home.SECOND= this;
NS_SECOND.globalVal="Hello";
}
};
</script>
</head>
<body>
</body>