将iframe中的javascript变量传递给父框架

时间:2011-06-07 20:36:43

标签: javascript

所以我的iframe中有一个变量,如下所示:

 <script>
var zipphone = "<?= $phone ?>";
 </script>

现在我想在加载iframe后将该变量传递给父框架。最简单的方法是什么?

2 个答案:

答案 0 :(得分:12)

如果页面都在同一个域上,则可以调用父窗口的函数:

window.parent.zipPhoneCallback(zipphone);

在父窗口中,您可以定义如下函数:

function zipPhoneCallback(zipphone) {
    ((console&&console.log)||alert)("zipphone = " + zipphone);
}

答案 1 :(得分:2)

请注意,似乎a Chrome browser issue with addressing variables from webpages to or from IFRAMES.此问题出现在离线测试中。

除此之外,假设您的浏览器实际上实现了Javascript的基本功能,您可以使用window.myiframename.zipphone从主网页处理您的变量

<IFRAME NAME="myiframename" SRC="myzipphoneiframefile.htm" ....

<script type="text/javascript">
<!--
// then whatever you do with your variable 
// read it
var z = window.myiframename.zipphone;
// write to it
window.myiframename.zipphone = "....";

等等。

实施例

DOC1.HTM内容 -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>DOC1.HTM</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
</head> 
<body bgcolor=pink> 

<h1>DOC1.HTM</h1> 

<iframe name="iframename" src="doc2.htm"></iframe> 
<p> 
<br /> 
<a href="#" onclick="alert('The value of the variable test_var set by a script in DOC2.HTM embedded in the DOC1.HTM page by an iframe named IFRAMENAME as read from a script running in DOC1.HTM appears to be - ' + window.iframename.test_var);return false;">check variable</a> 
</p> 

</body> 
</html> 

DOC2.HTM内容 -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<title>DOC2.HTM</title> 
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> 
</head> 

<body bgcolor=red> 

<script type="text/javascript"> 

var test_var="testing, testing . . ."; 

</script> 


<h1>DOC2.HTM</h1> 
</body> 
</html> 

即使使用旧版本的Internet Explorer也能很好地工作,但是在使用Chrome和window.iframename.test_var进行离线测试时尝试使用它,因为Chrome问题似乎未定义。

无论如何,请留意未来版本的Chrome修复这个问题,因为在他们没有的时候,谷歌面临很多鸡蛋。

我在Chrome离线测试中解决了这个问题。

感谢Lucy24在WebmasterWorld上的帮助。 http://www.webmasterworld.com/google_chrome/4689258.htm#msg4689342

当我的javascript正在测试离线时,Chrome出现了这个问题,文件doc1.htm和doc2.htm位于我的PC上的同一个文件夹中。

移动doc1.htm&amp; doc2.htm文件到我测试我的服务器端php程序的文件夹,它使用Windows Internet服务管理器运行意味着我可以使用地址和宾果来解决文件,Chrome的行为应该在离线模式下运行。

它不是合法的&#34;在我看来,Chrome的javascript无法直接处理同一个脱机文件夹中的文件。

当您在自己的PC上运行自己的javascript文件时,绝对没有安全问题。或者,如果Chrome想要提供允许或禁止离线IFRAME变量作用域的安全设置,那么就可以了,这没关系。

我提交的错误消息一点也不清楚,Lucy24很好地弄清了它的含义。

如果Internet Explorer和Firefox等允许您离线测试您的JavaScript,那么为什么不使用Chrome?

Lucy24做得很好。 Chrome不太好。