大前端 2016-09-29
JavaScript Window - 浏览器对象模型
以下window对象时使用均可省略window
所有浏览器都支持 window 对象。它表示浏览器窗口。
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
全局变量是 window 对象的属性。
全局函数是 window 对象的方法。
甚至 HTML DOM 的 document 也是 window 对象的属性之一:
window.document.getElementById("header");
与此相同:
document.getElementById("header");
实用的 JavaScript 方案(涵盖所有浏览器):
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
一些其他方法:
JavaScript Window Screen
window.screen对象包含有关用户屏幕的信息。
screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。
document.write("可用宽度:" + screen.availWidth);
screen.availHeight 属性返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏。
document.write("可用高度:" + screen.availHeight);
JavaScript Window Location
window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。
location.href 属性返回当前页面的 URL。
location.pathname 属性返回 URL 的路径名。
location.assign() 方法加载新的文档。
window.location.assign("http://www.w3school.com.cn")
JavaScript Window History 对象包含浏览器的历史。
为了保护用户隐私,对 JavaScript 访问该对象的方法做出了限制。
一些方法:
此方法加载历史列表中的前一个 URL
此方法加载历史列表中的下一个 URL
JavaScript Window Navigator
window.navigator 对象包含有关访问者浏览器的信息。
navigator.appName 浏览器名称
navigator.appVersion 浏览器版本
navigator.appCodeName 代码 如Mozilla
navigator.platform 平台 如Win32
navigator.cookieEnabled Cookies 启用 true or false
navigator.userAgent 浏览器的用户代理报头
BrowserLanguage 浏览器版本语言SystemLanguage 浏览器系统语言UserLanguage 浏览器用户语言
http://www.monmonkey.com/javascript/liulanqi2.html
警告:来自 navigator 对象的信息具有误导性,不应该被用于检测浏览器版本,这是因为:
由于 navigator 可误导浏览器检测,使用对象检测可用来嗅探不同的浏览器。
由于不同的浏览器支持不同的对象,您可以使用对象来检测浏览器。例如,由于只有 Opera 支持属性 "window.opera",您可以据此识别出 Opera。
例子:if (window.opera) {...some action...}
JavaScript 消息框
可以在 JavaScript 中创建三种消息框:警告框、确认框、提示框。
建议:
其实从用户体验角度就知道这些弹出框是最恶心,用户体验最差的,一般都是在错误信息下面加一行红字提示,除了某些交易确认需要,其他很少用到,所以尽量避免使用这些框,了解即可。
警告框经常用于确保用户可以得到某些信息。
当警告框出现后,用户需要点击确定按钮才能继续进行操作。
alert("文本")
确认框用于使用户可以验证或者接受某些信息。
当确认框出现后,用户需要点击确定或者取消按钮才能继续进行操作。
如果用户点击确认,那么返回值为 true。如果用户点击取消,那么返回值为 false。
confirm("文本")
提示框经常用于提示用户在进入页面前输入某个值。
当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
prompt("文本","默认值")
JavaScript 计时
通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。
在 JavaScritp 中使用计时事件是很容易的,两个关键方法是:
setTimeout() 未来的某时执行代码
var t=setTimeout("javascript语句",毫秒)
例子:
var t=setTimeout("alert('5 seconds!')",5000)
clearTimeout() 取消setTimeout()
clearTimeout(setTimeout_variable)
例:通过事件调用时间计算开始和停止的方法
function timedCount() { document.getElementById('txt').value=c c=c+1 t=setTimeout("timedCount()",1000) }
function stopCount(){ clearTimeout(t)}
JavaScript Cookies
cookie用来识别用户。
名字cookie
当访问者首次访问页面时,他或她也许会填写他/她们的名字。名字会存储于 cookie 中。当访问者再次访问网站时,他们会收到类似 "Welcome John Doe!" 的欢迎词。而名字则是从 cookie 中取回的。
密码cookie
当访问者首次访问页面时,他或她也许会填写他/她们的密码。密码也可被存储于 cookie 中。当他们再次访问网站时,密码就会从 cookie 中取回。
日期cookie
当访问者首次访问你的网站时,当前的日期可存储于 cookie 中。当他们再次访问网站时,他们会收到类似这样的一条消息:"Your last visit was on Tuesday August 11, 2005!"。日期也是从 cookie 中取回的。
在这个例子中我们要创建一个存储访问者名字的 cookie。当访问者首次访问网站时,他们会被要求填写姓名。名字会存储于 cookie 中。当访问者再次访问网站时,他们就会收到欢迎词。
<html> <head> <script type="text/javascript"> //检查获取 cookie function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } //会创建一个可在 cookie 变量中存储访问者姓名的函数 function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } //如果 cookie 已设置,则显示欢迎词,否则显示提示框来要求用户输入名字 function checkCookie() { username=getCookie('username') if (username!=null && username!="") {alert('Welcome again '+username+'!')} else { username=prompt('Please enter your name:',"") if (username!=null && username!="") { setCookie('username',username,365) } } } </script> </head> <body onLoad="checkCookie()"> </body> </html>