编程语言
首页 > 编程语言> > javascript学习笔记下篇--浏览器对象

javascript学习笔记下篇--浏览器对象

作者:互联网

一、事件

事件是电脑输入设备(鼠标、键盘)与页面进行交互的响应

事件对象

事件的冒泡

事件的委派

事件的绑定/注册

告诉浏览器,当事件响应后要执行哪些操作代码

常用事件

事件的传播

1.由内往外传播、冒泡传播
2.三个阶段:捕获阶段(由外向内捕获事件),目标阶段,冒泡阶段(由内向外执行事件)(在IE8及以下版本没有捕获阶段)

二、DOM对象

1.DOM查找

DOM修改

样式的相关属性

都是只读属性,修改只能修改style

  1. clientWidth clientHeight------这两个属性可以获取元素的可见宽度和高度,不带px,返回数字可直接进行计算
  2. offsetWidth offsetHeight—获取元素的整个宽度和高度,包括内容区、paddig、border
  3. offsetParent—用来获取当前元素的定位父元素,获取到离当前元素最近的开启了定位的祖先元素,如果都没开则返回body
  4. offsetLeft offsetTop—获取当前元素相对于其定位父元素的水平、垂直偏移量
  5. scrollWidth scrollHeight-----可以获取元素的滚动区域高度和宽度
  6. scrollLeft scrollTop—获取滚动条水平和垂直滚动的距离
    当满足scorllHeight - scorllTop ==clientHeight 时说明垂直滚动条滚动到底了
    当满足scorllWidth - scorllLeft = clientWidth时说明水平滚动条滚动到底了

DOM添加

  1. 创建空元素
    var elem = document.createElement(“元素名”) var table = document.ceateElement(“table”);

  2. 设置关键属性
    elem.属性名=“属性值”
    elem.innerHTML=“go to tmooc” a.href=“http…”

  3. 设置关键样式
    元素.style.样式名=样式值
    elem.style.opacity=“1”;
    elem.style.cssText=“width:100px;height:100px”;(可添加多个样式)

  4. 将元素添加到DOM树 parentNode.appendChild(childNode); 添加在最后一个父元素
    parentNode.insertBefore(newChild,existingChild) 在父元素中的指定子节点之前添加一个新的子节点,指定子字节通过查找得到
    添加元素优化:尽量少的操作DOM树,每次修改DOM树,都导致重新layout,先构建好小树,再挂到DOM树上
    (1)如果同时创建父元素和子元素时,建议在内存中先将子元素添加到父元素,再将父元素一次性挂到页面上
    (2)如果只添加多个平级子元素时,就要将所有子元素,临时添加到文档片段中,再将文档片段整体添加到页面
    文档片段: 内存中,临时保存多个平级元素的虚拟父元素,用法和普通父元素完全一样
    步骤:
    (1)创建片段: var frag =document.createDocumentFragment()
    (2)将子元素临时追加到frag中 frag.appendChild(child);
    (3)将frag追加到页面 parent.appendChild(frag);
    append之后,frag自动释放,不会占用空间
    注意:
    DOM操作中如果涉及父元素,直接元素.parentNode就行,不用管是谁

    使用innerHTML也可以实现增删改查,直 接改html代码,但是要避免不直接操作DOM树

三、BOM对象

Window

Navigator

(1)由于历史原因,Navigator对象中的大部分属性都不能帮助我们识别浏览器了,一般我们只会使用userAgent来判断浏览器的信息,userAgent是一个字符串,这个字符串中包含有用来描述浏览器的信息,不同浏览器有不同的userAgent,配合正则表达式(是否含有浏览器名字关键字)来判断是什么浏览器
(2)由于IE11没有MSIE关键字,所以IE浏览器不能这样操作,但是IE有很多自己特有的对象和属性,我们可以通过判断是否存在来看
if(“ActiveXObject” in winodw)一个特殊的对象(即window的属性)

History

(1)length属性,可以获取到当前访问的链接数量
(2)back()可以回退到上一个页面,与返回按钮一样
(3)forward()可以跳转到下一个页面,作用与前进按钮一样
(4)go()可以跳转到指定页面,它需要一个整数作为参数:
1–向前跳转一个页面
2–向前跳转两个页面
-1–向后跳转一个页面
-2–向后跳转两个页面

Location

补充知识

原型对象

  1. 相当于一个公共的区域,所有同一个类的实例都可以访问到这个原型对象,可以将对象中公有的内容,统一设置到原型对象中
  2. 我们每创建一个函数,解析器都会向函数添加一个属性prototype,这个属性对应原型对象,这个属性对于普通函数没有任何作用
  3. 当函数以构造函数的形式调用时,它所创建的对象都会有一个隐含的属性,指向该构造函数的原型对象,通过_proto_来访问
  4. 使用对象的hasOwnProperty来检查对象自身是否含有该属性
  5. 原型对象也是对象,也有原型,当使用一个对象的属性和方法时,会在自身中寻找,自身如果有就直接使用,没有就去原型对象中找,直到找到Object对象的原型,Object对象的原型没有原型,如果在Object中依然没有找到,则返回undefined
  6. 使用obj.hasOwnProperty(属性名)检查对象自身是否有这个属性
  7. 我们打印对象时打印的对象的tostring()方法,我们可以通过修改对象的prototype属性来设置原型对象

类的操作

  1. 在js中同时修改多个样式属性:
    box.className = “b2”;
    不采用一个一个样式地修改,直接修改元素的class属性(设置一个新的class),浏览器只需要重新渲染一次,性能高,可以将行为和表现分开
  2. 添加多的样式,或者修改部分样式:
    box.className+=" b2" ;注意加一个空格
  3. 自己设置addClass 、hascClass(利用正则表达式判断是否有某个类和removeClass三个函数)

标签:javascript,下篇,--,元素,对象,事件,浏览器,节点,属性
来源: https://blog.csdn.net/m0_58642116/article/details/123040042