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


Posted in Javascript onMarch 05, 2014

在页面中如何控制内嵌的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>
Javascript 相关文章推荐
使用自定义setTimeout和setInterval使之可以传递参数和对象参数
Apr 24 Javascript
JavaScript高级程序设计 阅读笔记(十三) js定义类或对象
Aug 14 Javascript
javascript求日期差的方法
Mar 02 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
js实现自定义进度条效果
Mar 15 Javascript
Vue三层嵌套路由的示例代码
May 05 Javascript
微信小程序实现留言板功能
Nov 02 Javascript
react-router4按需加载(踩坑填坑)
Jan 06 Javascript
Vue 进阶之路(三)
Apr 18 Javascript
详解element上传组件before-remove钩子问题解决
Apr 08 Javascript
vue created钩子函数与mounted钩子函数的用法区别
Nov 05 Javascript
arcgis.js控制地图地体的显示范围超出区域自动弹回(实现思路)
Jan 28 Javascript
js写的方法实现上传图片之后查看大图
Mar 05 #Javascript
js数值和和字符串进行转换时可以对不同进制进行操作
Mar 05 #Javascript
JSON中双引号的轮回使用过程中一定要小心
Mar 05 #Javascript
关于jQuery中的each方法(jQuery到底干了什么)
Mar 05 #Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
Mar 05 #Javascript
js时间比较示例分享(日期比较)
Mar 05 #Javascript
对于Form表单reset方法的新认识
Mar 05 #Javascript
You might like
详解PHP中的PDO类
2015/07/06 PHP
深入剖析浏览器退出之后php还会继续执行么
2016/05/17 PHP
PHP实现的策略模式简单示例
2017/08/25 PHP
PHP微信支付结果通知与回调策略分析
2019/01/10 PHP
根据分辨率不同,调用不同的css文件
2006/08/25 Javascript
30个最好的jQuery 灯箱插件分享
2011/04/25 Javascript
createElement与createDocumentFragment的点点区别小结
2011/12/19 Javascript
javascript打印输出json实例
2013/11/11 Javascript
利用JS来控制键盘的上下左右键(示例代码)
2013/12/14 Javascript
node.js中的fs.openSync方法使用说明
2014/12/17 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
2016/05/17 Javascript
深入理解JQuery中的事件与动画
2016/05/18 Javascript
jQuery Easyui datagrid/treegrid 清空数据
2016/07/09 Javascript
JavaScript html5利用FileReader实现上传功能
2020/03/27 Javascript
Angular限制input框输入金额(是小数的话只保留两位小数点)
2017/07/13 Javascript
vue中的scope使用详解
2017/10/29 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
JavaScript ES6 Class类实现原理详解
2020/05/08 Javascript
vue在响应头response中获取自定义headers操作
2020/07/24 Javascript
Python中关键字is与==的区别简述
2014/07/31 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python实现websocket的客户端压力测试
2019/06/25 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
详解python的xlwings库读写excel操作总结
2021/02/26 Python
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
音乐系毕业生自荐信
2013/10/27 职场文书
会计自我鉴定
2013/11/02 职场文书
集体备课反思
2014/02/12 职场文书
农行心得体会
2014/09/02 职场文书
离婚协议书该怎么写
2014/10/04 职场文书
2014年共青团工作总结
2014/12/10 职场文书
2016公司年会主持词
2015/07/01 职场文书
婚宴祝酒词大全
2015/08/10 职场文书
七夕情人节问候语
2015/11/11 职场文书
vue实现登陆页面开发实践
2022/05/30 Vue.js