zoukankan      html  css  js  c++  java
  • js 学习笔记 -- webapi

    webapi

    JS Web API有哪些?

    DOM、BOM、事件绑定、ajax、存储

    DOM的本质就是从HTML解析出来的一棵树,是树形的数据结构。

    document.getElementById();//id名,在实际开发中较少使用,选择器中多用class id一般只用在顶级层存在 不能太过依赖id
    document.getElementsByTagName();//标签名
    document.getElementsByClassName();//类名
    document.getElementsByName();//name属性值,一般不用
    document.querySelector();//css选择符模式,返回与该模式匹配的第一个元素,结果为一个元素;如果没找到匹配的元素,则返回null
    document.querySelectorAll()//css选择符模式,返回与该模式匹配的所有元素,结果为一个类数组

    所有节点都有nodeType属性,代表节点的不同类型,通过nodeType属性可以来判断节点的类型。经常使用的节点主要有以下几种类型:

    Element类型(元素节点):nodeType值为 1
    Text类型(文本节点):nodeType值为 3
    Comment类型(注释节点):nodeType值为 8
    Document类型(document节点):nodeType值为 9;其规定的一些常用的属性有
    document.body document.head 分别为HTML中的 body head

    document.documentElement为 html 标签

    所有的节点都有 hasChildNodes()方法 判断有无子节点 有一个或多个子节点时返回true】

    通过一些属性可以来遍历节点树

    parentNode//获取所选节点的父节点,最顶层的节点为#document
    childNodes //获取所选节点的子节点们
    firstChild //获取所选节点的第一个子节点
    lastChild //获取所选节点的最后一个子节点
    nextSibling //获取所选节点的后一个兄弟节点 列表中最后一个节点的nextSibling属性值为null
    previousSibling //获取所选节点的前一兄弟节点 列表中第一个节点的previousSibling属性值为null

    基于元素节点树的遍历(遍历元素节点树)

    parentElement //返回当前元素的父元素节点(IE9以下不兼容)
    children // 返回当前元素的元素子节点
    firstElementChild //返回的是第一个元素子节点(IE9以下不兼容)
    lastElementChild //返回的是最后一个元素子节点(IE9以下不兼容)
    nextElementSibling //返回的是后一个兄弟元素节点(IE9以下不兼容)
    previousElementSibling //返回的是前一个兄弟元素节点(IE9以下不兼容)

    DOM 操作

    一、节点创建型API

    1.1 createElement
    1.2 createTextNode
    1.3 cloneNode
    1.4 createDocumentFragment

    二、页面修改形API(包括删除和添加)(删)(改)

    2.1 appendChild(追加为子元素)
    2.2 insertBefore(插入前面)
    2.3 removeChild(删除子元素)
    2.4 replaceChild(替换子元素)
    三 节点查询型API(查)

    3.1 document.getElementById
    3.2 document.getElementsByTagName
    3.3 document.getElementsByName
    3.4 document.getElementsByClassName
    3.5 document.querySelector和document.querySelectorAll
    3.6 elementFromPoint()
    四 元素属性型操作(属性节点的操作)

    一般只操作html标签上的属性如id;class之类的;
    但是style属性如宽高背景色之类的一般写在css里面所以要通过element.currentStyle : window.getComputedStyle(element,pseduoElement)来操作详细请看BOM笔记

    4.1 getAttribute() (获取属性)
    4.2 createAttribute() (创建属性)
    4.3 setAttribute() (设置属性)
    4.4 romoveAttribute() (删除属性)
    4.5 element.attributes(将属性生成数组对象)

    BOM 浏览器对象模型

    navigator.userAgent就是获取浏览器的类型
    screen 基本上不用
    history.back(); // 浏览器后退
    history.forward();// 浏览器前进
    location 获取 url 地址信息

    hash: ""
    host: ""
    hostname: ""
    href: ""
    origin: ""
    pathname: ""
    port: ""
    protocol: ""
    reload: ƒ reload()
    replace: ƒ replace()
    search: ""
    

    事件

    Event 对象代表事件的状态,比如事件在其中发生的元素、键盘按键的状态、鼠标的位置、鼠标按钮的状态。

    事件句柄 (Event Handlers)

    事件通常与函数结合使用,函数不会在事件发生前被执行!

    标准 Event 属性

    下面列出了 2 级 DOM 事件标准定义的属性。

    属性 描述
    bubbles 返回布尔值,指示事件是否是起泡事件类型。
    cancelable 返回布尔值,指示事件是否可拥可取消的默认动作。
    currentTarget 返回其事件监听器触发该事件的元素。
    eventPhase 返回事件传播的当前阶段。
    target 返回触发此事件的元素(事件的目标节点)。
    timeStamp 返回事件生成的日期和时间。
    type 返回当前 Event 对象表示的事件的名称。

    标准 Event 方法

    下面列出了 2 级 DOM 事件标准定义的方法。IE 的事件模型不支持这些方法:

    方法 描述
    initEvent() 初始化新创建的 Event 对象的属性。
    preventDefault() 通知浏览器不要执行与事件关联的默认动作。
    stopPropagation() 不再派发事件。

    事件冒泡、事件捕获和事件委托

    事件委托依靠的就是事件冒泡和捕获的机制,我先来解释一下事件冒泡和事件捕获:

    事件冒泡会从当前触发的事件目标一级一级往上传递,依次触发,直到document为止。
    事件捕获会从document开始触发,一级一级往下传递,依次触发,直到真正事件目标为止。

    事件委托就是基于js的事件流产生的,事件委托是利用事件冒泡,将事件加在父元素或者祖先元素上,触发该事件

    event.stopPropagation() // 阻止冒泡
    

    ajax

    XMLHttpRequest

    方法 说明
    open 请求URL,方法等
    send 发送请求
    onreadystatechange xhr.readyState会从0到4变化 ,请求的状态
    0 —— (未初始化)还没有调用send()方法
    1 —— (载入)已调用send()方法,服务器连接已建立,正在发送请求
    2 —— (载入完成) send()方法执行完成,已经接收到全部响应内容
    3 —— (交互)正在解析响应内容
    4 —— (完成)响应内容解析完成,可以在客户端调用
    
    示例
    const xhr = new XMLHttpRequest()
    xhr.open('POST', '/login', true)
    xhr.onreadystatechange = function() {
        if (xhr.readyState === 4) {
            if (xhr.status === 200) {
                // console.log(JSON.parse(xhr.responseText))
                alert(xhr.responseText)
            } else {
                console.log('其他情况')
            }
        }
    }
    const postData = {
        username: 'xxx',
        password: 'xxx'
    }
    xhr.send(JSON.stringify(postData))
    

    同源策略和跨域

    同源策略

    同源:协议、域名、端口,三者必须一致

    加载图片img、css、js可以无视同源策略

    跨域方法

    jsonp,jsonp就是创建一个script标签,
    cors,设置 http 请求 跨域头,Access-Control-Allow-Origin
    postMessage
    http-proxy -- 常用
    websocket
    document.domain/window.name/location.hash + iframe -- 不常用

    存储

    1.localStorage数据会永久存储,除非代码或手动删除
    2.sessionStorage数据只存在于当前会话,浏览器关闭则清空
    3.cookie 存储大小最大是4KB,http请求时需要发送到服务端,cookie可以跨端口

  • 相关阅读:
    python基础知识(集合)
    python基础知识(字典)
    python基础知识(循环语句)
    Python基础知识(程序结构)
    python基础知识(正则表达式)
    python基础知识(字符串)
    jmeer_09_JDBC Request
    性能总结_01
    性能02_
    jmeter_07正则提取器_JDBC_Connection_Configuration
  • 原文地址:https://www.cnblogs.com/SLchuck/p/13763842.html
Copyright © 2011-2022 走看看