使用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 相关文章推荐
根据鼠标的位置动态的控制层的位置
Nov 24 Javascript
JavaScript 获取当前时间戳的代码
Aug 05 Javascript
判断复选框是否被选中的两种方法
Jun 04 Javascript
JS中使用apply方法通过不同数量的参数调用函数的方法
May 31 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
浅析vue component 组件使用
Mar 06 Javascript
JS+canvas实现的五子棋游戏【人机大战版】
Jul 19 Javascript
vue实现a标签点击高亮方法
Mar 17 Javascript
Vue.js 中取得后台原生HTML字符串 原样显示问题的解决方法
Jun 10 Javascript
详解Angular6 热加载配置方案
Aug 18 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
Vue-CLI3.x 设置反向代理的方法
Dec 06 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 4.2书写安全的脚本
2006/10/09 PHP
Windows2003 下 MySQL 数据库每天自动备份
2006/12/21 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
php学习 函数 课件
2008/06/15 PHP
Sorting Array Values in PHP(数组排序)
2011/09/15 PHP
php实现多张图片上传加水印技巧
2013/04/18 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
2016/10/17 PHP
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
vue2.0安装style/css loader的方法
2018/03/14 Javascript
最后说说Vue2 SSR 的 Cookies 问题
2018/05/25 Javascript
JavaScript实现的九种排序算法
2019/03/04 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
为react组件库添加typescript类型提示的方法
2020/06/15 Javascript
[03:39]DOTA2英雄梦之声_第05期_幽鬼
2014/06/23 DOTA
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python实现查找系统盘中需要找的字符
2015/07/14 Python
网易有道2017内推编程题 洗牌(python)
2019/06/19 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
利用keras加载训练好的.H5文件,并实现预测图片
2020/01/24 Python
jupyter lab的目录调整及设置默认浏览器为chrome的方法
2020/04/10 Python
安装python3.7编译器后如何正确安装opnecv的方法详解
2020/06/16 Python
python爬虫使用scrapy注意事项
2020/11/23 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
行政管理专业推荐信
2013/11/02 职场文书
大学生创业计划书怎么写
2014/09/15 职场文书
先进班集体申报材料
2014/12/26 职场文书
焦裕禄纪念馆观后感
2015/06/09 职场文书
大学生受助感言
2015/08/01 职场文书
运动会广播稿200字
2015/08/19 职场文书
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技