浏览器交互:BOM和DOM相关webApi、监听事件


(1)BOM 浏览器对象模型(Browser Object Model)
浏览器对象模型提供了独立于内容的、可以与浏览器窗口进行互动的对象结构。BOM由多个对象组成,
其中代表浏览器窗口的Window对象是BOM的顶层对象,其他对象都是该对象的子对象。

1.BOM的顶级对象window
window是浏览器的顶级对象,当调用window下的属性和方法时,可以省略window
注意:window下一个特殊的属性 window.name
a.对话框 包括alert(),prompt(),confirm()
b.页面加载事件:onload,onunload()
例子:
window.onload = function () {
  // 当页面加载完成执行
  // 当页面完全加载所有内容(包括图像、脚本文件、CSS 文件等)执行
}
c.定时器setTimeout()和clearTimeout()在指定的毫秒数到达之后执行指定的函数,只执行一次
setInterval()和clearInterval()定时调用的函数,可以按照给定的时间(单位毫秒)周期调用函数
e.location对象:location可以获取或者设置浏览器地址栏的URL
例子:window.location.hash,window.location.host

f.URL统一资源定位符
g.history对象:back(),forward(),go()
h.navigator对象

例子: 
//通过userAgent可以判断用户浏览器的类型
   
 console.log(window.navigator.userAgent);
    
//通过platform可以判断浏览器所在的系统平台类型.
    
console.log(window.navigator.platform);

(2)DOM文档对象模型(Document Object Model,简称DOM)提供访问和操作网页HTML内容的方法和接口

  DOM是中立于平台和语言的接口,
文档树结构:
1.文档:一个网页可以称为文档
2.节点:网页中的所有内容都是节点(标签、属性、文本、注释等)
3.元素:网页中的标签
4.属性:标签的属性

1.DOM节点和属性
元素节点对象的获取方式: 
    
 getElementById():  获取特定ID元素的节点对象(返回一个对象)
    
 getElementsByTagName():  获取指定标签名的节点列表(返回一个数组)
   
  getElementsByName():  获取相同name属性值的节点列表(返回一个数组)

元素节点的属性
     
tagName: 元素节点对象所指向的标签名称
     
innerHTML: 元素节点中的内容
     
className: 元素节点的class属性值
     
style: css内联样式对象
     
children: 某元素的所有子元素节点
     
value: 输入框的内容

2.DOM操作
DOM节点操作指的是: 创建节点、复制节点、插入节点、删除节点和替换节点等.
DOM操作所涉及的方法有: 
       
 createElement(); 创建一个元素节点
       
 appendChild(); 添加一个新子节点到子节点的末尾
        
createTextNode(); 创建一个文本节点
        
insertBefore(); 将新节点插入到某节点前面
       
 replaceChild(); 将新节点替换旧节点
        
cloneNode(); 复制节点
        
removeChild(); 移除节点


(3)监听事件

  脚本模式: 
        脚本模式能将JS代码和HTML代码分离, 符合代码规范. 
        使用脚本模式我们需要先获取到元素节点对象, 再针对该节点对象添加事件; 如我们可以采用三种方式   来获得节点对象: getElementById(), getElementsByTagName(), getElementsByName()
 
添加事件的方法:
  例如: 
  var box = document.getElementById('box'); 
  添加事件方式一 :  通过匿名函数,可以直接触发对应的代码 (推荐)
  box.onclick = function() {  //给box节点对象添加点击事件onclick
           console.log('Hello world!'); 
  };
 
  添加事件方式二 :  通过指定的函数名赋值的方式 来执行函数
  box.onclick = func;    //注意这里不能写成func()
  function func() {        //给box节点对象添加点击事件onclick
           console.log('Hello world!'); 
  };

(4)事件的分类
JavaScript可以处理的事件种类有3种:鼠标事件,键盘事件和HTML事件。
1.鼠标事件,页面所有元素都可触发鼠标事件
click,dbclick,mousedown,mouseup,mousemove,mouseover,mouseenter,mouseleave

2.键盘事件,在键盘上按下键触发的事件,一般由window对象或document对象调用
keypress,keydown,keyup
例如:window.οnkeyup=function(){

}
3.HTML事件:跟HTML页面相关的事件
load,unload,select,change,focus,blur,submit,reset
例子 
window.onload = function() { 
              console.log('页面已经加载完毕'); 
      };

input.onselect = function() { 
              console.log('选择了文本框中的内容'); 
      };
      
(5)事件对象Event
 通过事件的执行函数传入的event对象(事件对象) 不是在所有浏览器都有值,  
在IE浏览器上event对象并没有传过来, 这里我们要用window.event来获取, 
而在火狐浏览器上window.event无法获取, 而谷歌浏览器支持event事件传参和window.event两种, 
为了兼容所有浏览器, 我们使用以下方式来得到event事件对象: 
 
box.onclick = function(evt){ 
     var e= evt || window.event; //获取到event对象(事件对象)
     console.log(e);
};
 
其中window.event中的window可以省略, 最终我们可以写成: 
box.onclick = function(evt){ 
     var e= evt || event; //获取到event对象(事件对象)
     console.log(e);
};
 
注意: evt||event不要倒过来写

事件对象Event的属性:
 
    button: 鼠标按键
    clientX: 浏览器可视区域的x坐标
    clientY: 浏览器可视区域的y坐标
    pageX: 浏览器内容区域的x坐标
    pageY: 浏览器内容区域的y坐标
    screenX: 显示器屏幕的x坐标
    screenY: 显示器屏幕的y坐标
    offsetX: 鼠标点击的元素位置距离元素左边界的x坐标
    offsetY: 鼠标点击的元素位置距离元素上边界的y坐标


原文1

原文2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值