本文依据慕课网课程《JavaScript进阶》学习整理

第8章 浏览器对象

8-1 window对象

  window对象BOM的核心。window对象指当前的浏览器窗体

  window对象方法:

  

8-2 JavaScript 计时器

  在JavaScript中。我们能够在设定的时间间隔之后来运行代码,而不是在函数被调用后马上运行。

  计时器类型

  • 一次性计时器:仅在指定的延迟时间之后触发一次。

  • 间隔性触发计时器:每隔一定的时间间隔就触发一次。

  计时器方法

  

8-3 计时器setInterval()

  在运行时,从载入页面后每隔指定的时间运行代码。

  语法:

    setInterval(代码,交互时间);

  參数说明

  • 代码:要调用的函数或要运行的代码串。

  • 交互时间:周期性运行或调用表达式之间的时间间隔。以毫秒计(1s=1000ms)。

  返回值:

  一个能够传递给 clearInterval() 从而取消对”代码”的周期性运行的值。

  调用函数格式(如果有一个clock()函数):

    setInterval("clock()",1000)

setInterval(clock,1000)

  我们设置一个计时器。每隔100毫秒调用clock()函数,并将时间显示出来,代码例如以下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
var int=setInterval(clock, 100)
function clock(){
var time=new Date();
document.getElementById("clock").value = time;
}
</script>
</head>
<body>
<form>
<input type="text" id="clock" size="50" />
</form>
</body>
</html>

8-4 取消计时器clearInterval()

  clearInterval() 方法可取消由 setInterval() 设置的交互时间。

  语法:

    clearInterval(id_of_setInterval)

  參数说明:

    id_of_setInterval:由 setInterval() 返回的 ID 值。

  每隔 100 毫秒调用 clock() 函数,并显示时间。当点击button时。停止时间,代码例如以下:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>计时器</title>
<script type="text/javascript">
function clock(){
var time=new Date();
document.getElementById("clock").value = time;
}
// 每隔100毫秒调用clock函数,并将返回值赋值给i
var i=setInterval("clock()",100);
</script>
</head>
<body>
<form>
<input type="text" id="clock" size="50" />
<input type="button" value="Stop" onclick="clearInterval(i)" />
</form>
</body>
</html>

8-5 计时器setTimeout()

  setTimeout()计时器,在载入后延迟指定时间后,去运行一次表达式,仅运行一次。

  语法:

    setTimeout(代码,延迟时间);

  參数说明

  • 要调用的函数或要运行的代码串。
  • 延时时间:在运行代码前需等待的时间,以毫秒为单位(1s=1000ms)。

  当我们打开网页3秒后,在弹出一个提示框,代码例如以下:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
setTimeout("alert('Hello!')", 3000 );
</script>
</head>
<body>
</body>
</html>

  当buttonstart被点击时,setTimeout()调用函数,在5秒后弹出一个提示框。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
function tinfo(){
var t=setTimeout("alert('Hello!')",5000);
}
</script>
</head>
<body>
<form>
<input type="button" value="start" onClick="tinfo()">
</form>
</body>
</html>

  要创建一个运行于无穷循环中的计数器,我们须要编写一个函数来调用其自身。在以下的代码,当button被点击后,输入域便从0開始计数。

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var num=0;
function numCount(){
document.getElementById('txt').value=num;
num=num+1;
setTimeout("numCount()",1000);
}
</script>
</head>
<body>
<form>
<input type="text" id="txt" />
<input type="button" value="Start" onClick="numCount()" />
</form>
</body>
</html>

8-6 取消计时器clearTimeout()

  setTimeout()clearTimeout()一起使用。停止计时器。

  语法:

    clearTimeout(id_of_setTimeout)

  參数说明:

    id_of_setTimeout:由 setTimeout() 返回的 ID 值。该值标识要取消的延迟运行代码块。

  以下的样例和上节的无穷循环的样例类似。唯一不同是。如今我们加入了一个 “Stop” button来停止这个计数器:

<!DOCTYPE HTML>
<html>
<head>
<script type="text/javascript">
var num=0,i;
function timedCount(){
document.getElementById('txt').value=num;
num=num+1;
i=setTimeout(timedCount,1000);
}
setTimeout(timedCount,1000);
function stopCount(){
clearTimeout(i);
}
</script>
</head>
<body>
<form>
<input type="text" id="txt">
<input type="button" value="Stop" onClick="stopCount()">
</form>
</body>
</html>

8-7 History 对象

  history对象记录了用户以前浏览过的页面(URL),并能够实现浏览器前进与后退类似导航的功能

  注意:从窗体被打开的那一刻開始记录。每一个浏览器窗体、每一个标签页乃至每一个框架,都有自己的history对象与特定的window对象关联。

  语法:

    window.history.[属性|方法]

  注意:window能够省略。

  History 对象属性

  

  History 对象方法

  

  使用length属性当前窗体的浏览历史总长度。代码例如以下:

  <script type="text/javascript">
var HL = window.history.length;
document.write(HL);
</script>

8-8 返回前一个浏览的页面

  back()方法,载入 history 列表中的前一个 URL。

  语法:

    window.history.back();

  比方,返回前一个浏览的页面。代码例如以下:

   window.history.back();

  注意:等同于点击浏览器的倒退button。

  back()相当于go(-1),代码例如以下:

  window.history.go(-1);

8-9 返回下一个浏览的页面

  forward()方法,载入 history 列表中的下一个 URL。

  如果倒退之后。再想回到倒退之前浏览的页面,则能够使用forward()方法,代码例如以下:

    window.history.forward();

  注意:等价点击前进button。

  forward()相当于go(1),代码例如以下:

    window.history.go(1);

8-10 返回浏览历史中的其它页面

  go()方法。依据当前所处的页面,载入 history 列表中的某个详细的页面。

  语法:

   window.history.go(number);

  參数:

  

  浏览器中,返回当前页面之前浏览过的第二个历史页面。代码例如以下:

    window.history.go(-2);

  注意:和在浏览器中单击两次后退button操作一样。

  同理,返回当前页面之后浏览过的第三个历史页面。代码例如以下:

    window.history.go(3);

8-11 Location对象

  location用于获取或设置窗体的URL。而且能够用于解析URL。

  语法:

  location.[属性|方法]

  location对象属性图示:

  

  location 对象属性:

  

  location 对象方法:

  

8-12 Navigator对象

  Navigator 对象包括有关浏览器的信息。通经常使用于检測浏览器与操作系统的版本号。

  对象属性:

  

  查看浏览器的名称和版本号。代码例如以下:

<script type="text/javascript">
var browser=navigator.appName;
var b_version=navigator.appVersion;
document.write("Browser name"+browser);
document.write("<br>");
document.write("Browser version"+b_version);
</script>

8-13 userAgent

  返回用户代理头的字符串表示(就是包括浏览器版本号信息等的字符串)

  语法

   navigator.userAgent

  几种浏览的user_agent.,像360的兼容模式用的是IE、极速模式用的是chrom的内核。

  

  使用userAgent推断使用的是什么浏览器(如果使用的是IE8浏览器),代码例如以下:

function validB(){
var u_agent = navigator.userAgent;
var B_name="Failed to identify the browser";
if(u_agent.indexOf("Firefox")>-1){
B_name="Firefox";
}else if(u_agent.indexOf("Chrome")>-1){
B_name="Chrome";
}else if(u_agent.indexOf("MSIE")>-1&&u_agent.indexOf("Trident")>-1){
B_name="IE(8-10)";
}
document.write("B_name:"+B_name+"<br>");
document.write("u_agent:"+u_agent+"<br>");
}

  运行结果:

  

8-14 screen对象

  screen对象用于获取用户的屏幕信息。

  语法:

  window.screen.属性

  对象属性:

  

8-15 屏幕分辨率的高和宽

  window.screen 对象包括有关用户屏幕的信息。

  • screen.height 返回屏幕分辨率的高

  • screen.width 返回屏幕分辨率的宽

      注意:

  • 单位以像素计。

  • window.screen 对象在编写时能够不使用 window 这个前缀。

    我们来获取屏幕的高和宽,代码例如以下:

<script type="text/javascript">
document.write( "屏幕宽度:"+screen.width+"px<br />" );
document.write( "屏幕高度:"+screen.height+"px<br />" );
</script>

8-16 屏幕可用高和宽度

  • screen.availWidth 属性返回訪问者屏幕的宽度。以像素计,减去界面特性,比方任务栏。

  • screen.availHeight 属性返回訪问者屏幕的高度,以像素计,减去界面特性,比方任务栏。

  注意:

  不同系统的任务栏默认高度不一样,及任务栏的位置可在屏幕上下左右不论什么位置,所以有可能可用宽度和高度不一样。

  我们来获取屏幕的可用高和宽度,代码例如以下:

<script type="text/javascript">
document.write("可用宽度:" + screen.availWidth);
document.write("可用高度:" + screen.availHeight);
</script>

  注意:依据屏幕的不同显示值不同。

8-17 编程练习

  任务

  • 第一步: 先编写好网页布局,例如以下

  

  • 第二步: 获取显示秒数的元素,通过定时器来更改秒数。

  • 第三步: 通过window的location和history对象来控制网页的跳转。

<!DOCTYPE html>
<html>
<head>
<title>浏览器对象</title>
<meta http-equiv="Content-Type" content="text/html; charset=gkb"/>
</head>
<body>
<!--先编写好网页布局-->
<h2>操作成功</h2>
<p><span id="time"> 5 </span>秒后回到主页&nbsp<a href="javascript:history.back()"> 返回</a></p> <script type="text/javascript"> //获取显示秒数的元素。通过定时器来更改秒数。 var num = document.getElementById("time").innerHTML;
//通过window的location和history对象来控制网页的跳转。
var i = setInterval("if(num > 1){document.getElementById('time').innerHTML = --num;}else{location.assign('http://www.imooc.com');}", 1000);
</script>
</body>
</html>

JavaScript学习笔记八的更多相关文章

  1. javascript学习笔记(四) Number 数字类型

    数字格式化方法toFixed().toExponential().toPrecision(),三个方法都四舍五入 toFixed() 方法指定小数位个数  toExponential() 方法 用科学 ...

  2. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  3. Java程序猿的JavaScript学习笔记(8——jQuery选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  4. Java程序猿JavaScript学习笔记(2——复制和继承财产)

    计划和完成在这个例子中,音符的以下序列: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaSc ...

  5. Java程序猿的JavaScript学习笔记(3——this/call/apply)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  6. Java程序猿JavaScript学习笔记(4——关闭/getter/setter)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  7. Java程序猿JavaScript学习笔记(14——扩大jQuery UI)

    计划和完成这个例子中,音符的顺序如下: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScr ...

  8. Learning ROS forRobotics Programming Second Edition学习笔记(八)indigo rviz gazebo

    中文译著已经出版,详情请参考:http://blog.csdn.net/ZhangRelay/article/category/6506865 Learning ROS forRobotics Pro ...

  9. JavaScript学习笔记之数组(二)

    JavaScript学习笔记之数组(二) 1.['1','2','3'].map(parseInt) 输出什么,为什么? ['1','2','3'].map(parseInt)//[1,NaN,NaN ...

随机推荐

  1. Android学习笔记之Bitmap位图的旋转

    位图的旋转也可以借助Matrix或者Canvas来实现. 通过postRotate方法设置旋转角度,然后用createBitmap方法创建一个经过旋转处理的Bitmap对象,最后用drawBitmap ...

  2. 【习题 6-9 UVA - 127】"Accordian" Patience

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 链表模拟即可. 1pile不能加s... [代码] #include <bits/stdc++.h> using nam ...

  3. Android中的Parcelable接口和Serializable使用方法和差别

    Parcelable接口: Interface for classes whose instances can be written to and restored from a Parcel. Cl ...

  4. LeetCode Algorithm 133_Clone Graph

    Clone an undirected graph. Each node in the graph contains a label and a list of its neighbors. OJ's ...

  5. DC中检查脚本错误

    dcprocheck    +     要检查的tcl文件

  6. 缓存(cache)的理解

    缓存的特点: 读取速度很快,容量相比硬盘较小: 缓存在实现时,本质上仍然是一块内存区域: cache 机制的一个核心关注点还在于,究竟什么样的数据应该放在缓存中,显然不是所有,那就应当是部分,就应该是 ...

  7. uiview关联xib

    1,在需要实例的地方 //加载一个uiview的作法 [LotteryInvestigationView *lotteryInvestigationView=[[[NSBundle mainBundl ...

  8. VSX(翻译)Moving Code Blocks Among Code Regions using VS 2010 Extensions

    Moving Code Blocks Among Code Regions using VS 2010 Extensions (翻译)使用VS 2010 扩展性将代码块移至Region区域中 Down ...

  9. spyder在虚拟机上运行内核一直崩溃

    可能的原因是因为虚拟机设置的内存过小了

  10. POJ 2785 4 Values whose Sum is 0 Hash!

    http://poj.org/problem?id=2785 题目大意: 给你四个数组a,b,c,d求满足a+b+c+d=0的个数 其中a,b,c,d可能高达2^28 思路: 嗯,没错,和上次的 HD ...