javascript position兼容性随笔
一、Javascript源码
if (!window.jasen.core.Position) {
window.jasen.core.Position = {};
} function Size(width, height) {
this.width = parseFloat(width);
this.height = parseFloat(height);
} Size.prototype.toString = function () {
return "width=" + this.width + ";height=" + this.height;
} function Point(x, y) {
this.x = parseFloat(x);
this.y = parseFloat(y);
} Point.prototype.toString = function () {
return "x=" + this.x + ";y=" + this.y;
} // 获取窗口的左上角的偏移量(相对屏幕)
function getScreenOffset() {
if (window.screenLeft) {
return new Point(window.screenLeft, window.screenTop);
}
else if (window.screenX) { // Firefox
return new Point(window.screenX, window.screenY);
} return new Point(0, 0);
} // 获取屏幕的大小
function getScreenSize() {
return new Size(window.screen.width, window.screen.height);
} // 获取窗口中的文档显示区的大小
function getVisibleSize() {
if (window.innerWidth) {
return new Size(window.innerWidth, window.innerHeight);
}
else if (document.documentElement && document.documentElement.clientWidth) {
return new Size(document.documentElement.clientWidth, document.documentElement.clientHeight);
}
else if (document.body && document.body.clientWidth) {
return new Size(document.body.clientWidth, document.body.clientHeight);
} return new Size(0, 0);
} // 获取窗口中的文档的偏移量(滚动条的值)
function getPageOffset() {
if (window.pageXOffset) {
return new Point(window.pageXOffset, window.pageYOffset);
}
else if (document.documentElement && document.documentElement.scrollLeft) {
return new Point(document.documentElement.scrollLeft, document.documentElement.scrollTop);
}
else if (document.body && document.body.scrollLeft) {
return new Point(document.body.scrollLeft, document.body.scrollTop);
} return new Point(0, 0);
} var position = window.Position = window.jasen.core.Position;
position.getScreenOffset = getScreenOffset;
position.getScreenOffsetX = function () { return getScreenOffset().x; };
position.getScreenOffsetY = function () { return getScreenOffset().y; };
position.getScreenSize = getScreenSize;
position.getScreenWidth = function () { return getScreenSize().width; };
position.getScreenHeight = function () { return getScreenSize().height; };
position.getVisibleSize = getVisibleSize;
position.getVisibleWidth = function () { return getVisibleSize().width; };
position.getVisibleHeight = function () { return getVisibleSize().height; };
position.getPageOffset = getPageOffset;
position.getPageOffsetX = function () { return getPageOffset().x; };
position.getPageOffsetY = function () { return getPageOffset().y; };
二、范例
<script type="text/javascript">
document.body.onclick = function () {
alert(window.Position.getVisibleSize());
alert(window.Position.getPageOffset());
}
</script>
javascript position兼容性随笔的更多相关文章
- javascript opacity兼容性随笔
一.CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version ...
- javascript event兼容性随笔
一.前言 function ConvertEvent(e, element) { var event = e || window.event; var resultEvent = { event: e ...
- javascript Xml兼容性随笔
一.前言 (function (window) { if (!window.jasen) { window.jasen = {}; } if (!window.jasen.core) { window ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇(二)
<高性能javascript> 领悟随笔之-------DOM编程篇二 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- 《高性能javascript》 领悟随笔之-------DOM编程篇
<高性能javascript> 领悟随笔之-------DOM编程篇一 序:在javaSctipt中,ECMASCRIPT规定了它的语法,BOM实现了页面与浏览器的交互,而DOM则承载着整 ...
- JAVASCRIPT 浏览器兼容性问题及解决方案列表
JAVASCRIPT 浏览器兼容性问题及解决方案列表(1)获取HTML元素只兼容IE:document.all.hello hello 兼容所有: document.getElementById(“h ...
- JavaScript 事件兼容性写法
1.以下是JavaScript事件兼容性写法,使用者可以随意使用,兼容所有浏览器.包括IE6(亲测) <!DOCTYPE html> <html> <head> & ...
- 【原创】最有效解决IE8 position兼容性问题
看了网上的的帖子真是水的一塌糊涂,完全没有解决我和广大网友们的关于ie8下position兼容性问题. 网上有的技术我就不说了 ,大家自行搜索,我想说的重点是 ie8不支持html5的新标签.这是重点 ...
- [TimLinux] JavaScript position为fixed时支持水平滚动条
1. 固定定位 position: fixed;设置好之后,元素在浏览器窗口中的位置就固定住了,这个时候,不论是水平移动滚动条,还是垂直移动滚动条,元素是打死都不会动的. 但是当用fixed定位的元素 ...
随机推荐
- Android开发工具全面转向Android Studio(1)——准备开发环境
工欲善其事必先利其器,本文适合Android新手以及用过Eclipse而没用过Android Studio开发Android的老手,众所周知,谷歌是不会再维护和开发ADT了,旧的ADT已经是完全不能渲 ...
- Codeforces 731C. Socks 联通块
C. Socks time limit per test: 2 seconds memory limit per test: 256 megabytes input: standard input o ...
- FreeSWITCH 1.2.5.3 Step by Step Install
Ubuntu: apt-get -y install build-essential automake autoconf git-core wget libtool apt-get -y instal ...
- My安卓知识5--百度地图api的使用,周边信息检索
虽然查了很多资料,但是这个问题还是解决不了,不知道为什么检索城市内的相关信息能用,检索周边信息语句就是用不了.代码如下,第一段是检索保定市内的加油站,第二段是检索周边的加油站.centerToMyLo ...
- 4. Prototype(原型)
意图: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性: 当要实例化的类是在运行时刻指定时,例如,通过动态装载:或者 为了避免创建一个与产品类层次平行的工厂类层次时:或者 当 ...
- less 里面 opacity的写法
今天写了个opacity, 竟然less编译不过,上网搜了一个写法 .opacity (@opacity) { @opacityPercentage: @opacity * 100; opacity: ...
- UVA11149_Power of Matrix
题目简洁明了,给出矩阵,求前k次方和. 不知道这种方法是叫做二分幂还是倍增法,如果有知道的,请告诉我一下. 具体思想是这样的,A^1+A^2+A^3+......A^n=(E+A^(n/2))*(A^ ...
- [django]在virtualenv下安装的第三方库的使用方法
在virtualenv下安装的第三方库,例如south, requests等,如果想在django中使用,需要先将库添加到settings.py的INSTALLED_APPS中, 以south, re ...
- 【温故Delphi】之VCL消息机制小结
TObject消息分派 procedure Dispatch(var Message); virtual; #负责分派消息到特定VCL组件的事件处理函数 procedure DefaultHandle ...
- Cracking-- 17.13 将二叉树转换成双向链表
在书的105页 使用中根遍历的思想 left 之后 为 root 之后 为 right 则对左子树来说 left->right = root; root->left = left; 对右子 ...