javascript内置对象(BOM)及事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript内置对象(BOM)及事件相关的知识,希望对你有一定的参考价值。

BOM 浏览器对象模型,该对象模型提供了独立于内容的,与浏览器窗口进行交互的对象

该对象提供了以下操作:

histroty对象 当前窗口的浏览历史
location对象  当前文档的URL
screen对象   客户端显示屏幕信息
Navigator  用户所使用的浏览器信息

 

location.href = ‘url‘;//url跳转


history子对象:(操作浏览历史)

无刷新返回上一页:

history.back();

1 <a href="?page=5">第5页</a>
2 <a href="javascript:history.back();">返回上一页</a>

history.go(-1);

history.go(0);    刷新当前页面

history.forward();  前进一步


screen子对象获取屏幕分辨率的信息
width:       分辨率宽度
height:        分辨率高度
availdWidth:  可用宽度(去掉任务栏宽度)
availHeight:   可用高度(去掉任务栏的高度)

 

navigator子对象 (获得浏览器的信息)
navigator.appName 返回浏览器内核名称        //console.log(navigator.appName);
navigator.appVersion 返回浏览器和平台的版本信息
navigator.platform 返回运行浏览器的操作系统平台
navigator.userAgent 返回由客户机发送服务器的 user-agent 头部的值

 


Window对象是内置对象的父对象。

 1 <script type="text/javascript">
 2     window.document.title = ‘窗口标题‘;
 3     var arr = [‘湖人‘];
 4     window.arr.push(‘火箭‘);
 5     console.log(arr);                    //Array [ "湖人", "火箭" ]
 6 
 7     window.alert(‘hello word‘);                    //该方法也属于window对象的方法
 8     window.location.href = ‘http://qiutianjia.com‘;
 9 </script>
10 <script type="text/javascript">
11     var result = window.confirm(‘您确定要删除吗?‘);    //弹出确认框
12     console.log(result);                //true    false
13     var result = prompt(‘请输入您的用户名‘);    //弹出输入框
14     console.log(result);                    //输入的内容    false
15 </script>

setInterval()、

设置间隔执行(每隔多少时间执行),定时器、开启之后,每隔一定的时间执行一次

参数1.每隔一段时间执行的代码,如果代码很多可以写到函数中

参数2.间隔的时间,单位是毫秒

clearInterval()、清除定时器

参数是定时器的返回值

 1 <p id="num"></p>
 2 <script type="text/javascript">
 3     var oP = document.getElementById(‘num‘);
 4     window.setInterval(function(){
 5        var oDate = new Date();
 6         year = oDate.getFullYear();
 7         month = oDate.getMonth() + 1;
 8         day = oDate.getDate();
 9         hour = oDate.getHours();
10         minute = oDate.getMinutes();
11         second = oDate.getSeconds();
12         oP.innerhtml = ‘当前时间:‘ + year + ‘年‘ + month + ‘月‘ + day + ‘日&nbsp;‘ + hour + ‘:‘ + minute + ‘:‘ + second;
13     },100)
14 </script>

使用定时器时,每setInterval一次,就会在内存保存一份并执行,如果取消定时器,设置了多少,就应该取消多少次。

解决方法:始终只在内存中创建一个定时器

 1 <p id="num"></p>
 2 <a href="javascript:stop();">停止</a>
 3 <a href="javascript:start();">开始</a>
 4 <script type="text/javascript">
 5     var oP = document.getElementById(‘num‘);
 6     function nowTime(){
 7        var oDate = new Date();
 8         year = oDate.getFullYear();
 9         month = oDate.getMonth() + 1;
10         day = oDate.getDate();
11         hour = oDate.getHours();
12         minute = oDate.getMinutes();
13         second = oDate.getSeconds();
14         oP.innerHTML = ‘当前时间:‘ + year + ‘年‘ + month + ‘月‘ + day + ‘日&nbsp;‘ + hour + ‘:‘ + minute + ‘:‘ + second;
15     }
16     var timer = setInterval(nowTime,1000);
17     function stop(){
18         clearInterval(timer);
19     }
20     function start(){
21         var timer = setInterval(nowTime,1000);
22     }
23 </script>

setTimeout()设置延迟执行

clearTimeout()清除延迟执行,用法同上、


js事件、指用户和网页发生交互时的一些行为,事件分类:

鼠标事件
click() 鼠标单击
dblclick() 鼠标双击
mouseover() 鼠标移入
mouserout() 鼠标移出
mousermove() 鼠标移动
mousedown() 鼠标按下
mouseup() 鼠标按键被松开
scroll 滚动

 

键盘事件
keydowm 按键被按下
keyup 按键抬起

 

表单事件
submit 表单提交事件
select 文本框的文本被选中
focus 获得焦点事件
blur  失去焦点
change 内容改变事件

 

页面加载完毕事件:load。


 

使用实例:

事件监听:

onclick: 监听点击事件

1 <div onclick="change()">
2     div
3 </div>
4 <script type="text/javascript">
5     function change(){
6         var oDiv = document.getElementsByTagName(‘div‘)[0];
7         oDiv.style.color = ‘red‘;
8     }
9 </script>

DOM 0级事件监听程序:

将事件监听器绑定到DOM节点对象上,也就是作为DOM对象的属性存在

 1 <div onclick="change()">div</div>
 2 <script type="text/javascript">
 3     var oDiv = document.getElementsByTagName(‘div‘)[0];
 4     function change(){
 5         oDiv.style.color = ‘red‘;
 6     }
 7     oDiv.onmouseover = function(){
 8         oDiv.style.color = ‘green‘;
 9     }
10     oDiv.onmouseout = function(){
11         oDiv.style.color = ‘black‘;
12     }
13 </script>

DOM 2级事件监听程序:

通过DOM对象.addEventListener(),(针对主流浏览器),attachEvent(),(非主流浏览器 IE6,7,8)进行绑定。

通常在使用DOM3级事件绑定程序的时候,先判断一下是否是主流浏览器

技术分享
 1 <div onclick="change()">div</div>
 2         <script type="text/javascript">
 3             var oDiv = document.getElementsByTagName(‘div‘)[0];
 4             if (window.addEventListener){    //有成员即主流浏览器
 5                 //参数1 :事件类型(没有on)
 6                 //参数2 :事件发生时,执行的处理程序函数
 7                 //参数3 :是否捕获,默认false不捕获(冒泡),反之true
 8                 //区别见:http://www.runoob.com/try/try.php?filename=tryjsref_element_addeventlistener_capture
 9     [补充:主流浏览器通过:事件对象的stopPropogation()阻止。非主流通过:事件对象的cancelBubble = true阻止]
10             <div id="outer">
11                <p id="inner">ppppp</p>
12                </div>
13            <script type="text/javascript">
14                var outer = document.getElementById(‘outer‘);
15                var inner = document.getElementById(‘inner‘);
16                outer.addEventListener(‘click‘,function(ev){
17                    alert(‘outer‘);
18                    if (ev.stopProagation) {
19                        ev.stopProagation();    //阻止弹出
20                    }else{
21                        ev.cancelBubble = true;
22                    }
23                },true);
24                inner.addEventListener(‘click‘,function(){
25                    alert(‘inner‘);
26                },true)
27            </script>
28     [/补充结束]
29                 oDiv.addEventListener("mouseover",function(){
30                     oDiv.style.backgroundColor = ‘pink‘;
31                 },false);
32                 oDiv.addEventListener("mouseout",function(){
33                     oDiv.style.backgroundColor = ‘red‘;
34                 },false);
35             }else{
36                 //非主流浏览器
37                 //参数1 :事件类型(含on)
38                 //参数2 :事件发生时执行的函数
39                 oDiv.attachEvent("onmouseover",function(){
40                     oDiv.style.backgroundColor = ‘pink‘;
41                 });
42                 oDiv.attachEvent("onmouseout",function(){
43                     oDiv.style.backgroundColor = ‘red‘;
44                 });
45             }
46         </script>
View Code

 可以将DOM 2级方法封装起来。

 1 //参数1:监听哪个DOM对象的时间
 2 //参数2:监视的事件类型
 3 //参数3:事件发生时执行的回调函数
 4 function bindEvent(obj,eventType,callback){
 5     if (window.addEventListener){
 6         obj.addEventListener(eventType,callback,false);
 7     }else{
 8         obk.attachEvent(‘on‘ + eventType,callback);
 9     }
10 }

封装通过id查询DOM节点对象的方法

1 function $(id){
2     return document.getElementById(id);
3 }

js事件分类演示

鼠标单击:      click

鼠标双击行为:    dblclick

鼠标按下、抬起的行为:mousedown、mouseup

通常当mousedown这个行为发生的时候,通过事件对象的button属性获得是左击、还是右击

button属性的值是0表示左击、1表示按下的是滑轮、2表示右击。

获取js事件对象:event,当用户的行为发生时,自动产生对象,并且会自动给你传递到事件的处理程序中去,通常如果需要你接收一下,如果不需要就不用接收。

通过事件对象,可以获得当事件(用户的行为)发生时,事件主题的一些信息(左击、还是右击;鼠标的坐标等)

1 <script type="text/javascript">
2 //监视body的鼠标按下行为
3 document.body.onmousedown = function(ev){
4     console.log(ev.button);
5 }
6 </script>

鼠标移动的行为:mousemove

移动鼠标时产生行为,获得鼠标的实时坐标

通过clientX、clientY、pageX、pageY这些属性获得鼠标的坐标

1 <p id="div" style="width: 300px;height: 300px;"></p>
2 <script type="text/javascript">
3     var oDiv = document.getElementById(‘div‘);
4     document.body.onmousemove = function(ev){
5         oDiv.innerHTML = ‘X轴:‘+ev.pageX+‘Y轴:‘+ev.pageY;
6     }
7 </script>

鼠标滚动的行为:scrool

由于鼠标滚动的时候,控制的是body整体滚动,所以这个行为监视的是body,通过document.body.scrollTop获得、设置滚动条距离顶部的高度

1 document.body.onscroll = function(){
2     document.title = document.body.scrollTop;
3 }
4 function gotop(){
5     document.body.scrollTop = 0;
6 }

键盘事件:

用户通过键盘的按键和网页进行交互的行为

keydown:键盘按键被按下的行为,通常该行为发生的时候,通过事件对象的keyCode属性获得按下的是哪个按键

1 <script type="text/javascript">
2     document.body.onkeydown = function(ev){
3         alert(ev.keyCode);
4     }
5 </scrip

特殊的按键:ctrl、alt、shift

通过事件对象的ctrlKey属性获得,只有按下ctrl键的时候,ctrlKey属性的才为true;altKey、shiftKey一样,只有按下这两个键的时候,值才为true

keyup,键盘抬起事件

1 <textarea>
2     hello word
3 </textarea>
4 <script type="text/javascript">
5     var oDiv = document.getElementsByTagName(‘textarea‘)[0];
6       oDiv.onkeyup = function(ev){
7          lert(this.value);
8       }
9 </script>

submit,表单提交的行为:

onsubmit事件处理程序中,return false则阻止表单提交,如果return true/function则继续往下执行/执行回调函数返回的值(例如正则验证表单)

select:监视输入框的内容被选中的行为

focus:获得焦点(光标)行为

blur:失去焦点(光标)行为

 1 <form action="" method="get">
 2     <input id="user" type="text" value="请输入用户名">
 3         <input type="submit" value="提交">
 4         </input>
 5     </input>
 6 </form>
 7 <script type="text/javascript">
 8     var oUser = document.getElementById(‘user‘);
 9             oUser.onfocus = function(){
10                 this.value = ‘‘;
11             }
12             oUser.onblur = function(){
13                 if (this.value == ‘‘) {
14                     this.value = ‘请输入用户名‘;
15                 }
16             }
17 </script>

change:<select>标签下拉列表内容改变的行为

load:html文档加载完毕行为,通过window.onload监视行

以上是关于javascript内置对象(BOM)及事件的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript BOM及相关对象JS执行机制

JavaScript基础:BOM的常见内置方法和内置对象

JavaScript中的DOM,BOM详细介绍;

JavaScript知识点总结

javascript内置对象(数组字符串日期)

JavaScript的BOM编程,事件-第4章