BOM
1.1    介绍
    1.BOM是browser object model的缩写,简称浏览器对象模型
    2.BOM提供了独立于内容而与浏览器窗口进行交互的对象
    3.由于BOM主要用于管理窗口与窗口之间的通讯,因此其核心对象是window
    4.BOM由一系列相关的对象构成,并且每个对象都提供了很多方法与属性
    5.BOM缺乏标准,JavaScript语法的标准化组织是ECMA,DOM的标准化组织是W3C
    6.BOM最初是Netscape浏览器标准的一部分

各个对象间的关系    window--
            1.doucment--2.frames--3.history--4.location--5.navigator--6.screen
            1.document--1.1 anchors--1.2 links--1.3 forms--1.4 images--1.5 location

BOM的主要功能包括:
    1 . 弹出新浏览器窗口的能力。
    2. 移动、 关闭和更改浏览器窗口大小的能力。
    3. 提供web浏览器详细信息的导航对象。
    4. 提供浏览器载入的页面的详细信息的本地对象。
    5. 提供供用户屏幕分辨率详细信息的屏幕对象。
    6. 支持cookie。
    7. IE对BOM进行扩展以包括ActiveX对象类, 可以通过JavaScript来实现ActiveX对象。
注意:BOM是宿主对象。

1.2    定时器(window对象)
   1 .2.1    实现window对象的函数在指定的毫秒数后执行。
        setTimeout( executedFunction, millisecond) ;          //只执行一次

eg:    setTimeout( function( ) {            //放入匿名函数
            console. info( "执行函数! " ) ;
            }, 1000)

eg:    function execute( ) {                //放入命名函数
            console. info( "执行函数! " ) ;
            }
        setTimeout( execute, 1000) ;

eg:    setTimeout( " console. info( ' 执行函数! ' ) " , 1000) ; //直接放入执行代码

tips:    另外, setTimeout()可以返回一个值, 这个值可以传递给clearTimeout()用于销毁这个timeout定时器。
        eg:    var timer = setTimeout( function( ) {
            console. info( 1) ;
            }, 1000) ;
        clearTimeout( timer) ;

1 .2.2     setInterval(间隔执行)
    tips:    window对象的setInterval方法与setTimeout方法很类似, 只是这个方法会在指定毫秒数的间隔里重复调用。

eg:    setInterval( function( ) {            //setInterval也可执行放入执行代码或者命名函数的引 用
            console. info( "执行函数! " ) ;
                }, 1000) ;
    tips:    使用clearInterval可销毁这个interval定时器.
    eg:    var timer = setInterval( function( ) {
            console. info( "执行函数! " ) ;
            }, 1000) ;
        clearInterval( timer) ;

1.3 弹出对话框(window对象)
   1 .3.1 alert
    alert()向用户显示一条消息并等待用户关闭对话框。    
    tips:    alert方法会产生阻塞, 也就是说在用户关掉他们所显示的对话框之前, alert后面的代码不会执行。
         这就意味着在弹出一个对话框之前, 代码就会停止运行。
   1 .3.2 confirm
    confirm()也显示一条消息, 要求用户单击“确定”或“取消”按钮, 并返回一个布尔值。    
    eg:    var bool = confirm( " May I have a date with you?" ) ;
            console. info( bool) ;
    tips:    confirm方法也会产生阻塞。
   1 .3.3 prompt
    prompt()同样也显示一条消息, 等待用户输入字符串, 并返回那个字符串。
    prompt()有两种写法,分别是:
    eg:    var inputVal = prompt( "请输入一个值" ) ;
            console. info( typeof inputVal) ;        //有typeof 即是返回值的类型,无则返回值。
    eg:var inputVal = prompt( "请输入一个值" , "默认值" ) ;
    tips:    prompt方法也会产生阻塞。

1.4 打开新窗口和关闭窗口 (window对象)
   1 .4.1 open函数
    使用window对象的open函数可以打开一个新的浏览器窗口(或标签页, 这通常和浏览器的配置选项有关) 。 window.open()载入指定的url到新的或已
    存在的窗口中, 并返回代表那个窗口的window对象。 它有4个可选的参数。
    1 . 第一个参数是要在新窗口中显示的文档的url。 如果这个参数省略了(可以是空串) , 那么会使用空白页面的url about:blank。
    2. 第二个参数是新打开的窗口的名字(即window.name) , 如果使用 _blank、 _self、 _parent 或 _top 参数值则是指定引 用的文档将要显示在新的
    空白窗口、 自身窗口、 父窗口或顶层窗口中, 有点类似于a标签的target。
    3. 第三个参数是非标准的, HTML5规范也主张浏览器应该忽略它, 它有很多键值对可以用来设置新打开的窗口的大小位置等信息。
    4. 第四个参数只在第二个参数命名的是一个已存在的窗口时才有用。 它是一个布尔值, 声明了由第一个参数指定的url是应用替换掉窗口浏览器历史
    的当前记录(true) , 还是应该在窗口浏览历史中创建一个新的记录(false) , 后者是默认的设置。

1 .4.2 window.close函数
    window.close()函数将关闭一个窗口。
    
    eg:window. close( ) ;    //会关闭掉窗口, firefox是清空文档
    eg:    var newWindow = open( " https: //www. baidu. com" , " _blank" , " " ) ;        //也可以关闭已打开的窗口
        setTimeout( " newWindow. close( ) ; " , 1000) ;

1.5 访问指定URL(window.location对象)
    window对象的location对象属性有一个href属性, 用来指定需要载入的页面的url。
    eg:location. href = " https: //www. baidu. com" ;            //与a标签有点相识。
    
1.6 访问历史(window.history对象)
   1 .6.1 history.back函数
    该函数用来使页面退回到上一个浏览页面, 如果该页面时第一个打开的, 则该方法没有任何效果。
    eg:    history. back( ) ;                 //返回上一个页面

1 .6.2 history.foward函数
    该函数用来使页面前进到下一个浏览页面, 前提是之前使用了back或者go方法。    //前进到刚才浏览的网页。
    eg:history. foward( ) ;                 //进入下一个页面

1 .6.3 history.go()函数
    go(num)函数可指定前进或后退多少个页面, 其中的num控制前进、 后退的页面数, 若num为正数则为前进(如果为1 则相当于foward函数),
    如果num为负数则为后退(如果为-1 则相当于back函数) 。
    eg:    history. go( - 1) ;                 //返回上一个页面,相当于back函数。

1.7 获取客户端屏幕信息(window.screen对象)
    1. window.screen.height                屏幕高度, 以像素记。
    2. window.screen.width                屏幕宽度, 以像素记。
    3. window.screen.availHeight                可以使用的屏幕高度, 不包含工具栏等, 以像素记。
    4. window.screen.availWidth                可以使用的屏幕高度, 以像素记。

2 DOM(Document Object Model)                //文档对象模型
    DOM   ---tpis:
        通过 JavaScript,可以重构整个HTML文档。可以添加、移除、改变或重排页面上的项目。
        要改变页面的某个东西,JavaScript就需要有HTML文档中所有元素进行访问的入口。    
        这个入口,连同对HTML 元素进行添加、移动、改变或移除的方法和属性,都是通过文档对象模型来获得的(DOM)。
        在 1998 年,W3C 发布了第一级的 DOM 规范。这个规范允许访问和操作 HTML 页面中的每一个单独的元素。
        所有的浏览器都执行了这个标准,因此,DOM 的兼容性问题也几乎难觅踪影了。DOM 可被 JavaScript 用来读取、改变     
        HTML、XHTML 以及 XML 文档。

2.1 DHTML(Dynamic HTML)
    简介:    DHTML指动态HTML(Dynamic HTML)。
        DHTML 是一种用来创建动态站点的技术组合物。 对大多数人来说, DHTML 意味着 HTML 4.0、 样式表以及 JavaScript 的结合物。
    由四个部分的技术组成:
    1 . HTM L4.0    2. 层叠样式表(CSS)    3. 文档对象模型(DOM )    4. JavaScript

2.2 浏览器工作原理
    1.浏览器将载入的html变为dom树, 但是此时没有任何显示样式。
    2.所有显示的样式, 都是css定义的, 浏览器只会通过css来渲染视图样式。
    3.浏览器会在分别加载好dom树和计算形成css最终样式之后, 在一起渲染成一个完整的页面呈现出来

2.3 DOM介绍
    2.3.1 DOM树
      1.为了使我们能够通过编程的方式来控制网页, W3C组织提出了文档对象模型DOM(Document Object Model) 。
      2.DOM可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构。
      3. 这是表示和处理一个HTML或XML文档的常用方法。
      4. DOM的设计是以对象管理组织的规约为基础的, 因此可以用于任何编程语言。

2.3.2 DOM节点类型
        1.文档节点 Document ====根节点。
        2.文档类型节点 DocumentType ====DTD引 用即<! DOCTYPE>。
        3.元素节点 Element=======标签。
        4.文本节点 Text  ======标签中的文本或CDataSection内包含的普通文本。
        5.属性节点 Attr======元素的属性。
        6.CDataSection ====通常是文本节点和注释节点的父类。
        7.注释节点 Comment ===== 注释

2.3.3 节点的属性和方法
        nodeName                节点名字
        nodeValue                节点的值
        nodeType Number                 节点的类型常量之一
        ownerDocument Document             所属文档
        firstChild                     childNodes列表中的第一个节点
        lastChild                     childNodes列表中的最后一个节点
        childNodes                 NodeList 节点的列表
        previousSibling                 前一个兄弟节点
        nextSibling                 后一个兄弟节点
        hasChildNodes()                 是否含有子节点
        attributes                     属性集合
        appendChild(node)                 将node添加到childNodes的末尾
        insertBefore(newnode, refnode)         在childNodes中的refnode之前插入newnode
        removeChild(node)                 从childNodes中删除node
        replaceChild(newnode, oldnode)        将childNodes中的oldnode替换成newnode

2.3.4 DOM节点类型的常量和值
        节点类型         节点类型常量             节点类型值
        元素节点         Node.ELEMENT_NODE             1
        属性节点         Node.ATTRBUTE_NODE               2
        文本节点         Node.TEXT_NODE                  3
        CDATA节点     Node.CDATA_SECTION_NODE              4
        注释节点          Node.COMMENT_NODE                  8
        文档节点           Node.DOCUMENT_NODE                9
        文档类型节点      Node.DOCUMENT_TYPE_NODE          10

3DOM操作HTML
   3.1 所有类型节点的通用操作
    3.1 .1 获取节点
        1 .利用节点关系获取节点
           childNodes - 获取所有子节点。
           firstChild - 获取第一个子节点。
           lastChild - 获取最后一个子节点。
           previousSibling - 获取上一个兄弟节点。
           nextSibling - 获取下一个兄弟节点。
           parentNode - 获取父节点。

2.直接获取节点
           document.getElementById("id") - 根据id获取节点。
             document.getElementsByTagName("div") - 根据标签名称获取节点。
           document.getElementsByClassName("class") - 根据类名获取节点。
             document.getElementsByName("name") - 根据名称获取节点。

3.1 .2 创建的节点
        1 .创建新的节点
        createElement("div") - 创建div的元素节点。
        createTextNode("text") - 创建包含“text”的文本节点。
        eg:
        document. createElement( " p" ) ;
        document. createTextNode( "哈哈" ) ;
    tpis:这个时候你在页面上是看不到p标签的, 因为它还没有跟dom树关联在一起, 创建了一个节点一定要跟dom树发生关联。

2.克隆节点
        cloneNode(bool) - 克隆节点。
        bool为false时只克隆该元素节点。
        bool为true时会克隆该节点和该节点的所有子节点。

3.1 .3 添加节点
        appendChild(node) - 在所有子节点之后添加一个node。
        insertBefore(node, refnode) - 在refnode之前添加一个node,。
        记住此次添加是发生在某元素的子节点上的, 即在某元素的refnode子节点前面加一个node。

3.1 .4 删除节点
        removeChild(node) - 删除node子节点。

3.1 .5 替换节点
        raplaceChild(newnode, oldnode) - 把oldnode替换为newnode。
    tips:记住此次替换是发生在某元素的子节点上的, 即是把某元素的oldnode子节点替换为newnode。

3.1 .6 通用操作( 增删改)
        innerHTML - 某元素节点所包含的所有HTML, 包括所有元素节点 、 文本节点 以及属性节点。

bom和dom总结的更多相关文章

  1. BOM,DOM,ECMAScripts三者的关系

    一:DOM 文档对象模型(DOM)是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口(API) DOM是HTML与JavaScript之间沟通的桥梁.   DOM下,HTM ...

  2. BOM和DOM的区别和关联

    BOM 1. BOM是Browser Object Model的缩写,即浏览器对象模型. 2. BOM没有相关标准. 3. BOM的最根本对象是window. 从1可以看出来:BOM和浏览器关系密切. ...

  3. 实现JavaScript的组成----BOM和DOM

    我们知道,一个完整的JavaScript的实现,需要由三部分组成:ECMAScript(核心),BOM(浏览器对象模型),DOM(文档对象模型). 今天主要学习BOM和DOM. BOM: BOM提供了 ...

  4. BOM和DOM详解

    DOM介绍 D(文档)可以理解为整个Web加载的网页文档,O(对象)可以理解为类似window对象只来的东西,可以调用属性和方法,这里我们说的是document对象,M(模型)可以理解为网页文档的树形 ...

  5. JS中的函数、Bom、DOM及JS事件

    本期博主给大家带来JS的函数.Bom.DOM操作,以及JS各种常用的数据类型的相关知识,同时,这也是JavaScript极其重要的部分,博主将详细介绍各种属性的用法和方法. 一.JS中的函数 [函数的 ...

  6. 从零开始的JS生活(二)——BOM、DOM与JS中的事件

    上回书说道,JS中变量.运算符.分支结构.循环和嵌套循环等内容.本回就由本K给大伙唠唠JS中的BOM.DOM和事件. 一."花心大萝卜"--BOM 1.震惊,FFF团为何对BOM举 ...

  7. 前端之BOM和DOM

    BOM和DOM简介 BOM(Browser Object Model)是指浏览器对象模型,它使JavaScript有能力与浏览器进行“对话”. DOM(Document Object Model)是指 ...

  8. BOM和DOM的区别

    一.BOM和DOM之间的关系图 window对象是BOM的顶层(核心)对象,所有对象都是通过它延伸出来的,也可以称为window的子对象由于window是顶层对象,因此调用它的子对象时可以不显示的指明 ...

  9. 前端基础之BOM和DOM

    关于网页交互:BOM和DOM javaScript分为ECMAScript,DOM,BOM . BOM(Browser  object  Model)是指浏览器对象模型,它使JavaScript有能力 ...

  10. 前端基础之BOM和DOM(响应式布局、计时器、搜索框、select联动)

    一.BOM和DOM JavaScript分为 ECMAScript,DOM,BOM. BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进 ...

随机推荐

  1. 复旦高等代数 II(15级)思考题

    1.设 $f(x)=x^n+a_{n-1}x^{n-1}+\cdots+a_1x+a_0$ 是整系数首一多项式, 满足: $|a_0|$ 是素数且 $$|a_0|>1+\sum_{i=1}^{n ...

  2. css-position

    值 描述 absolute 生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位. 元素的位置通过 "left", "top", " ...

  3. 多MAVEN项目部署到tomcat中_之使用DBUG进行单步调试

    1.改成你想localhost:8080默认进入的目录 这个步骤会造成 code\.settings\org.eclipse.wst.common.component 文件的更改<propert ...

  4. 设置float之后vertical-align失效

    相关博文: 关于Vertical-Align你需要知道的事情 https://segmentfault.com/a/1190000002668492

  5. Ubuntu 12.04 Virtualbox 启用USB 设备支持

    转载自:http://www.cnblogs.com/ericsun/archive/2013/06/10/3130679.html 具体步骤在上面的链接中 今天在ubuntu下安装了Virtualb ...

  6. 自定义样式 实现文件控件input[type='file']

    一般我们设计的上传按钮都是和整个页面风格相似的样式,不会使用html原生态的上传按钮,但是怎么既自定义自己的样式,又能使用file控件功能呢? 思路是这样的: 1.定义一个相对定位的DIV,按照整成步 ...

  7. linux下添加环境变量

    我安装完 RedHat Linux 5 之后,在终端使用一些命令,如: ifcinfig 查看本机的IP,发现不能使用此命令,提示说“command not found”,这该怎么办呢 想想肯定是环境 ...

  8. spice命令使用

    spicec.exe -h 192.168.1.1 -p 5912 -w 主机 物理机IP 端口号 主机

  9. IOS开发之GCD---dispatch_semaphore

     信号量是一个整形值并且具有一个初始计数值,并且支持两个操作:信号通知和等待.当一个信号量被信号通知,其计数会被增加.当一个线程在一个信号量上等待时,线程会被阻塞(如果有必要的话),直至计数器大于零, ...

  10. Evolutionary Computing: 5. Evolutionary Strategies(2)

    Resource: Introduction to Evolutionary Computing, A.E.Eliben Outline recombination parent selection ...