日期:2014-05-16  浏览次数:20307 次

iframe向父页面传值的问题
父页面:

<div id="playlist"><iframe scrolling="no" src="1.asp" frameborder="0" id="playframe" name="playframe" width="100%" height="566"></iframe>
</div>

子页面:

<div id="test">asd</div>


如果我在父页面定义一个JS变量,如何让这个变量等于"asd"

<script language="javascript">
var str="asd";
</script>

------解决方案--------------------
说明document.getElementById("playframe")没取到,在onload事件里执行 
window.onload=function(){
var cwin=document.getElementById("playframe").contentWindow;
var str=cwin.document.getElementById("test").innerHTML; 
alert( str )
}
------解决方案--------------------
子页面的脚本既可以给父页面的变量(全局)赋值,也可以操作父页面上的dom元素。
在子页面中,用“window.parent”(window.可以省略)取到父窗口,然后就可以进行操作了,如:

parent.x='value';//给父页面上的变量x赋值字符串‘value’
parent.document.getElementById('test').innerHTML='content';//在父页面上id为test的元素内填充“content”

------解决方案--------------------
改成全局变量,其它地方就可调用到

window.onload=function(){
var cwin=document.getElementById("playframe").contentWindow;
 str=cwin.document.getElementById("test").innerHTML;  //不加var 全局变量
alert( str )
}

------解决方案--------------------
子页面:window.parent.setShippingResult(value, PostageType);
父页面: function setShippingResult(value, PostageType) {
        $("#PostageUsd").html(value);
        $("#_PostageType").val(PostageType);
    }