js各框架中的互相访问
2015-08-01 10:53
567 查看
框架中的互相访问也是一个常常碰到的问题。每次总感觉记得不是很清楚,因此记录下来。
在父窗口获取iframe里头的元素对象
window.iframes["iframe的name"].document.getElementById("iframe里头的dom元素对象")
在子窗口获取父窗口里头的元素对象
window.parent.document.getElementById("父窗口里头的dom元素对象")
或者是
(第一个getElementById对象是子框架ID)
document.getElementById("xxx").contentWindow.document.getElementById("xxxx");
兄弟框架之间的互相访问
如果两个框架同为一个框架的子框架,它们称为兄弟框架,可以通过父框架来实现互相引用,例如一个页面包括2个子框架:
<frameset rows="50%,50%">
<frame src="1.html" name="frame1" />
<frame src="2.html" name="frame2" />
</frameset>
在frame1中可以使用如下语句来引用frame2:
self.parent.frames["frame2"];
不同层次框架间的互相引用
框架的层次是针对顶层框架而言的。当层次不同时,只要知道自己所在的层次以及另一个框架所在的层次和名字,利用框架引用的window对象性质,可以很容易地实现互相访问,例如:
self.parent.frames["childName"].frames["targetFrameName"];
对顶层框架的引用
和parent属性类似,window对象还有一个top属性。它表示对顶层框架的引用,这可以用来判断一个框架自身是否为顶层框架,例如:
//判断本框架是否为顶层框架
if(self==top){
//dosomething
}
对打开当前页面的窗口引用
window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,这个时候针对b.htm来说window.opener就是a.htm这个窗口。最常见应用就是比如通过百度打开了一个新的页面,那么针对新页面来说百度的窗口就是window.opener
例子:
父窗口gundong.html代码页:
<html>
<head>
<script type="text/javascript" src="http://192.168.0.247:1234/jscommon/jquery.js"></script>
<style type="text/css">
.fixtopclass {position:fixed;top:0px;z-index:100;}
.fixclass {position:fixed;z-index:100;);
</style>
<script type="text/javascript">
$(function(){
var frameobj;
$("ul li").on('click',function(i){
frameobj = window.frames["result"].document.getElementById('show');
var inner = $(this).text();
frameobj.innerHTML = "<font style='color:#ff0000'>"+inner+"</font>";
return false;
});
})
function test(){
var frameobj = document.getElementById("result").contentWindow.document.getElementById('show');
frameobj.innerHTML = "<font style='color:#ff0000'>我是大幅度改变你的内容</font>";
}
</script>
</head>
<body>
<ul>
<li><a target="result">好评</a></li>
<li><a target="result">中评</a></li>
<li><a target="result">差评</a></li>
<div id="test" onclick="test()">框架间的互相访问</div>
</ul>
<iframe name="result" id="result" width="300px" height="200px" src="frame.html"></iframe>
</body>
</html>
子窗口frame.html:
<html>
<head>
<script type="text/javascript" src="http://192.168.0.247:1234/jscommon/jquery.js"></script>
<style type="text/css">
.fixtopclass {position:fixed;top:0px;z-index:100;}
.fixclass {position:fixed;z-index:100;);
</style>
<script type="text/javascript">
function getparent()
{
var parentobj = window.parent.document.getElementById('test');
parentobj.innerHTML = "<font style='color:#ff0000'>我改变父框架div的内容1</font>";
}
</script>
</head>
<body>
<div id="show">看看上级框架能否获取到我!</div>
<input type="button" name="bt1" id="bt1" value="点击我" onclick="getparent()"></input>
</body>
</html>
参考:http://blog.csdn.net/doymm2008/article/details/5695541
http://computer.uoh.edu.cn/javascript/1329.html
在父窗口获取iframe里头的元素对象
window.iframes["iframe的name"].document.getElementById("iframe里头的dom元素对象")
在子窗口获取父窗口里头的元素对象
window.parent.document.getElementById("父窗口里头的dom元素对象")
或者是
(第一个getElementById对象是子框架ID)
document.getElementById("xxx").contentWindow.document.getElementById("xxxx");
兄弟框架之间的互相访问
如果两个框架同为一个框架的子框架,它们称为兄弟框架,可以通过父框架来实现互相引用,例如一个页面包括2个子框架:
<frameset rows="50%,50%">
<frame src="1.html" name="frame1" />
<frame src="2.html" name="frame2" />
</frameset>
在frame1中可以使用如下语句来引用frame2:
self.parent.frames["frame2"];
不同层次框架间的互相引用
框架的层次是针对顶层框架而言的。当层次不同时,只要知道自己所在的层次以及另一个框架所在的层次和名字,利用框架引用的window对象性质,可以很容易地实现互相访问,例如:
self.parent.frames["childName"].frames["targetFrameName"];
对顶层框架的引用
和parent属性类似,window对象还有一个top属性。它表示对顶层框架的引用,这可以用来判断一个框架自身是否为顶层框架,例如:
//判断本框架是否为顶层框架
if(self==top){
//dosomething
}
对打开当前页面的窗口引用
window.opener 返回的是创建当前窗口的那个窗口的引用,比如点击了a.htm上的一个链接而打开了b.htm,然后我们打算在b.htm上输入一个值然后赋予a.htm上的一个id为“name”的textbox中,这个时候针对b.htm来说window.opener就是a.htm这个窗口。最常见应用就是比如通过百度打开了一个新的页面,那么针对新页面来说百度的窗口就是window.opener
例子:
父窗口gundong.html代码页:
<html>
<head>
<script type="text/javascript" src="http://192.168.0.247:1234/jscommon/jquery.js"></script>
<style type="text/css">
.fixtopclass {position:fixed;top:0px;z-index:100;}
.fixclass {position:fixed;z-index:100;);
</style>
<script type="text/javascript">
$(function(){
var frameobj;
$("ul li").on('click',function(i){
frameobj = window.frames["result"].document.getElementById('show');
var inner = $(this).text();
frameobj.innerHTML = "<font style='color:#ff0000'>"+inner+"</font>";
return false;
});
})
function test(){
var frameobj = document.getElementById("result").contentWindow.document.getElementById('show');
frameobj.innerHTML = "<font style='color:#ff0000'>我是大幅度改变你的内容</font>";
}
</script>
</head>
<body>
<ul>
<li><a target="result">好评</a></li>
<li><a target="result">中评</a></li>
<li><a target="result">差评</a></li>
<div id="test" onclick="test()">框架间的互相访问</div>
</ul>
<iframe name="result" id="result" width="300px" height="200px" src="frame.html"></iframe>
</body>
</html>
子窗口frame.html:
<html>
<head>
<script type="text/javascript" src="http://192.168.0.247:1234/jscommon/jquery.js"></script>
<style type="text/css">
.fixtopclass {position:fixed;top:0px;z-index:100;}
.fixclass {position:fixed;z-index:100;);
</style>
<script type="text/javascript">
function getparent()
{
var parentobj = window.parent.document.getElementById('test');
parentobj.innerHTML = "<font style='color:#ff0000'>我改变父框架div的内容1</font>";
}
</script>
</head>
<body>
<div id="show">看看上级框架能否获取到我!</div>
<input type="button" name="bt1" id="bt1" value="点击我" onclick="getparent()"></input>
</body>
</html>
参考:http://blog.csdn.net/doymm2008/article/details/5695541
http://computer.uoh.edu.cn/javascript/1329.html
相关文章推荐
- 如何通过超链接进入到jsp中web-inf下的页面
- [js]数组栈和队列操作
- JSP和servlet工作原理
- js cookie
- JS 将当前input 转为大写
- 悬浮的广告是怎么用js设计出来的
- js产生随机字符串
- JavaScript 解决异步顺序执行问题
- JavaScript 对象
- js中动态添加长字符串,并保持换行
- Shiro学习(9)JSP标签
- post 数据 乱码 中文
- 深入理解Javascript: 立即调用的函数表达式
- js中substring和substr的用法
- JS中图片的放大缩小没反应
- 用JS动态创建登录表单,报了个小错误
- JavaScript Madness: Dynamic Script Loading
- Four ways to deal with private members in JavaScript
- JavaScript 和事件
- JavaScript 事件顺序:冒泡和捕获