js bom操作

概念

bom browser object model    提供与浏览器相关操作接口

封装的兼容性函数

<!-- 获取浏览器视口宽高 -->
function getViewportOffset() {
	if(window.innerWidth) {
		return {
			width: window.innerWidth,
			height: window.innerHeight
		}
	} else {
	//ie8及以下,分标准模式和混杂模式,混杂模式即是用老版本浏览器语法渲染代码
		if(document.compatMode == "BackCompat") {
			return {
				width: document.body.clientWidth,
				height: document.body.clientHight
			}	
		} else {
			return {
				width: document.documentElement.clientWidth,
				height: document.documentElement.clientHight
			}
		}
	}
}

<!-- 获取元素相对文档的距离 -->
function getElementPosition(target) {
	//target.offsetParent 最近的有定位的父元素,如无则返回body元素
	if (target.offsetParent == document.body) {
		return {
			x: target.offsetLeft,
			y: target.offsetTop
		}
	} else {
		return {
			x: target.offsetLeft + getElementPosition(target.offsetParent).x,
			y: target.offsetTop + getElementPosition(target.offsetParent).y
		}
	}
}

<!-- 求滚动条滚动距离 -->
function getScrollOffset() {
	if(window.pageXOffset) {
		return {
			x: window.pageXOffset,
			y: window.pageYOffset
		}
	} else {
	//ie8及以下,document.body.scrollLeft与document.documentElement.scrollLeft必有一为值,一为0
		return {
			x: document.body.scrollLeft + document.documentElement.scrollLeft,
			y: document.body.scrollTop + document.documentElement.scrollTop
		}
	}
}

控制窗口滚动

window.scroll(0, 100)    滚动条滚动100

window.scrollBy(0, -10)    滚动条累加滚动-10

利用这两个特性,可以做小说自动阅读功能,js部分代码如下:

var start = document.getElementsByClassName("start")[0];
	var stop = document.getElementsByClassName("stop")[0];
	var key = false;
	start.onclick = function () {
		if(key == false) {
		//需为全局变量,要不然离开该函数执行环境后引用timer找不到
			timer = setInterval(function() {
				window.scrollBy(0, 10);
			}, 100);
		}
		key = true;
	}
	stop.onclick = function () {
		if(key == true) { 
			clearInterval(timer);
			key = false;
		}
	}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值