zoukankan      html  css  js  c++  java
  • 20160108小问题

    1.children和childNodes的区别

    childNodes是标准的,它返回的包括所有子节点,包括元素节点,属性节点,文本节点等,childNodes(i)在IE6/7/8/SF/Op/Chrome下支持,在IE9/FF下不支持。如果想取第一个HTML子节点,这里不能用firstChild,要用nodeType判断筛选下。

    children是非标准的,它返回的是子元素集合,同样在FF下不支持children(i)取元素,想取第一个HTML子节点,可以用children[0]。

    2.script标签放在body和head的区别

    一般放在head里是当页面加载前就运行JS代码,被调用时执行,而且可以保证脚本在任何调用之前已经被加载。

    一般放在body里是当页面加载后才运行JS代码,加载时被执行,它通常被用来生成页面的内容。

    把引入的js文件放在head里,加载head里代码时就同时载入了js代码,这样在body区调用时就不需要载入代码了,速度就提高了,这种区别在小程序看不明显,在复杂的大程序里就显著了。

    无论JS代码是内嵌还是在外链的文件中,页面的下载和渲染都必须停下来等待脚本执行完成。

    引入外部文件的好处:易维护,易扩展,方便管理和重复利用。

    浏览器在执行JS代码时,不能同时做其他的事情,即script标签每次出现都会让页面等待脚本的解析和执行,JS代码执行完后才能继续渲染页面,这便是JS的阻塞的特点。

    3.按需装载

    按需装载,脚本程序一般是下载后执行,如果脚本库非常庞大,一次性下载起来非常费时,传统解决方法是,按功能模块把脚本写在不同的文件中,页面上手动加入script标签装载指定内容,但有个缺点,类库的使用者需要知道每个脚本程序之间的关系,顺序等,但不是所有类库使用者都能把这些记清楚,容易出错。于是很多框架开始支持导入指令,想使用什么一个导入函数就完了,不必用一堆堆script文件,也不用关注他们之间的依赖关系。

    按需装载可分三种模式:

    即时同步按需装载(阻塞,JSI,JSVM,dojo)。最简单的按需装载实现,通过XMLHttpRequest同步装载脚本文件实现。但问题是浏览器使用这种方式同步获取资源时会导致浏览器阻塞:停止响应用户事件,停止页面重画操作。所以,这种虽然编程最为简单,但用户体验最差。

    异步按需装载(无阻塞,JSI2.0+)。异步导入,用户体验好,但因为异步的特征处理起来比较麻烦。

    延迟同步按需装载(无阻塞,JSI2.0+)。JSI通过动态预装载功能实现的一种同步获取资源的方法,虽然也是同步,但没有阻塞,可以算是兼顾易用性和用户体验方案。缺点是有一定延迟,当前脚本标签中不可用。

  • 相关阅读:
    JavaScript数据类型(第一天)
    数据库的事务隔离级别
    SSH(远程登录)原理
    Hadoop安装
    activiti学习第二天
    activiti学习第一天
    .net调用系统软键盘(兼容win7及win10)
    使用Blend设计出符合效果的WPF界面
    Mysql的收获
    PHP文件上传安全处理的步骤
  • 原文地址:https://www.cnblogs.com/sunshinegirl-7/p/5113867.html
Copyright © 2011-2022 走看看