微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

浅谈JavaScript 浏览器对象

window

window对象不但充当全局作用域,而且表示浏览器窗口。

window对象有innerWidth和innerHeight属性,可以获取浏览器窗口的内部宽度和高度。内部宽高是指除去菜单栏、工具栏、边框等占位元素后,用于显示网页的净宽高。还有一个outerWidth和outerHeight属性,可以获取浏览器窗口的整个宽高。

补充:

rush:xhtml;"> 网页可见区域宽:document.body.clientWidth 网页可见区域高:document.body.clientHeight 网页可见区域宽:document.body.offsetWidth (包括边线和滚动条的宽) 网页可见区域高:document.body.offsetHeight (包括边线的宽) 网页正文全文宽:document.body.scrollWidth 网页正文全文高:document.body.scrollHeight 网页被卷去的高:document.body.scrollTop 或者 jQuery(document).scrollTop() 网页被卷去的左:document.body.scrollLeft 网页正文部分上:window.screenTop 网页正文部分左:window.screenLeft 屏幕分辨率的高:window.screen.height 屏幕分辨率的宽:window.screen.width 屏幕可用工作区高度:window.screen.availHeight 屏幕可用工作区宽度:window.screen.availWidth 屏幕彩色位数: window.screen.colorDepth 屏幕像素/英寸比例: window.screen.deviceXDPI 浏览器窗口的高度: $(window).height() 浏览器窗口的宽度: $(window).width()
特殊2:
网页正文全文宽:"+ document.body.scrollWidth;
网页正文全文高:"+ document.body.scrollHeight;
以上函数有时获取不了,就用以下方法。
var xScroll,yScroll;
if (window.innerHeight && window.scrollMaxY)
{
xScroll = document.body.scrollWidth;
yScroll = window.innerHeight + window.scrollMaxY;
} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
xScroll = document.body.scrollWidth;
yScroll = document.body.scrollHeight;
} else { //Explorer Mac...would also work in Explorer 6 Strict,Mozilla and Safari
xScroll = document.body.offsetWidth;
yScroll = document.body.offsetHeight;
}

navigator

navigator对象表示浏览器的信息,最常用的属性包括

•navigator.appName:浏览器名称

•navigator.appVersion:浏览器版本;

•navigator.language:浏览器设置的语言;

•navigator.platform:操作系统类型;

•navigator.userAgent:浏览器设定的User-Agent字符串。

初学者为了针对不同浏览器编写不同的代码,喜欢用if判断浏览器版本,例如:

rush:js;"> var width; if (getIEVersion(navigator.userAgent) < 9) { width = document.body.clientWidth; } else { width = window.innerWidth; }

但这样既可能判断不准确,也很难维护代码。正确的方法是充分利用JavaScript对不存在属性返回imsun">undefined的特性,直接用短路运算imsun">||计算:

rush:js;"> var width = window.innerWidth || document.body.clientWidth;

screen

screen对象表示屏幕的信息,常用的属性有:

•screen.width:屏幕宽度,以像素为单位;

•screen.height:屏幕高度,以像素为单位;

•screen.colorDepth:返回颜色位数,如8、16、24。

location

location对象表示当前页面的URL信息。例如,一个完整的URL:

rush:js;"> http://www.example.com:8080/path/index.html?a=1&b=2#TOP

可以用imsun">location.href获取。要获得URL各个部分的值,可以这么写:

rush:js;"> location.protocol; // 'http' location.host; // 'www.example.com' location.port; // '8080' location.pathname; // '/path/index.html' location.search; // '?a=1&b=2' location.hash; // 'TOP'

要加载一个页面,可以调用location.assign()。如果要重新加载当前页面调用location.reload()方法非常方便。

document

document对象表示当前页面。由于HTML在浏览器中以DOM形式表示为树形结构,document对象就是整个DOM树的根节点。

document的title属性是从HTML文档中的xxx读取的,但是可以动态改变:

document对象还有一个cookie属性,可以获取当前页面的Cookie。

Cookie是由服务器发送的key-value标示符。因为HTTP协议是无状态的,但是服务器要区分到底是哪个用户发过来的请求,就可以用Cookie来区分。当一个用户成功登录后,服务器发送一个Cookie给浏览器,例如user=ABC123XYZ(加密的字符串)...,此后,浏览器访问该网站时,会在请求头附上这个Cookie,服务器根据Cookie即可区分出用户

Cookie还可以存储网站的一些设置,例如,页面显示的语言等等。

JavaScript可以通过document.cookie读取到当前页面的Cookie:

rush:js;"> document.cookie; // 'v=123; remember=true; prefer=zh'

由于JavaScript能读取到页面的Cookie,而用户登录信息通常也存在Cookie中,这就造成了巨大的安全隐患,这是因为在HTML页面中引入第三方的JavaScript代码是允许的:

rush:xhtml;">

这种方式的缺点是扰乱了浏览器对form的正常提交。浏览器认点击imsun">

相关推荐