使用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 相关文章推荐
JavaScript与DOM组合动态创建表格实例
Dec 23 Javascript
jquery简单瀑布流实现原理及ie8下测试代码
Jan 23 Javascript
编写高效jQuery代码的4个原则和5个技巧
Apr 24 Javascript
JavaScript中textRange对象使用方法小结
Mar 24 Javascript
创建一个类Person的简单实例
May 17 Javascript
详谈Angular 2+ 的表单(一)之模板驱动型表单
Apr 25 Javascript
Vue的实例、生命周期与Vue脚手架(vue-cli)实例详解
Dec 27 Javascript
vuex实现及简略解析(小结)
Mar 01 Javascript
vue-loader中引入模板预处理器的实现
Sep 04 Javascript
layui按条件隐藏表格列的实例
Sep 19 Javascript
微信小程序实现锚点功能
Nov 20 Javascript
js闭包和垃圾回收机制示例详解
Mar 01 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中文件缓存转内存缓存的方法
2011/12/06 PHP
PHP的重载使用魔术方法代码实例详解
2021/02/26 PHP
escape、encodeURI 和 encodeURIComponent 的区别
2009/03/02 Javascript
JavaScript 继承机制的实现(待续)
2010/05/18 Javascript
js模仿html5 placeholder适应于不支持的浏览器
2013/01/13 Javascript
关于jquery.validate1.9.0前台验证的使用介绍
2013/04/26 Javascript
浅析document.createDocumentFragment()与js效率
2013/07/08 Javascript
javascript实现获取cookie过期时间的变通方法
2014/08/14 Javascript
jquery简单实现图片切换效果的方法
2015/05/12 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
AngularJS 中的指令实践开发指南(一)
2016/03/20 Javascript
浅析JS抽象工厂模式
2017/12/14 Javascript
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
基于Node.js的大文件分片上传示例
2019/06/19 Javascript
js 对象使用的小技巧实例分析
2019/11/08 Javascript
python从ftp下载数据保存实例
2013/11/20 Python
Python 中urls.py:URL dispatcher(路由配置文件)详解
2017/03/24 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
Python使用Tkinter实现机器人走迷宫
2018/01/22 Python
python3操作微信itchat实现发送图片
2018/02/24 Python
django+mysql的使用示例
2018/11/23 Python
Python 字符串类型列表转换成真正列表类型过程解析
2019/08/26 Python
django从后台返回html代码的实例
2020/03/11 Python
python解决OpenCV在读取显示图片的时候闪退的问题
2021/02/23 Python
Nike香港官网:Nike HK
2019/03/23 全球购物
C#里面可以避免一个类被其他类继承么?如何?
2013/09/26 面试题
肯尼迪就职演说稿
2013/12/31 职场文书
青年创业培训欢迎词
2014/01/10 职场文书
《路旁的橡树》教学反思
2014/04/07 职场文书
酒店开业策划方案
2014/06/02 职场文书
教师作风整顿个人剖析材料
2014/10/10 职场文书
pytorch中Schedule与warmup_steps的用法说明
2021/05/24 Python
深入理解python协程
2021/06/15 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
Win10 最新稳定版本 21H2开始推送
2022/04/19 数码科技