使用iframe window的scroll方法控制iframe页面滚动

在页面中如何控制内嵌的iframe滚动呢?方法是使用iframe window的scroll方法:

1、获取iframe的窗口对象

var iwin = document.getElementById('iframe1').contentWindow;

2 、获取iframe的窗口document对象

var doc = iwin.document;

3、调用iframe window对象的scroll方法

iwin.scroll(0,doc.body.scrollHeight);

scroll两个参数为x,y轴的滚动量

doc.body.scrollHeight为iframe页面的高度(包含未显示的部分)

一个综合应用例子如下:


代码如下:

<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>hover test</title>
<style type="text/css">

ul{
background-color:#ff00ff;
display:block;
}

.toc li{
position:relative; width:10em;
background-color:#00ff00;
display:block;
}

li a {
/*display:block;*/ /*若以块的模式显示,则会占满整个父元素空间*/
background-color:#0000ff;
} /*必须让a成为块级元素*/

li a i{
display:none;
}

li a:hover{
text-align:left;
}/*这里添加的代码只是为了让IE6显示,没有特殊功能,除text-decoration,color,z-index外都可以写*/

.toc li a:hover i{
display:block;
width:6em;
position:absolute;
top:0;
left:100%; /* 这里100%指相对于元素li的宽度*/
margin:-1em 0 0 0em;
padding:1em;
background:#cde;
border:1px solid red;
text-align:left;
z-index:10000;
}
</style>
</head>

<body>
<iframe id="iframe1" src="" width="400" height="300"></iframe>

html代码

<ul class="toc" id="toc">
<li><a href="1.html">Chapter 1<i>In which a dragon is seen</i></a></li>
<li><a href="2.html">Chapter 1<i>In which a knight is summoned</i></a></li>
<li><a href="3.html">Chapter 1<i>In which a proncess is disappointed</i></a></li>
<li><a href="4.html">Chapter 1<i>In which a dragon is seen</i></a></li>
<li><a href="5.html">Chapter 1<i>In which a dragon is seen</i></a></li>
<li><a href="6.html">Chapter 1<i>In which a dragon is seen</i></a></li>
<li><a href="7.html">Chapter 1<i>In which a dragon is seen</i></a></li>
</ul>

<script language="javascript">
function getElementAbsPos(e) {
var t = e.offsetTop;
var l = e.offsetLeft;
while(e = e.offsetParent) {
t += e.offsetTop;
l += e.offsetLeft;
}

return {left:l,top:t};
}

function getPosition(obj){
var left = 0;
var top = 0;

while(obj != document.body){
left = obj.offsetLeft;
top = obj.offsetTop;
obj = obj.offsetParent;
}

return left;
}

var lis = document.getElementsByTagName('li');
var iwin = document.getElementById('iframe1').contentWindow;
var doc = iwin.document;
for(var i=0;i<lis.length;i++){
lis[i].onmouseover = function(){
var obji = this.childNodes[0].childNodes[1];
doc.writeln('<br>'+ obji.innerText + ',' + getElementAbsPos(document.getElementById('toc')).left);
doc.writeln('<br>'+ obji.offsetLeft + ',' + getElementAbsPos(obji).left + ',' + obji.offsetWidth+ ',' + obji.style.left);
doc.writeln('<br><b>'+ doc.body.scrollHeight + '</b>')
iwin.scroll(0,doc.body.scrollHeight);
//iwin.scrollTo(10000); //无效
}
}

</script>
</body>

</html>

(0)

相关推荐

  • 使用iframe window的scroll方法控制iframe页面滚动

    在页面中如何控制内嵌的iframe滚动呢?方法是使用iframe window的scroll方法: 1.获取iframe的窗口对象 var iwin = document.getElementById('iframe1').contentWindow; 2 .获取iframe的窗口document对象 var doc = iwin.document; 3.调用iframe window对象的scroll方法 iwin.scroll(0,doc.body.scrollHeight); scroll

  • 用按钮控制iframe显示的网页实现方法

    复制代码 代码如下: //有两个按钮分别响应两个事件,用来控制iframe显示的网页. <script type="text/javascript"> function bd(){ var baidu = document.getElementById("i"); baidu.src = "http://www.baidu.com"; } function xl(){ var sina = document.getElementByI

  • jQuery控制iFrame(实例代码)

    用jQuery在IFRAME里取得父窗口的某个元素的值只好用DOM方法与jquery方法结合的方式实现了 1.在父窗口中操作 选中IFRAME中的所有单选钮$(window.frames["iframe1"].document).find("input[@type='radio']").attr("checked","true"); 2.在IFRAME中操作 选中父窗口中的所有单选钮$(window.parent.docume

  • ios 不支持 iframe 的完美解决方法(兼容iOS&安卓)

    最近做微信公众号页面,因为入口不同,需要把公共页面抽取出来,然后根据不同的值,传递给后台不同的入口.刚开始用iframe页面嵌套(第一次尝试使用),但发现iOS系统对iframe嵌套页面的高度和定位控制的不到位,具体表现为,当嵌套的子页面的高度大于父页面的高度,且子页面中有触发弹框事件时,这时,如果子页面高度远远大于父页面高度,就会出现弹框找不到的情况,其实可能是在视口以下,弹框的位置只是相对于子页面来定位,并没有相对于视口定位. 尝试了好多种方法,均不理想,而安卓系统则表现良好,于是想到,iO

  • jquery ajax应用中iframe自适应高度问题解决方法

    iframe自适应高度本身是很简单的方法,就是在页面加载完成后,重新计算一下高度即可. 代码如下: 复制代码 代码如下: //公共方法:设置iframe的高度以保证全部显示数据//function SetPageHeight() {//    var iframe = getUrlParam('ifname');//    var myiframe = window.parent.document.getElementById(iframe);//     iframeLoaded(myifra

  • JS实现iframe自适应高度的方法示例

    本文实例讲述了JS实现iframe自适应高度的方法.分享给大家供大家参考,具体如下: <iframe id="mainFrame" name="mainFrame" src="/zwgk/hsearchview" width="740" frameborder="0" scrolling="no" scrolling="no" frameborder="

  • JS实现iframe自适应高度的方法(兼容IE与FireFox)

    本文实例讲述了JS实现iframe自适应高度的方法.分享给大家供大家参考,具体如下: 之前一直被iframe自适应高度的问题困扰,很多JS代码在FF里面似乎就变成哑巴了.后来下面这段代码终于被我从万千号称兼容FF的代码堆中翻了出来.我已经用过了,真的好用.尤其是对于我这样的JS水平较低(真不好意思)的人来说,这段代码简单易懂,方便修改,只要把下面的代码复制粘贴到iframe所在页面的<body>标签里面,并且修改一下ID名就行了(注意,要修改的地方有两个,位置在代码中有说明). 向原创这段代码

  • 用javascript控制iframe滚动的代码

    现在有一个横向的IFRAME,需要通过点击iframe外的一个图片来横向滚动iframe内的一个html页,但又不想让看见iframe的滚动条,请问如何解决啊???? <img   src="demo.gif"   onmousedown="window.timer=setInterval('a.document.body.scrollTop++',10)"   onmouseup="clearInterval(window.timer)"

  • jquery 操作iframe的几种方法总结

    iframe在复合文档中经常用到,利用jquery操作iframe可以大幅提高效率,这里收集一些基本操作 DOM方法:父窗口操作IFRAME:window.frames["iframeSon"].documentIFRAME操作父窗口: window.parent.document jquery方法:在父窗口中操作 选中IFRAME中的所有输入框: $(window.frames["iframeSon"].document).find(":text&quo

  • JS中Iframe之间传值的方法

    1.在iframe子页面中获取父页面的元素: a>window.parent.document这个是获取父页面document中的对象: b>如果要获取父页面js中的方法:window.parent.xxxx():xxxx()为方法: 2.在父页面中获取iframe子页面中的元素: a> var child = document.getElementByIdx_x("mainFrame").contentWindow;//mainFrame这个id是父页面iframe

随机推荐