SlideShare uma empresa Scribd logo
1 de 39
feifeipan
2006
左侧的促销信息
  滚动一下




       右边的广告要
        飘来飘去~
2008

让用户输入城市
简拼就能够匹配




    能提示用户入住
    日期输入正确性
2011

输入城市简拼能
最快匹配出城市




  能让页面第一时间展
  示给用户,并且最快
     加载完毕
角色演变

       性能
            100   ms

       功能


       美化
DOM Scripting

Ajax

UI Thread

JS Loader
DOM in the Browser World

 JS Engine           Dom API   Document

         Bridge (cost)

                                HTML
Javascript               DOM
                                 XML

                                       各浏览器引擎对比
DOM Access and Modification
DOM Access and Modification
           4500


           4000


           3500


           3000
运行时间(ms)




           2500
                              createElement
           2000
                              innerHTML
           1500


           1000


           500


              0
Repaints and Reflow

       Reflow
       • 浏览器使渲染树中受到影响的部分失效
       • 重新构造渲染树




      Repaints
      • 浏览器重新绘制受影响的部分到屏幕中
Repaints and Reflow
Repaints and Reflow

           document
                          1
                              使元素脱离文档流
        div                                   div
  div div div div

                                         2
                    3                        对其运用多重改变
                        把元素带回文档中


                                         div div div div
• function hideElement(){
     隐藏元素                      var ul = document.getElementById('mylist');
                               ul.style.display = "none";
                               ……doSomethingTo_UL();
   {display:none}              ul.style.display = "block";
                        }




                      • function useFragment(){
     文档片段                      var fragment = document.createDocumentFragment();
                               ……doSomethingTo_fragment ();
{document fragment}     }
                               document.getElementById('mylist').appendChild(fragment);




                      • function useCopy(){
                               var old = document.getElementById('mylist');
     创建备份                      var clone = old.cloneNode(true);

{element.cloneNode}
                               ……doSomethingTo_clone ();
                               old.parentNode.replaceChild(clone, old);
                        }
Event Delegation
          window      5
  冒泡
                   document    4


                              html    3
到达目标

                                     body   2


捕获(非IE)                                     div   1
DOM Scripting
function domAM(){
  var newD = document.createElement(“div”);

    var newDChildren = newD.childNodes;

    var newDSomeChildren = newD.getElementById(“menu”).getElementsByTagName(“a”);
}


function domAM_new(){
  var newD = existD.cloneNode(true);

    var newDChild = newD.children;

    var newDSomChildren = newD.querySelectorAll(“#menu a”);
}
DOM Scripting
function domAM(){
  var divs = document. getElementsByTagName(“div”);
  for(var i = 0; i < divs.length; i++){
   document.body.appendChild(document.createElement(‘div’));

    document.getElementsByTagName(“div”)*i+.style.backgroundColor = “#fff”;
    document.getElementsByTagName(“div”)*i+….
    document.getElementsByTagName(“div”)*i+.style.border = “1px solid #e00”;
    }
}

function domAM_new(){
   var divs = document. getElementsByTagName(“div”);
   for(var i = 0, l = divs.length; i < l; i++){
    document.body.appendChild(document.createElement(‘div’));
    var d = divs[i];
    d.style.backgroundColor = “#fff”;
    d….
    d.style.border = “1px solid #e00”;
    }
 }
DOM Scripting

Ajax

UI Thread

JS Loader
Xmlhttprequest

            • 只是获取数据的请求

   GET      • 数据会被缓存起来,提升性能
            • 只发送一个数据包



            • URL加上参数的长度接近或超过2048个字符
  POST      • 发送两个数据包(头信息、post正文)
Dynamic script tag insertion

跨域请求数据

function sendDynamicJS(){
    var scriptElement = document.createElement('script');
    scriptElement.src = 'json.js';
   document.getElementsByTagName('head')[0].appendChild(scriptElement);
}
Ajax
2
                        如果没有检索到,则发送Ajax请求
                          (URL : A.php?user=test3)




      1
          在缓存表中检索
                                                   3
                                                       将URL和返回的内容存入缓存表
Ajax客户端缓存表 - ajaxCacheHash

 Request URL            Response Content
 A.php?user=test1       this is test1’s introduction
 A.php?user=test2       this is test2’s introduction
 A.php?user=test3 this is test3’s introduction
Ajax More

数据格式(JSON/JSON-P/Custom Format)



服务器端缓存机制



……………………
DOM Scripting

Ajax

UI Thread

JS Loader
var button = document.getElementById(“my-button”);
button.onclick = function(){
   firstMethod();                        Time code


    setTimeout(function(){
      document.getElementById(“msg”).style.color=“red”;
    }, 25);
}
UI Thread
UI Thread

                                                                                                Javascript
                        UI Update - Button        JavaScript - onclick()
                                                                                               Timer code




UI Queue

       UI Update            JavaScript                                            Javascript
        Button                onclick                                            Timer code


       JavaScript
         onclick




                    0                        50            100             350
                                                        setTimeout()       Timer code
                                                        called             queued
Time
Splitting up Tasks
Web Workers

             Web Workers



    javascript               UI
      code                 update
>>worker.html
var worker = new Worker('my_task.js');
worker.onmessage = function(event){
    var realJson = event.data;
                                       传递大量数据
}
worker.postMessage(data);

>>my_task.js                                1.   处理大量数据
self.onmessage = function(event) {          2.   返回处理结果
     var jsonText = event.data;
     var jsonData = JSON.parse(jsonText);
     self.postMessage(jsonData);
};
DOM Scripting

Ajax

UI Thread

JS Loader
Script Position


                             图片资源被阻塞




                  图片资源并行加载
JS Loader



      Script
    Download     Script
               Execution
Script Download

if(isIEorOpera()){
   preObject = new Image();
}else{
   preObject = document.createElement(“object”);
}
Script Execution


var nScript = document.createElement(“script”);
nScript.type = “text/javascript”;
nScript.src = url;
document.getElementsByTagName(“head”)*0+.appendChild(nScript);
JS Loader


             图片资源被阻塞




            并行加载,不会阻塞
DOM Scripting     Ajax




 UI Thread      JS Loader
页面需要精美
功能需要完善
交互需要体贴



在任何时刻都不要让用户等太久
让他们感觉浏览你的网站是行云流水般的享受
feifeipan59@gmail.com


    @最爱牛腩的小牛-斐斐


        http://ued.ctrip.com/
附录1
• 浏览器中的DOM
     各浏览器情况


Browser       Javascript engine       DOM
IE            Jscript( jscript.dll)   Trident(mshtml.dll)
Firefox       JagerMonkey             Gecko
Chrome        V8                      WebCore
Safari        SquirrelFish            WebCore

Mais conteúdo relacionado

Mais procurados

Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享晓锋 陈
 
JavaScript Advanced Skill
JavaScript Advanced SkillJavaScript Advanced Skill
JavaScript Advanced Skillfirestoke
 
jQuery 選取器解析
jQuery 選取器解析jQuery 選取器解析
jQuery 選取器解析Kingsley Zheng
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化li qiang
 
iOS程序设计-数据持久化
iOS程序设计-数据持久化iOS程序设计-数据持久化
iOS程序设计-数据持久化qiyutan
 
07 View Controllers
07 View Controllers07 View Controllers
07 View ControllersTom Fan
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-CTom Fan
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层yiditushe
 
14 Saving Loading and Application States
14 Saving Loading and Application States14 Saving Loading and Application States
14 Saving Loading and Application StatesTom Fan
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现hua qiu
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basicsimplels
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101Jollen Chen
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范Hongjian Wang
 
jQuery介绍@disandu.com
jQuery介绍@disandu.comjQuery介绍@disandu.com
jQuery介绍@disandu.comThink hy
 
05 MapKit and Text Input
05 MapKit and Text Input05 MapKit and Text Input
05 MapKit and Text InputTom Fan
 

Mais procurados (18)

Mongo db技术分享
Mongo db技术分享Mongo db技术分享
Mongo db技术分享
 
JS2
JS2JS2
JS2
 
JavaScript Advanced Skill
JavaScript Advanced SkillJavaScript Advanced Skill
JavaScript Advanced Skill
 
jQuery 選取器解析
jQuery 選取器解析jQuery 選取器解析
jQuery 選取器解析
 
面向开发的前端性能优化
面向开发的前端性能优化面向开发的前端性能优化
面向开发的前端性能优化
 
iOS程序设计-数据持久化
iOS程序设计-数据持久化iOS程序设计-数据持久化
iOS程序设计-数据持久化
 
07 View Controllers
07 View Controllers07 View Controllers
07 View Controllers
 
02 Objective-C
02 Objective-C02 Objective-C
02 Objective-C
 
用Jquery实现拖拽层
用Jquery实现拖拽层用Jquery实现拖拽层
用Jquery实现拖拽层
 
14 Saving Loading and Application States
14 Saving Loading and Application States14 Saving Loading and Application States
14 Saving Loading and Application States
 
旺铺前端设计和实现
旺铺前端设计和实现旺铺前端设计和实现
旺铺前端设计和实现
 
MongoDB Basic
MongoDB BasicMongoDB Basic
MongoDB Basic
 
Backbone.js and MVW 101
Backbone.js and MVW 101Backbone.js and MVW 101
Backbone.js and MVW 101
 
希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范希望科技研发部变量命名及编码规范
希望科技研发部变量命名及编码规范
 
前端测试
前端测试前端测试
前端测试
 
jQuery介绍@disandu.com
jQuery介绍@disandu.comjQuery介绍@disandu.com
jQuery介绍@disandu.com
 
05 MapKit and Text Input
05 MapKit and Text Input05 MapKit and Text Input
05 MapKit and Text Input
 
Ooredis
OoredisOoredis
Ooredis
 

Semelhante a Script with engine

JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Enginejay li
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoloadjay li
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发leneli
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式Shengyou Fan
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门Xiujun Ma
 
Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)ziggear
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型keelii
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backboneJerry Xie
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路taobao.com
 
John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)Jia Mi
 
網站設計100步
網站設計100步網站設計100步
網站設計100步evercislide
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文Guo Albert
 
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题yiditushe
 
Kindeditor 设计思路
Kindeditor 设计思路Kindeditor 设计思路
Kindeditor 设计思路luolonghao
 

Semelhante a Script with engine (20)

JavaScript Engine
JavaScript EngineJavaScript Engine
JavaScript Engine
 
Berserk js
Berserk jsBerserk js
Berserk js
 
前端测试
前端测试前端测试
前端测试
 
Mvc
MvcMvc
Mvc
 
Javascript autoload
Javascript autoloadJavascript autoload
Javascript autoload
 
OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发OPOA in Action -- 使用MagixJS简化WebAPP开发
OPOA in Action -- 使用MagixJS简化WebAPP开发
 
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
[GDG Kaohsiung DevFest 2023] 以 Compose 及 Kotlin Multiplatform 打造多平台應用程式
 
Html5和css3入门
Html5和css3入门Html5和css3入门
Html5和css3入门
 
Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)Web设计 3 java_script初探(程序员与设计师的双重眼光)
Web设计 3 java_script初探(程序员与设计师的双重眼光)
 
异步编程与浏览器执行模型
异步编程与浏览器执行模型异步编程与浏览器执行模型
异步编程与浏览器执行模型
 
前端MVC之backbone
前端MVC之backbone前端MVC之backbone
前端MVC之backbone
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路
 
John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)John Resig Beijing 2010 (中文版)
John Resig Beijing 2010 (中文版)
 
A
AA
A
 
Javascript
JavascriptJavascript
Javascript
 
網站設計100步
網站設計100步網站設計100步
網站設計100步
 
Spring 2.x 中文
Spring 2.x 中文Spring 2.x 中文
Spring 2.x 中文
 
Glider
GliderGlider
Glider
 
中心教员J2 Ee面试题
中心教员J2 Ee面试题中心教员J2 Ee面试题
中心教员J2 Ee面试题
 
Kindeditor 设计思路
Kindeditor 设计思路Kindeditor 设计思路
Kindeditor 设计思路
 

Mais de Webrebuild

重构 这一路走来
重构 这一路走来重构 这一路走来
重构 这一路走来Webrebuild
 
构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统Webrebuild
 
Css3之颜色与半透明
Css3之颜色与半透明Css3之颜色与半透明
Css3之颜色与半透明Webrebuild
 
移动网站的兼容性探索
移动网站的兼容性探索移动网站的兼容性探索
移动网站的兼容性探索Webrebuild
 
孙极-Hello, JSS! - 一种新样式语言的诞生
孙极-Hello, JSS! - 一种新样式语言的诞生孙极-Hello, JSS! - 一种新样式语言的诞生
孙极-Hello, JSS! - 一种新样式语言的诞生Webrebuild
 
陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web appWebrebuild
 
谭正谊-QQ邮箱HTML5移动应用
谭正谊-QQ邮箱HTML5移动应用谭正谊-QQ邮箱HTML5移动应用
谭正谊-QQ邮箱HTML5移动应用Webrebuild
 
唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈Webrebuild
 
微观重构 黄婉芳
微观重构 黄婉芳微观重构 黄婉芳
微观重构 黄婉芳Webrebuild
 
年会主持 By pufen
年会主持 By pufen年会主持 By pufen
年会主持 By pufenWebrebuild
 
年会主持 By pufen
年会主持 By pufen年会主持 By pufen
年会主持 By pufenWebrebuild
 
Css schema by_sofish
Css schema by_sofishCss schema by_sofish
Css schema by_sofishWebrebuild
 
重构的价值转化 By impact
重构的价值转化 By impact重构的价值转化 By impact
重构的价值转化 By impactWebrebuild
 
七年之痒Webrebuild by emu
七年之痒Webrebuild by emu七年之痒Webrebuild by emu
七年之痒Webrebuild by emuWebrebuild
 
Qmail rebuild_by_nico
Qmail rebuild_by_nicoQmail rebuild_by_nico
Qmail rebuild_by_nicoWebrebuild
 
潘杰茂_网络图像优化
潘杰茂_网络图像优化潘杰茂_网络图像优化
潘杰茂_网络图像优化Webrebuild
 
张思坚 浏览器兼容性
张思坚 浏览器兼容性张思坚 浏览器兼容性
张思坚 浏览器兼容性Webrebuild
 
飘飘 年会主持
飘飘 年会主持飘飘 年会主持
飘飘 年会主持Webrebuild
 
石玉磊 Web rebuild
石玉磊 Web rebuild石玉磊 Web rebuild
石玉磊 Web rebuildWebrebuild
 
彪叔 [2010]webrebuild
彪叔 [2010]webrebuild彪叔 [2010]webrebuild
彪叔 [2010]webrebuildWebrebuild
 

Mais de Webrebuild (20)

重构 这一路走来
重构 这一路走来重构 这一路走来
重构 这一路走来
 
构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统构建可扩展的静态资源管理系统
构建可扩展的静态资源管理系统
 
Css3之颜色与半透明
Css3之颜色与半透明Css3之颜色与半透明
Css3之颜色与半透明
 
移动网站的兼容性探索
移动网站的兼容性探索移动网站的兼容性探索
移动网站的兼容性探索
 
孙极-Hello, JSS! - 一种新样式语言的诞生
孙极-Hello, JSS! - 一种新样式语言的诞生孙极-Hello, JSS! - 一种新样式语言的诞生
孙极-Hello, JSS! - 一种新样式语言的诞生
 
陈子舜-Html5 based web app
陈子舜-Html5 based web app陈子舜-Html5 based web app
陈子舜-Html5 based web app
 
谭正谊-QQ邮箱HTML5移动应用
谭正谊-QQ邮箱HTML5移动应用谭正谊-QQ邮箱HTML5移动应用
谭正谊-QQ邮箱HTML5移动应用
 
唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈唐俊开-Html5 mobile web app浅谈
唐俊开-Html5 mobile web app浅谈
 
微观重构 黄婉芳
微观重构 黄婉芳微观重构 黄婉芳
微观重构 黄婉芳
 
年会主持 By pufen
年会主持 By pufen年会主持 By pufen
年会主持 By pufen
 
年会主持 By pufen
年会主持 By pufen年会主持 By pufen
年会主持 By pufen
 
Css schema by_sofish
Css schema by_sofishCss schema by_sofish
Css schema by_sofish
 
重构的价值转化 By impact
重构的价值转化 By impact重构的价值转化 By impact
重构的价值转化 By impact
 
七年之痒Webrebuild by emu
七年之痒Webrebuild by emu七年之痒Webrebuild by emu
七年之痒Webrebuild by emu
 
Qmail rebuild_by_nico
Qmail rebuild_by_nicoQmail rebuild_by_nico
Qmail rebuild_by_nico
 
潘杰茂_网络图像优化
潘杰茂_网络图像优化潘杰茂_网络图像优化
潘杰茂_网络图像优化
 
张思坚 浏览器兼容性
张思坚 浏览器兼容性张思坚 浏览器兼容性
张思坚 浏览器兼容性
 
飘飘 年会主持
飘飘 年会主持飘飘 年会主持
飘飘 年会主持
 
石玉磊 Web rebuild
石玉磊 Web rebuild石玉磊 Web rebuild
石玉磊 Web rebuild
 
彪叔 [2010]webrebuild
彪叔 [2010]webrebuild彪叔 [2010]webrebuild
彪叔 [2010]webrebuild
 

Último

哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制
哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制
哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制radeybfgkf477
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務sardinesaying
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制gravestomas0
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...黑客 接单【TG/微信qoqoqdqd】
 
DIGNITAS INFINITA - 人类尊严 - 教区信仰教义宣言.pptx
DIGNITAS INFINITA - 人类尊严  -  教区信仰教义宣言.pptxDIGNITAS INFINITA - 人类尊严  -  教区信仰教义宣言.pptx
DIGNITAS INFINITA - 人类尊严 - 教区信仰教义宣言.pptxMartin M Flynn
 
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制radeybfgkf477
 
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】黑客 接单【TG/微信qoqoqdqd】
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??testhelper Sobrenome
 
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制paulachevez2
 
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制paulachevez2
 
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制radeybfgkf477
 
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...黑客 接单【TG/微信qoqoqdqd】
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...黑客 接单【TG/微信qoqoqdqd】
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdfshanshanhui1
 
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...黑客 接单【TG/微信qoqoqdqd】
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...ggbob1
 
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...黑客 接单【TG/微信qoqoqdqd】
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...ggbob1
 
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】黑客 接单【TG/微信qoqoqdqd】
 
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制paulachevez2
 

Último (20)

哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制
哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制
哪里可以购买日本群马县立县民健康科学大学学位记🏆做个假的文凭可认证吗🏆台湾大学文凭制作🏆托福TOEFL证书定制
 
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務【創業簡報練習】當一個人吃飯會想起誰:(A)I-DOLL 陪吃娃娃|科技創業與營運實務
【創業簡報練習】當一個人吃飯會想起誰: (A)I-DOLL 陪吃娃娃|科技創業與營運實務
 
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
未毕业在线购买日本熊本县立大学学位记🏆学习成绩单电子版定制🏆克隆爱尔兰大学文凭🏆CFA证书定制
 
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
1.🔥承接黑客破解任务,你的难题我们来解决! 💡无论你是游戏玩家、企业用户还是个人用户,都能在这里找到满意的解决方案。 💪经验丰富的专业团队为您提供全方位...
 
DIGNITAS INFINITA - 人类尊严 - 教区信仰教义宣言.pptx
DIGNITAS INFINITA - 人类尊严  -  教区信仰教义宣言.pptxDIGNITAS INFINITA - 人类尊严  -  教区信仰教义宣言.pptx
DIGNITAS INFINITA - 人类尊严 - 教区信仰教义宣言.pptx
 
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制
未毕业在线购买日本神户国际大学学位记🏆学习成绩单电子版定制🏆仿制西班牙大学毕业证🏆香港中学会考证书定制
 
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
我曾试图入侵正方教务系统,但我发现它有一些漏洞找黑客入侵电脑,找黑客入侵服务器,找黑客破解密码,怎么找黑客?【微 tytyqqww 信】
 
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
保分服务在SAT考试作弊问题上的应对策略和措施是否充分,如何确保服务的可靠性??
 
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制
在中国可以购买日本东京女子大学学位记/做个假的文凭可认证吗/定制马来西亚大学毕业证/CFA证书定制
 
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制
快速定制高仿日本广岛修道大学学位记/入学许可证书PDF修改/意大利大学文凭制作/日语JLPT证书定制
 
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制
未毕业在线购买日本长崎县立大学学位记🏆卒业证书外壳什么样子🏆办理比利时大学文凭🏆日语JLPT证书定制
 
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...
改GPA申请研究生#大学修改成绩修改 #找黑客改分#修改成绩单听说你想改一改在美国大学的成绩?嗯,我明白你的感受。其实,成绩这事儿也不是说改就能改的,你得...
 
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
1.💥黑客接单,挑战你的想象力! 🚀💡从最炫酷的黑科技到神秘莫测的代码世界,这里都是你想要的技术。无论是破解密码、入侵系统还是开发软件,我们都能帮你实现!...
 
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
003 DSKP KSSR SEMAKAN 2017 BAHASA CINA TAHUN 3.pdf
 
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
正方教务系统的小漏洞被黑客找到啦~他现在正在偷偷溜进去玩呢!(*^__^*)法国大学挂科改成绩 德国大学挂科改成绩 韩国大学挂科改成绩大学成绩修改,找黑客...
 
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
【国外大学文凭样本】多大毕业证认证Q/微:892798920办多伦多大学毕业证留信留服使馆公公证,多大硕士毕业证,U of T研究生毕业证,文凭,改U o...
 
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...
听说在加拿大,修改大学成绩单是学霸的日常?求秘籍📚,让我的GPA也能像枫叶一样红得耀眼!#加拿大学霸日常#黑客真的可以改业留学#毕业成绩吗?改了#成绩会被...
 
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
30T.ppt【国外大学文凭样本】TWU毕业证认证Q/微:892798920办西三一大学毕业证留信留服使馆公证,TWU硕士毕业证,TWU研究生毕业证,文凭...
 
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】
为了确保自己的安全和合法权益,我选择购买高品質的假护照、身份证明以及结婚证等证件。这些都是真实有效且具有法律效力的文件【微 tytyqqww 信】
 
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制
加急代办一个日本秋田县立大学学位记/合格通知书电子版制作/补办国外大学毕业证/CPA证书定制
 

Script with engine

  • 2. 2006 左侧的促销信息 滚动一下 右边的广告要 飘来飘去~
  • 3. 2008 让用户输入城市 简拼就能够匹配 能提示用户入住 日期输入正确性
  • 5. 角色演变 性能 100 ms 功能 美化
  • 7. DOM in the Browser World JS Engine Dom API Document Bridge (cost) HTML Javascript DOM XML 各浏览器引擎对比
  • 8. DOM Access and Modification
  • 9. DOM Access and Modification 4500 4000 3500 3000 运行时间(ms) 2500 createElement 2000 innerHTML 1500 1000 500 0
  • 10. Repaints and Reflow Reflow • 浏览器使渲染树中受到影响的部分失效 • 重新构造渲染树 Repaints • 浏览器重新绘制受影响的部分到屏幕中
  • 12. Repaints and Reflow document 1 使元素脱离文档流 div div div div div div 2 3 对其运用多重改变 把元素带回文档中 div div div div
  • 13. • function hideElement(){ 隐藏元素 var ul = document.getElementById('mylist'); ul.style.display = "none"; ……doSomethingTo_UL(); {display:none} ul.style.display = "block"; } • function useFragment(){ 文档片段 var fragment = document.createDocumentFragment(); ……doSomethingTo_fragment (); {document fragment} } document.getElementById('mylist').appendChild(fragment); • function useCopy(){ var old = document.getElementById('mylist'); 创建备份 var clone = old.cloneNode(true); {element.cloneNode} ……doSomethingTo_clone (); old.parentNode.replaceChild(clone, old); }
  • 14. Event Delegation window 5 冒泡 document 4 html 3 到达目标 body 2 捕获(非IE) div 1
  • 15. DOM Scripting function domAM(){ var newD = document.createElement(“div”); var newDChildren = newD.childNodes; var newDSomeChildren = newD.getElementById(“menu”).getElementsByTagName(“a”); } function domAM_new(){ var newD = existD.cloneNode(true); var newDChild = newD.children; var newDSomChildren = newD.querySelectorAll(“#menu a”); }
  • 16. DOM Scripting function domAM(){ var divs = document. getElementsByTagName(“div”); for(var i = 0; i < divs.length; i++){ document.body.appendChild(document.createElement(‘div’)); document.getElementsByTagName(“div”)*i+.style.backgroundColor = “#fff”; document.getElementsByTagName(“div”)*i+…. document.getElementsByTagName(“div”)*i+.style.border = “1px solid #e00”; } } function domAM_new(){ var divs = document. getElementsByTagName(“div”); for(var i = 0, l = divs.length; i < l; i++){ document.body.appendChild(document.createElement(‘div’)); var d = divs[i]; d.style.backgroundColor = “#fff”; d…. d.style.border = “1px solid #e00”; } }
  • 18. Xmlhttprequest • 只是获取数据的请求 GET • 数据会被缓存起来,提升性能 • 只发送一个数据包 • URL加上参数的长度接近或超过2048个字符 POST • 发送两个数据包(头信息、post正文)
  • 19. Dynamic script tag insertion 跨域请求数据 function sendDynamicJS(){ var scriptElement = document.createElement('script'); scriptElement.src = 'json.js'; document.getElementsByTagName('head')[0].appendChild(scriptElement); }
  • 20. Ajax
  • 21. 2 如果没有检索到,则发送Ajax请求 (URL : A.php?user=test3) 1 在缓存表中检索 3 将URL和返回的内容存入缓存表 Ajax客户端缓存表 - ajaxCacheHash Request URL Response Content A.php?user=test1 this is test1’s introduction A.php?user=test2 this is test2’s introduction A.php?user=test3 this is test3’s introduction
  • 24. var button = document.getElementById(“my-button”); button.onclick = function(){ firstMethod(); Time code setTimeout(function(){ document.getElementById(“msg”).style.color=“red”; }, 25); }
  • 25. UI Thread UI Thread Javascript UI Update - Button JavaScript - onclick() Timer code UI Queue UI Update JavaScript Javascript Button onclick Timer code JavaScript onclick 0 50 100 350 setTimeout() Timer code called queued Time
  • 27. Web Workers Web Workers javascript UI code update
  • 28. >>worker.html var worker = new Worker('my_task.js'); worker.onmessage = function(event){ var realJson = event.data; 传递大量数据 } worker.postMessage(data); >>my_task.js 1. 处理大量数据 self.onmessage = function(event) { 2. 返回处理结果 var jsonText = event.data; var jsonData = JSON.parse(jsonText); self.postMessage(jsonData); };
  • 30.
  • 31. Script Position 图片资源被阻塞 图片资源并行加载
  • 32. JS Loader Script Download Script Execution
  • 33. Script Download if(isIEorOpera()){ preObject = new Image(); }else{ preObject = document.createElement(“object”); }
  • 34. Script Execution var nScript = document.createElement(“script”); nScript.type = “text/javascript”; nScript.src = url; document.getElementsByTagName(“head”)*0+.appendChild(nScript);
  • 35. JS Loader 图片资源被阻塞 并行加载,不会阻塞
  • 36. DOM Scripting Ajax UI Thread JS Loader
  • 38. feifeipan59@gmail.com @最爱牛腩的小牛-斐斐 http://ued.ctrip.com/
  • 39. 附录1 • 浏览器中的DOM 各浏览器情况 Browser Javascript engine DOM IE Jscript( jscript.dll) Trident(mshtml.dll) Firefox JagerMonkey Gecko Chrome V8 WebCore Safari SquirrelFish WebCore