JavaScript学习笔记(六)
JavaScript Window - 浏览器对象模型
- 浏览器对象模型 (BOM) 使 JavaScript 有能力与浏览器"对话"。
浏览器对象模型 (BOM)
- 浏览器对象模型(Browser Object Model (BOM))尚无正式标准。
- 由于现代浏览器已经(几乎)实现了 JavaScript 交互性方面的相同方法和属性,因此常被认为是 BOM 的方法和属性。
Window 对象
-
所有浏览器都支持 window 对象。它表示浏览器窗口。
-
所有 JavaScript 全局对象、函数以及变量均自动成为 window 对象的成员。
-
全局变量是 window 对象的属性。
-
全局函数是 window 对象的方法。
-
甚至 HTML DOM 的 document 也是 window 对象的属性之一:
-
window.document.getElementById("header");
-
document.getElementById("header");
-
Window 尺寸
-
有三种方法能够确定浏览器窗口的尺寸。
- 对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:
- window.innerHeight - 浏览器窗口的内部高度(包括滚动条)
- window.innerWidth - 浏览器窗口的内部宽度(包括滚动条)
- 对于 Internet Explorer 8、7、6、5:
- document.documentElement.clientHeight
- document.documentElement.clientWidth
- 或者
- document.body.clientHeight
- document.body.clientWidth
- 对于Internet Explorer、Chrome、Firefox、Opera 以及 Safari:
-
var w=window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; var h=window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;
其他 Window 方法
- window.open() - 打开新窗口
- window.close() - 关闭当前窗口
- window.moveTo() - 移动当前窗口
- window.resizeTo() - 调整当前窗口的尺寸
JavaScript Window Screen
- window.screen 对象包含有关用户屏幕的信息。
Window Screen
- window.screen对象在编写时可以不使用 window 这个前缀。
- 一些属性:
- screen.availWidth - 可用的屏幕宽度
- screen.availHeight - 可用的屏幕高度
Window Screen 可用宽度
- screen.availWidth 属性返回访问者屏幕的宽度,以像素计,减去界面特性,比如窗口任务栏。
Window Screen 可用高度
- screen.availHeight 属性返回访问者屏幕的高度,以像素计,减去界面特性,比如窗口任务栏。
JavaScript Window Location
- window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。
Window Location
- window.location 对象在编写时可不使用 window 这个前缀。 一些例子:
- 一些实例:
- location.hostname 返回 web 主机的域名
- location.pathname 返回当前页面的路径和文件名
- location.port 返回 web 主机的端口 (80 或 443)
- location.protocol 返回所使用的 web 协议(http: 或 https:)
Window Location Href
- location.href 属性返回当前页面的 URL。
Window Location Pathname
- location.pathname 属性返回 URL 的路径名。
Window Location Assign
- location.assign() 方法加载新的文档。
JavaScript Window History
- window.history 对象包含浏览器的历史
Window History
- window.history对象在编写时可不使用 window 这个前缀。
- 保护用户隐私,对 JavaScript 访问该对象的方法做出了限制。
- 一些方法:
- history.back() - 与在浏览器点击后退按钮相同
- history.forward() - 与在浏览器中点击向前按钮相同
Window history.back()
-
history.back() 方法加载历史列表中的前一个 URL。
-
与在浏览器中点击后退按钮是相同的。
Window history.forward()
-
history forward() 方法加载历史列表中的下一个 URL。
-
与在浏览器中点击前进按钮是相同的。
JavaScript Window Navigator
- window.navigator 对象包含有关访问者浏览器的信息。
Window Navigator
-
window.navigator 对象在编写时可不使用 window 这个前缀。
-
<script> txt = "<p>浏览器代号: " + navigator.appCodeName + "</p>"; txt+= "<p>浏览器名称: " + navigator.appName + "</p>"; txt+= "<p>浏览器版本: " + navigator.appVersion + "</p>"; txt+= "<p>启用Cookies: " + navigator.cookieEnabled + "</p>"; txt+= "<p>硬件平台: " + navigator.platform + "</p>"; txt+= "<p>用户代理: " + navigator.userAgent + "</p>"; txt+= "<p>用户代理语言: " + navigator.language + "</p>"; document.getElementById("example").innerHTML=txt; </script>
JavaScript 弹窗
- 在 JavaScript 中创建三种消息框:警告框、确认框、提示框
警告框
- 警告框经常用于确保用户可以得到某些信息。
- 当警告框出现后,用户需要点击确定按钮才能继续进行操作。
语法
window.alert("sometext");
确认框
- 确认框通常用于验证是否接受用户操作。
语法
window.confirm("sometext");
提示框
- 提示框经常用于提示用户在进入页面前输入某个值。
- 当提示框出现后,用户需要输入某个值,然后点击确认或取消按钮才能继续操纵。
- 如果用户点击确认,那么返回值为输入的值。如果用户点击取消,那么返回值为 null。
语法
window.prompt("sometext","defaultvalue");
换行
- 弹窗使用 反斜杠 + “n”(\n) 来设置换行。
JavaScript 计时事件
- 通过使用 JavaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是在函数被调用后立即执行。我们称之为计时事件。
setInterval()
-
间隔指定的毫秒数不停地执行指定的代码。
-
setInterval(function(){alert("Hello")},3000);
每三秒弹出一次 -
显示当前时间 var myVar=setInterval(function(){myTimer()},1000); function myTimer() { var d=new Date(); var t=d.toLocaleTimeString(); document.getElementById("demo").innerHTML=t; }
-
停止执行
-
clearInterval() 方法用于停止 setInterval() 方法执行的函数代码。
-
语法
window.clearInterval(intervalVariable)
- 创建计时方法时你必须使用全局变量
myVar=setInterval("javascript function",milliseconds);
- 创建计时方法时你必须使用全局变量
-
<p id="demo"></p> <button onclick="myStopFunction()">停止</button> <script> var myVar=setInterval(function(){myTimer()},1000); function myTimer(){ var d=new Date(); var t=d.toLocaleTimeString(); document.getElementById("demo").innerHTML=t; } function myStopFunction(){ clearInterval(myVar); } </script>
-
setTimeout() - 在指定的毫秒数后执行指定代码。
-
语法
myVar= window.setTimeout("javascript function", milliseconds);
-
setTimeout() 方法会返回某个值。在上面的语句中,值被储存在名为 myVar 的变量中。假如取消这个 setTimeout(),你可以使用这个变量名来指定它。
-
setTimeout() 的第一个参数是含有 JavaScript 语句的字符串。这个语句可能诸如 “alert(‘5 seconds!’)”,或者对函数的调用,诸如 alertMsg。
-
第二个参数指示从当前起多少毫秒后执行第一个参数。
停止执行
- clearTimeout() 方法用于停止执行setTimeout()方法的函数代码。
- 语法
window.clearTimeout(timeoutVariable)
JavaScript Cookie
-
Cookie 用于存储 web 页面的用户信息。
-
Cookie 的作用就是用于解决 “如何记录客户端的用户信息”:
- 当用户访问 web 页面时,他的名字可以记录在 cookie 中。
- 在用户下一次访问该页面时,可以在 cookie 中读取用户访问记录。
-
Cookie 以名/值对形式存储
使用JS创建cookie
-
使用 document.cookie 属性来创建 、读取、及删除 cookie。
-
基础创建语法
document.cookie="username=John Doe";
-
添加过期时间语法
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT";
-
使用 path 参数告诉浏览器 cookie 的路径。默认情况下,cookie 属于当前页面。
document.cookie="username=John Doe; expires=Thu, 18 Dec 2043 12:00:00 GMT; path=/";
使用JS读取Cookie
var x = document.cookie;
使用 JavaScript 修改 Cookie
- 类似于创建 cookie
使用 JavaScript 删除 Cookie
- 删除 cookie 非常简单。设置 expires 参数为以前的时间即可,如下所示,设置为 Thu, 01 Jan 1970 00:00:00 GMT:
document.cookie = "username=; expires=Thu, 01 Jan 1970 00:00:00 GMT";
- 删除时不必指定 cookie 的值
Cookie 字符串
- 设置了新的 cookie,旧的 cookie 不会被覆盖。 新 cookie 将添加到 document.cookie 中。
- 如果需要查找一个指定 cookie 值,您必须创建一个JavaScript 函数在 cookie 字符串中查找 cookie 值。
JavaScript Cookie 实例
-
创建 cookie 来存储访问者名称
-
//创建一个函数用于存储访问者的名字 function setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime()+(exdays*24*60*60*1000)); var expires = "expires="+d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires; } //创建一个函数用于返回指定 cookie 的值 function getCookie(cname) { var name = cname + "="; var ca = document.cookie.split(';'); for(var i=0; i<ca.length; i++) { var c = ca[i].trim(); if (c.indexOf(name)==0) return c.substring(name.length,c.length); } return ""; } //检测 cookie 值的函数 function checkCookie() { var username=getCookie("username"); if (username!="") { alert("Welcome again " + username); } else { username = prompt("Please enter your name:",""); if (username!="" && username!=null) { setCookie("username",username,365); } } }