DOM结构

1.比较了window.onload与domReady之间的差异

window.onload=function{fun}fun会在dom树和文件图片等一切资源加载完成之后触发。

domReady{fun}fun会在dom树构建完成之后触发。而不用等待一些文档和图片资源。

domReady解决了window.onload因等待资源加载而导致的短时间的事件失效的问题。

domReady的实现方法

domReady主要使用了浏览器的DOMcontentLoaded事件的监听,以及用Hack方法实现对IE浏览器模拟DOMcontentLoaded

IE模拟DOMcontentLoaded主要是用了IE浏览器在DOM树未加载完之前对doScroll的调用会报错。

function myReady(fn){

//对于现代浏览器,对DOMContentLoaded事件的处理采用标准的事件绑定方式,false在时间冒泡阶段进行处理
    if ( document.addEventListener ) {
        document.addEventListener("DOMContentLoaded", fn, false);
    } else {
        IEContentLoaded(fn);
    }

//IE模拟DOMContentLoaded
    function IEContentLoaded (fn) {
        var d = window.document;
        var done = false;

//只执行一次用户的回调函数init()
        var init = function () {
            if (!done) {
                done = true;
                fn();
            }
        };

(function () {
            try {
                // DOM树未创建完之前调用doScroll会抛出错误

// arguments.callee表是重新调用此函数
                d.documentElement.doScroll(‘left‘);
            } catch (e) {
                //延迟再试一次~
                setTimeout(arguments.callee, 50);
                return;
            }
            // 没有错误就表示DOM树创建完毕,然后立马执行用户回调
            init();
        })();

//监听document的加载状态
        d.onreadystatechange = function() {
            // 如果用户是在domReady之后绑定的函数,就立马执行
            if (d.readyState == ‘complete‘) {
                d.onreadystatechange = null;
                init();
            }
        }
    }
}

时间: 2024-10-09 11:33:06

DOM结构的相关文章

React虚拟DOM具体实现——利用节点json描述还原dom结构

前两天,帮朋友解决一个问题: ajax请求得到的数据,是一个对象数组,每个对象中,具有三个属性,parentId,id,name,然后根据这个数据生成对应的结构. 刚好最近在看React,并且了解到其中的虚拟DOM,其实,就是利用json数据来代替DOM结构表示,然后利用这个json数据,渲染出DOM树,总体添加到页面中.下面,我就通过介绍我如何实现上面实际问题的思路,一边完成实际需求,一边实现React中虚拟DOM渲染成DOM的原理. 模拟数据结构如下: 1 var allJson = [{

jQuery EasyUI Datagrid组件的完整的基础DOM结构

该日志由 世纪之光 于2年前发表在datagrid分类下 转载: jQuery EasyUI Datagrid组件的完整的基础DOM结构 | WebUI框架使用参考+ http://www.easyui.info/archives/1157.html 关键字: datagrid源码分析, datagrid结构, easyui源码分析 标题可能有点长,什么叫“完整的基础DOM结构”,这里“基础”的意思是指这个结构不依赖具体数据,不依赖Datagrid的view属性,只要存在Datagrid实例就会

[Selenium]当DOM结构里面有iFrame,iFrame里面是html,怎么send keys to 里面的body,怎么用Assert进行验证?

我在测试的过程中遇到一个这样的问题,我无法通过CssSelector找到iFrame下边的html: <div id="mailEditorDiv" style="display: inline-block;"> <div class="maileditor"> <div style="height:130px;"> <div class="divBody">

whistle——真机移动端页面调试【查看、修改真机端的页面DOM结构及样式】

1.查看.修改真机端的页面DOM结构及样式[参考——https://imweb.io/topic/5981a34bf8b6c96352a59401]: 1.0.需要配置的rule——域名 weinre://随便某个分类命名[如:wq.jd.com weinre://test2——test2只是作为weinre的分类,防止一个weinre调试页面出现太多的连接]: 1.1.真机上访问某个页面,如访问微信下的发现>购物页面: 1.2.点击weinre下的,刚创建的分类test2,跳到http://1

怎样确保页面中的js代码一定是在DOM结构生成之后再调用

有这样一类问题, 如下所示, 就是在dom结构没有生成时就在js代码中调用了, 此时就会报错: <head> <script> console.log(document.body.nodeName); </script> </head> <body> </body> 上图所示的代码表明, 如果js代码在页面DOM没有解析出来时, document无法获取body元素, 这样就会造成报错. 解决方法有下面两种: 1. 将操作dom的代码

JavaScript DOM结构

1.DOM 简介 文档对象模型(Document Object Model 简称DOM) 是W3C组织推荐的处理可扩展标记语言(HTML或者XML)的标准编程接口. W3C已经定义了一系列的DOM接口 通过这些DOM接口可以改变网页的内容 结构和样式. 1.1 DOM树结构 文档:一个页面就是文档 DOM中使用document表示. 元素:页面中的所有标签都是元素 DOM中用element表示 节点:网页中所有的的内容都可以称之为节点(标签 属性 文本 注释等),DOM中使用node表示. DO

web开发基础知识之html常用标签和dom结构

HTML DOM是HTML Document Object Model(文档对象模型)的缩写,HTML DOM则是专门适用于HTML/XHTML的文档对象模型.熟悉软件开发的人员可以将HTML DOM理解为网页的API.它将网页中的各个元素都看作一个个对象,从而使网页中的元素也可以被计算机语言获取或者编辑. 基本标志:  1.<html></html>  2.<head></head>  3.<body></body>  4.<

模拟dom结构

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <div id="box">hello</div> <p id="p">world</p

DOM结构学习备忘

1.动态修改页面title: document.title="项目启动33"; 2.IE中打开UTF-8编码的网页中title显示空白页的问题 3.