在主框架页面中调用子框架页…

来源:互联网 发布:深信服上网行为js 编辑:程序博客网 时间:2024/05/17 08:37
原文地址:在主框架页面中调用子框架页面的js函数作者:红龙苍鹰

在主框架页面中调用子框架页面的js函数
parent.function()

都可以,top.框架名.函数名(),但页面必须是在同一域下

示例
frame.htm
<frameset cols="200,*">
<frame name=a src="a.htm" />
<frame name=b src="b.htm" />
</frameset>

a.htm
<body>A
<buttononclick="top.b.AlertMethod()">B alertMethod</button>
</body>

b.htm
<body>
<script>
function AlertMethod(){
alert("alert at page b");
}
</script>B
</body>
<!---------------------------------------------------------------->
可以,但是不能跨域


主框架调用子框架可以用如下形式:
window.frames['subframe_name'].subframe_fun()//不记得是frames['subframe_name']还是frames('subframe_name') 但是frames[i](i为该frame出现的位置0开始)
window.subframe_name.subframe_fun()

子框架调用父框架可以用:
parent.parentframe_fun() //直接上级
top.parentframe_fun() //直接上级或者顶层frame

兄弟框架可以:
parent.brotherframe_name.brotherframe_fun()
其他关系可以据此类推。关键一点是根据文档对象模型进行调用。一般浏览器的Javascript引擎都有个文档对象模型,当然如果实现了DOM(这个跟前面说浏览器本身的文档对象模型不完全相同)的可以根据w3c的DOM模型进行调用。
<!---------------------------------------------------------------->
是这样的形式
window.parent.frames['subframe_name'].subframe_fun()

不能跨域是什么意思?
就是只能调用相同网站页面里的js
比如sina.com的页面不能调sohu.com页面里的js,就算把他们放在同一个框架页面里
<!---------------------------------------------------------------->

<input type="hidden" name="fileId"id="fileId">
<script language="JavaScript"type="text/javascript">
<!--
function alertUrl(ufid)
{
if(ufid==null || ufid==""){
ufid=0;
}
//alert(forward);
var ffid = document.getElementByIdx_x("fileId").value;
ffid = ffid+","+ufid;
document.getElementByIdx_x("fileId").value = ffid;
alert(document.getElementByIdx_x("fileId").value);

}
//-->
</script>
<iframe frameborder="0" height="130"style="margin:0;padding:0;" width="95%" src="up4.jsp"scrolling="no"></iframe>

up4.jsp
<script language="JavaScript"type="text/javascript">
<!--
parent.alertUrl('123');
alert("上传成功!");
document.location.href = "up.jsp";
//-->
</script>

0 0
原创粉丝点击