SlideShare a Scribd company logo
1 of 37
Download to read offline
BOOKMARKLET
                          (   )
                                    ·
                                QuChao.com




Wednesday, December 22, 2010                               1

    1.            “      ”     QQ            Bookmarklet

    2.
CONTENTS

   •                            Bookmarklet   15min



   •                                          10min



   •                           DOM            10min



Wednesday, December 22, 2010                          2

           D2
ABOUT ME

                                         - Chappell QU

                                     ·           ·

                                 Chappell.Wat@Gmail.com
                                 http://QuChao.com



Wednesday, December 22, 2010                              3

                Web
BOOKMARKLET




Wednesday, December 22, 2010                 4
BOOKMARKLET

   Bookmarklet                                                                Favlet
       =                                                                        =
    Bookmark                                                                 Favorite
       +                                                            Applet      +
     Applet                                                                   Applet
Wednesday, December 22, 2010                                                            5

1. Bookmarklet                          Bookmark               applet Java
2. Favlet                                    Favorite    IE
3.                  wikipedia (http://zh.wikipedia.org/zh-cn/Bookmarklet)
BOOKMARKLET

     Bookmarklet                                       “
         =
      Bookmark
         +
       Applet                                                                           ”
Wednesday, December 22, 2010                                                                6

1. bookmarklets.com             1998   2001   favlet       Tantek Çelik   bookmarklet

2.                  wikipedia
3.
BOOKMARKLET

                                                          void    :
                                                                 undefinded


                                 void(0);”>…</a>
           <a href=” javascript: void

        javascript                    :


                                     undefinded

Wednesday, December 22, 2010                                                 7

1.                     bookmarklet
2.                                        IE6   onclick
BOOKMARKLET


                               javascript:(function(){
                                   /* blah blah */
                               })();




Wednesday, December 22, 2010                                  8

         bookmarklet                              undefinded
BOOKMARKLET
     javascript: (function (F, i, r, e, b, u, g, L, I, T, E) {
         if (F.getElementById(b)) return;
         E = F[i + 'NS'] && F.documentElement.namespaceURI;
         E = E ? F[i + 'NS'](E, 'script') : F[i]('script');
         E[r]('id', b);
         E[r]('src', I + g + T);
         E[r](b, u);
         (F[e]('head')[0] || F[e]('body')[0]).appendChild(E);
         E = new Image;
         E[r]('src', I + L);
     })(document, 'createElement', 'setAttribute',
     'getElementsByTagName', 'FirebugLite', '4', 'firebug-
     lite.js', 'releases/lite/latest/skin/xp/sprite.png',
     'https://getfirebug.com/', '#startOpened');



Wednesday, December 22, 2010                                     9

1.                                               Bookmarklet
2.          Firebug Lite (http://getfirebug.com/firebuglite)
3.
BOOKMARKLET

         javascript: function fnStartDesign(sUrl) {
             var nScript = document.createElement('script');
             nScript.setAttribute('language', 'JavaScript');
             nScript.setAttribute('src', sUrl);
             document.body.appendChild(nScript);
         }
         fnStartDesign('http://www.sprymedia.co.uk/design/
         design/media/js/design-loader.js');




Wednesday, December 22, 2010                                                             10

1.                  Design     Bookmarklet (http://www.sprymedia.co.uk/article/Design)
2.
BOOKMARKLET

     javascript: void((function () {
         var element = document.createElement('script');
         element.setAttribute('src', 'http://dict.cn/hc/init.php');
         document.body.appendChild(element);
     })())




Wednesday, December 22, 2010                                                  11

1.       Dict.cn               Bookmarklet   (http://dict.cn/foot/help.htm)
2.
BOOKMARKLET

 javascript: (function (q) { !! q ? q.toggle() :
 (function (d, j) {
         j = d.createElement('script');
         j.src = '//ime.qq.com/fcgi-bin/getjs';
         j.setAttribute('ime-cfg', 'lt=2');
         d.getElementsByTagName('head')[0].appendChild(j)
     })(document)
 })(window.QQWebIME)




Wednesday, December 22, 2010                                           12

1.       QQ                    Bookmarklet    (http://py.qq.com/web)
2.
Wednesday, December 22, 2010   13
Bookmarklet
     •

               CGI             301/302                CGI
                                                                  etc.


                                                                 CDN
     •



Wednesday, December 22, 2010                                             14

1.
2.       CGI                             session
3.
BOOKMARKLET
                                                                                 6
     var                         = Math.min(


                          href                                     ,     2,083       >100k    >100k   >100k   >100k



                                                              ,          508         >100k    >100k   34,464 65,530



                                                               );        2,083       65,536   >100k   2,347   >100k




Wednesday, December 22, 2010                                                                                          15

1.                                           bookmarklet
2.                                                         Bookmarklet
3.       IE6                     508 bytes
4.                                                                 20
BOOKMARKLET


                          href             2,083   >100k       >100k   >100k   >100k



                                           508     >100k       >100k   34,464 65,530



                                           2,083   65,536      >100k   2,347   >100k



                                            255                        4096
Wednesday, December 22, 2010                                                           16

1.                             “   ”   “     ”
2.       TT4                                       255 bytes      QQBrowser
     4096 bytes
BOOKMARKLET



                                           =   255




Wednesday, December 22, 2010                         17

              TT4              255 bytes
BOOKMARKLET
                                                 3
javascript: (function2(q) { !! q ? q.toggle() :
    (function (d, j) {
        j = d.createElement('script');         1
        j.src = '//ime.qq.com/fcgi-bin/getjs';
                                           4
        j.setAttribute('ime-cfg', 'lt=2');
        d.getElementsByTagName('head')[0].appendChild(j)
    })(document)
})(window.QQWebIME)


         1.          CGI
         2.
         3.
         4.
         5.         ……
Wednesday, December 22, 2010                           18

     QQ                   Bookmarklet
1.                                          //
                  https
2. 255
3.                                      /
4.
5.                             ……
Wednesday, December 22, 2010   19
•


     •                                 DOM


     •


Wednesday, December 22, 2010                             20

1.

2.                                           DOM   DOM
3.                             “   ”
JAVASCRIPT
     •



     •



     •



     •



     •            ……
Wednesday, December 22, 2010                                  21

     Javascript
1.                             $()               QQ

2. QQ                          QQWebIME
3.
4. WebQQ            QQ                      QQ        WebQQ
CSS/HTML

                                         A             B                       C


                                        HTML       iframe   Flash/SilverLight/...


                                                            UI




                                  CSS                            JS



Wednesday, December 22, 2010                                                        22


A.                                           CSS
B. QQ                                                                 iframe
Firefox
C.      Javascript
QQ

                                                    <style>
                        A+                              qqwebime {
                                                             color: blue;
                                                        }
                                                    </style>
                  HTML
                                                     <script>
                                                         isIE && doc.createElement(‘qqwebime’);
                                                     </script>
           CSS
                                                     <qqwebime>QQ                         </qqwebime>


                                                     ref: http://ejohn.org/blog/html5-shiv/



Wednesday, December 22, 2010                                                                            23

1. QQ                “                  ”            “      A”      “             CSS ”                 *
{}   :first-child{}
2.              jQuery          Jesig       (http://ejohn.org/blog/html5-shiv/)
3.           ISD               Damao
DOM




Wednesday, December 22, 2010         24
DOM
                                             DOM

                                                        iframe

                                            iframe

                                                      iframe




Wednesday, December 22, 2010                                     25

1.                        iframe
2.                                 iframe
3.
5.
PT.A
                                            DOM


              1.


              2.                     load


              3.



Wednesday, December 22, 2010                             26

                               DOM
PT.B
                                     DOM


              1.
                               DOM

              2.                           DOM


              3.



Wednesday, December 22, 2010                      27

                                     DOM
PT.C
                                                                DOM
            •                  Mutation Events                  DOMNodeInserted


            •                  Mutation Events              DOM Level 2 Core

                (ref: http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html)


            •                     1~4                 1~9               3~5                 9-11                    9




Wednesday, December 22, 2010                                                                                            28

1.                       Mutation Events                           DOMNodeInsertedIntoDocument      DOMSubtreeModified
                                DOMNodeInserted
2. Mutation Events       DOM Level 2        (http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html)

3.                                       DOM Level2                        LV3    IE9B                   IE 6/7/8
PT.C
                                                      DOM
                    document.addEventListener(
            •           Mutation Events // DOMNodeInserted
                        'DOMNodeInserted',
                        function (evt) {   //
                            //
                            var curTarget = evt.target;
            •                  Mutation Events DOM Level 2 Core
                                  //       iframe
                               if (1 !== curTar.nodeType
                                     || ‘iframe’ !== curTar.nodeName) return;
                (via http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html)

                                  //    iframe             DOM
            •                  }, 1~4        1~9             3~5              9/10            9
                               false
                    );




Wednesday, December 22, 2010                                                                      29
PT.D
                                                                  DOM
            •                  IE               CSS Expression


            •                                                 Behavior                        Expression

                (ref: http://dean.edwards.name/weblog/2005/06/base64-sexy/)

            •                                     6/7




Wednesday, December 22, 2010                                                                                                     30


1.                                  PNG   IE6               (http://www.komodomedia.com/blog/2007/11/css-png-image-fix-for-ie/)
                       IE                                           CSS        Expression                                   IE
bug
2. Expression                                                                       “         ”                        Dean
Edwards       05                                        (http://dean.edwards.name/weblog/2005/06/base64-sexy/)
PT.D
                                                DOM
                    <style>
            •           IE
                        iframe {    CSS Expression
                             behavior:expression(iframeInserted(this));
                        }
                    </style>
            •    <script>
                                             Behavior            Expression
                       function iframeInserted(node) {
                (via http://dean.edwards.name/weblog/2005/06/base64-sexy/)
                             //
                             node.style.behavior = 'none';

            •                  //    6/7
                                    iframe         DOM
                       }
                   </script>




Wednesday, December 22, 2010                                                  31
PT.E
                                                                        DOM
           •                   IE8                                                 Accessor (getter/setter)
                                                        innerHTML
               appendChild

           •                   IE8                              Accessor (getter/setter)
                               MSDN
               (ref: http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx)


           •                                        8std



Wednesday, December 22, 2010                                                                                              32

1.                             IE      outerHTML                               DOM        Accessor (getter/setter)
MSDN                IE8                                                  innerHTML                          appendChild

2.    MSDN                           (http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx)
PT.E
                                                   DOM
            • // IE8         innerHTML
                                                            Accessor (getter/setter)
                                     innerHTML
                 var propDscrptr = Object.getOwnPropertyDescriptor
                appendChild
                 (Element.prototype, ‘innerHTML’);

                 //                      innerHTML
                 Object.defineProperty(Element.prototype, ‘innerHTML’, {
                        //              setter
            •           set: function (html) Accessor (getter/setter)
                          IE8                           {
                             MSDN
                              //                innerHTML set
                              propDscrptr.set.call(this, html);
                (via http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx)
                               //   iframe            DOM
            • });          }           8std



Wednesday, December 22, 2010                                                             33

            innerHTML                              hack           outerHTML
PT.E
                                                        DOM
            •                  IE8                                Accessor (getter/setter)
                  //                 innerHTML
                              appendChild
                appendChild
                  var methodProto = Element.prototype[‘appendChild’];

                    //              appendChild
                    Element.prototype[‘appendChild’] = function () {
                        //           appendChild
            •           IE8 res = methodProto.apply(this, arguments);
                        var                 Accessor (getter/setter)
                                 MSDN
                          //         iframe                DOM
                (via http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx)
                               return result;
            •       };                      8std



Wednesday, December 22, 2010                                                                 34

            appendChild                                hack             insertBefore
PT.F
                                              DOM
             •

             •                        iframe
                       iframe   flag                             flag
                                        iframe

             •


Wednesday, December 22, 2010                                                 35

1.       A                              iOS    Android            fallback

2.
·
                               http://QuChao.com
                               Chappell.Wat@Gmail.com
Wednesday, December 22, 2010                        36
Dec 18th, 2010




Wednesday, December 22, 2010                    37

More Related Content

What's hot

Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5Adrian Olaru
 
Jquery at-webcamp
Jquery at-webcampJquery at-webcamp
Jquery at-webcampgaplabs
 
Custom YUI Widgets
Custom YUI WidgetsCustom YUI Widgets
Custom YUI Widgetscyrildoussin
 
Developing in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha TouchDeveloping in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha TouchSencha
 
MongoDB on Rails (and Ruby)
MongoDB on Rails (and Ruby)MongoDB on Rails (and Ruby)
MongoDB on Rails (and Ruby)jan_mindmatters
 

What's hot (7)

03DOM.ppt
03DOM.ppt03DOM.ppt
03DOM.ppt
 
Introduction to HTML5
Introduction to HTML5Introduction to HTML5
Introduction to HTML5
 
Jquery at-webcamp
Jquery at-webcampJquery at-webcamp
Jquery at-webcamp
 
Custom YUI Widgets
Custom YUI WidgetsCustom YUI Widgets
Custom YUI Widgets
 
Developing in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha TouchDeveloping in HTML5: Widgetbox & Sencha Touch
Developing in HTML5: Widgetbox & Sencha Touch
 
Di and Dagger
Di and DaggerDi and Dagger
Di and Dagger
 
MongoDB on Rails (and Ruby)
MongoDB on Rails (and Ruby)MongoDB on Rails (and Ruby)
MongoDB on Rails (and Ruby)
 

Viewers also liked

Siguria - Informatika Biznesore
Siguria - Informatika BiznesoreSiguria - Informatika Biznesore
Siguria - Informatika BiznesoreMenaxherat
 
用寧靜心擁抱世界
用寧靜心擁抱世界用寧靜心擁抱世界
用寧靜心擁抱世界Josephine C
 
世界著名高層建築物
世界著名高層建築物世界著名高層建築物
世界著名高層建築物Josephine C
 
Social Maturity of Mountain Travel Industry
Social Maturity of Mountain Travel IndustrySocial Maturity of Mountain Travel Industry
Social Maturity of Mountain Travel IndustryKathy Herrmann
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...SEO, LLC dba www.SplinternetMarketing.com
 
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management Dr. Shriniwa...
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management  Dr. Shriniwa...Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management  Dr. Shriniwa...
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management Dr. Shriniwa...shriniwaskashalikar
 
Earth 盧廣《中國的污染》
Earth   盧廣《中國的污染》Earth   盧廣《中國的污染》
Earth 盧廣《中國的污染》Josephine C
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...SEO, LLC dba www.SplinternetMarketing.com
 
運用Closure Compiler 打造高品質的JavaScript
運用Closure Compiler 打造高品質的JavaScript運用Closure Compiler 打造高品質的JavaScript
運用Closure Compiler 打造高品質的JavaScripttaobao.com
 
How will Brexit impact on Construction?
How will Brexit impact on Construction?How will Brexit impact on Construction?
How will Brexit impact on Construction?Francis Ho
 
Telekomunikimet
TelekomunikimetTelekomunikimet
TelekomunikimetMenaxherat
 
Flexera Software Consulting
Flexera Software ConsultingFlexera Software Consulting
Flexera Software ConsultingFlexera
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...SEO, LLC dba www.SplinternetMarketing.com
 

Viewers also liked (19)

Ranking Report For Splinternet Marketing 3 28 2011
Ranking Report For Splinternet Marketing 3 28 2011Ranking Report For Splinternet Marketing 3 28 2011
Ranking Report For Splinternet Marketing 3 28 2011
 
Some Of Our Global Top 30 Organic Search Engine Rankings
Some Of Our Global Top 30 Organic Search Engine RankingsSome Of Our Global Top 30 Organic Search Engine Rankings
Some Of Our Global Top 30 Organic Search Engine Rankings
 
Siguria - Informatika Biznesore
Siguria - Informatika BiznesoreSiguria - Informatika Biznesore
Siguria - Informatika Biznesore
 
用寧靜心擁抱世界
用寧靜心擁抱世界用寧靜心擁抱世界
用寧靜心擁抱世界
 
Ranking analysis-12-20-2011-2
Ranking analysis-12-20-2011-2Ranking analysis-12-20-2011-2
Ranking analysis-12-20-2011-2
 
世界著名高層建築物
世界著名高層建築物世界著名高層建築物
世界著名高層建築物
 
Social Maturity of Mountain Travel Industry
Social Maturity of Mountain Travel IndustrySocial Maturity of Mountain Travel Industry
Social Maturity of Mountain Travel Industry
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
 
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management Dr. Shriniwa...
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management  Dr. Shriniwa...Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management  Dr. Shriniwa...
Tanavmuktisathi Upayukta Llekh Bestseller For Stress Management Dr. Shriniwa...
 
Rankings new-site-three-week-comparison
Rankings new-site-three-week-comparisonRankings new-site-three-week-comparison
Rankings new-site-three-week-comparison
 
Earth 盧廣《中國的污染》
Earth   盧廣《中國的污染》Earth   盧廣《中國的污染》
Earth 盧廣《中國的污染》
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Seo And Interne...
 
運用Closure Compiler 打造高品質的JavaScript
運用Closure Compiler 打造高品質的JavaScript運用Closure Compiler 打造高品質的JavaScript
運用Closure Compiler 打造高品質的JavaScript
 
Telling your story
Telling your story Telling your story
Telling your story
 
How will Brexit impact on Construction?
How will Brexit impact on Construction?How will Brexit impact on Construction?
How will Brexit impact on Construction?
 
Telekomunikimet
TelekomunikimetTelekomunikimet
Telekomunikimet
 
Flexera Software Consulting
Flexera Software ConsultingFlexera Software Consulting
Flexera Software Consulting
 
Web rebuild
Web rebuildWeb rebuild
Web rebuild
 
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
Seo And Search Engine Ranking Report Splinternetmarketing.Com Internet Market...
 

More from taobao.com

编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editortaobao.com
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践taobao.com
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化taobao.com
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践taobao.com
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editortaobao.com
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践taobao.com
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践taobao.com
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路taobao.com
 
Java script physical engine
Java script physical engineJava script physical engine
Java script physical enginetaobao.com
 
Html5环保小游戏
Html5环保小游戏Html5环保小游戏
Html5环保小游戏taobao.com
 
阅读类Web应用前端技术探索
阅读类Web应用前端技术探索阅读类Web应用前端技术探索
阅读类Web应用前端技术探索taobao.com
 
完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索taobao.com
 
张平:JavaScript引擎实现
张平:JavaScript引擎实现张平:JavaScript引擎实现
张平:JavaScript引擎实现taobao.com
 
高力:19楼现有前端架构
高力:19楼现有前端架构高力:19楼现有前端架构
高力:19楼现有前端架构taobao.com
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台taobao.com
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具taobao.com
 
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考taobao.com
 
刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践taobao.com
 
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践taobao.com
 

More from taobao.com (20)

编辑器设计U editor
编辑器设计U editor编辑器设计U editor
编辑器设计U editor
 
Berserk js
Berserk jsBerserk js
Berserk js
 
淘宝开放产品前端实践
淘宝开放产品前端实践淘宝开放产品前端实践
淘宝开放产品前端实践
 
广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化广告投放代码和创意代码持续优化
广告投放代码和创意代码持续优化
 
第三方内容开发最佳实践
第三方内容开发最佳实践第三方内容开发最佳实践
第三方内容开发最佳实践
 
编辑器设计Kissy editor
编辑器设计Kissy editor编辑器设计Kissy editor
编辑器设计Kissy editor
 
百度前端性能监控与优化实践
百度前端性能监控与优化实践百度前端性能监控与优化实践
百度前端性能监控与优化实践
 
Node.js在淘宝的应用实践
Node.js在淘宝的应用实践Node.js在淘宝的应用实践
Node.js在淘宝的应用实践
 
Kind editor设计思路
Kind editor设计思路Kind editor设计思路
Kind editor设计思路
 
Java script physical engine
Java script physical engineJava script physical engine
Java script physical engine
 
Html5环保小游戏
Html5环保小游戏Html5环保小游戏
Html5环保小游戏
 
阅读类Web应用前端技术探索
阅读类Web应用前端技术探索阅读类Web应用前端技术探索
阅读类Web应用前端技术探索
 
完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索完颜:移动网站的兼容性探索
完颜:移动网站的兼容性探索
 
张平:JavaScript引擎实现
张平:JavaScript引擎实现张平:JavaScript引擎实现
张平:JavaScript引擎实现
 
高力:19楼现有前端架构
高力:19楼现有前端架构高力:19楼现有前端架构
高力:19楼现有前端架构
 
李成银:前端编译平台
李成银:前端编译平台李成银:前端编译平台
李成银:前端编译平台
 
钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具钱宝坤:多浏览器集成的JavaScript单元测试工具
钱宝坤:多浏览器集成的JavaScript单元测试工具
 
张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考张克军:前端基础架构的实践和思考
张克军:前端基础架构的实践和思考
 
刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践刘平川:【用户行为分析】Marmot实践
刘平川:【用户行为分析】Marmot实践
 
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
吴英杰:【用户行为分析】淘宝页面显微镜系统原理及实践
 

Recently uploaded

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfhans926745
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 

Recently uploaded (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 

Bookmarklet型(云端)应用的前端架构

  • 1. BOOKMARKLET ( ) · QuChao.com Wednesday, December 22, 2010 1 1. “ ” QQ Bookmarklet 2.
  • 2. CONTENTS • Bookmarklet 15min • 10min • DOM 10min Wednesday, December 22, 2010 2 D2
  • 3. ABOUT ME - Chappell QU · · Chappell.Wat@Gmail.com http://QuChao.com Wednesday, December 22, 2010 3 Web
  • 5. BOOKMARKLET Bookmarklet Favlet = = Bookmark Favorite + Applet + Applet Applet Wednesday, December 22, 2010 5 1. Bookmarklet Bookmark applet Java 2. Favlet Favorite IE 3. wikipedia (http://zh.wikipedia.org/zh-cn/Bookmarklet)
  • 6. BOOKMARKLET Bookmarklet “ = Bookmark + Applet ” Wednesday, December 22, 2010 6 1. bookmarklets.com 1998 2001 favlet Tantek Çelik bookmarklet 2. wikipedia 3.
  • 7. BOOKMARKLET void : undefinded void(0);”>…</a> <a href=” javascript: void javascript : undefinded Wednesday, December 22, 2010 7 1. bookmarklet 2. IE6 onclick
  • 8. BOOKMARKLET javascript:(function(){ /* blah blah */ })(); Wednesday, December 22, 2010 8 bookmarklet undefinded
  • 9. BOOKMARKLET javascript: (function (F, i, r, e, b, u, g, L, I, T, E) { if (F.getElementById(b)) return; E = F[i + 'NS'] && F.documentElement.namespaceURI; E = E ? F[i + 'NS'](E, 'script') : F[i]('script'); E[r]('id', b); E[r]('src', I + g + T); E[r](b, u); (F[e]('head')[0] || F[e]('body')[0]).appendChild(E); E = new Image; E[r]('src', I + L); })(document, 'createElement', 'setAttribute', 'getElementsByTagName', 'FirebugLite', '4', 'firebug- lite.js', 'releases/lite/latest/skin/xp/sprite.png', 'https://getfirebug.com/', '#startOpened'); Wednesday, December 22, 2010 9 1. Bookmarklet 2. Firebug Lite (http://getfirebug.com/firebuglite) 3.
  • 10. BOOKMARKLET javascript: function fnStartDesign(sUrl) { var nScript = document.createElement('script'); nScript.setAttribute('language', 'JavaScript'); nScript.setAttribute('src', sUrl); document.body.appendChild(nScript); } fnStartDesign('http://www.sprymedia.co.uk/design/ design/media/js/design-loader.js'); Wednesday, December 22, 2010 10 1. Design Bookmarklet (http://www.sprymedia.co.uk/article/Design) 2.
  • 11. BOOKMARKLET javascript: void((function () { var element = document.createElement('script'); element.setAttribute('src', 'http://dict.cn/hc/init.php'); document.body.appendChild(element); })()) Wednesday, December 22, 2010 11 1. Dict.cn Bookmarklet (http://dict.cn/foot/help.htm) 2.
  • 12. BOOKMARKLET javascript: (function (q) { !! q ? q.toggle() : (function (d, j) { j = d.createElement('script'); j.src = '//ime.qq.com/fcgi-bin/getjs'; j.setAttribute('ime-cfg', 'lt=2'); d.getElementsByTagName('head')[0].appendChild(j) })(document) })(window.QQWebIME) Wednesday, December 22, 2010 12 1. QQ Bookmarklet (http://py.qq.com/web) 2.
  • 14. Bookmarklet • CGI 301/302 CGI etc. CDN • Wednesday, December 22, 2010 14 1. 2. CGI session 3.
  • 15. BOOKMARKLET 6 var = Math.min( href , 2,083 >100k >100k >100k >100k , 508 >100k >100k 34,464 65,530 ); 2,083 65,536 >100k 2,347 >100k Wednesday, December 22, 2010 15 1. bookmarklet 2. Bookmarklet 3. IE6 508 bytes 4. 20
  • 16. BOOKMARKLET href 2,083 >100k >100k >100k >100k 508 >100k >100k 34,464 65,530 2,083 65,536 >100k 2,347 >100k 255 4096 Wednesday, December 22, 2010 16 1. “ ” “ ” 2. TT4 255 bytes QQBrowser 4096 bytes
  • 17. BOOKMARKLET = 255 Wednesday, December 22, 2010 17 TT4 255 bytes
  • 18. BOOKMARKLET 3 javascript: (function2(q) { !! q ? q.toggle() : (function (d, j) { j = d.createElement('script'); 1 j.src = '//ime.qq.com/fcgi-bin/getjs'; 4 j.setAttribute('ime-cfg', 'lt=2'); d.getElementsByTagName('head')[0].appendChild(j) })(document) })(window.QQWebIME) 1. CGI 2. 3. 4. 5. …… Wednesday, December 22, 2010 18 QQ Bookmarklet 1. // https 2. 255 3. / 4. 5. ……
  • 20. • DOM • Wednesday, December 22, 2010 20 1. 2. DOM DOM 3. “ ”
  • 21. JAVASCRIPT • • • • • …… Wednesday, December 22, 2010 21 Javascript 1. $() QQ 2. QQ QQWebIME 3. 4. WebQQ QQ QQ WebQQ
  • 22. CSS/HTML A B C HTML iframe Flash/SilverLight/... UI CSS JS Wednesday, December 22, 2010 22 A. CSS B. QQ iframe Firefox C. Javascript
  • 23. QQ <style> A+ qqwebime { color: blue; } </style> HTML <script> isIE && doc.createElement(‘qqwebime’); </script> CSS <qqwebime>QQ </qqwebime> ref: http://ejohn.org/blog/html5-shiv/ Wednesday, December 22, 2010 23 1. QQ “ ” “ A” “ CSS ” * {} :first-child{} 2. jQuery Jesig (http://ejohn.org/blog/html5-shiv/) 3. ISD Damao
  • 25. DOM DOM iframe iframe iframe Wednesday, December 22, 2010 25 1. iframe 2. iframe 3. 5.
  • 26. PT.A DOM 1. 2. load 3. Wednesday, December 22, 2010 26 DOM
  • 27. PT.B DOM 1. DOM 2. DOM 3. Wednesday, December 22, 2010 27 DOM
  • 28. PT.C DOM • Mutation Events DOMNodeInserted • Mutation Events DOM Level 2 Core (ref: http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html) • 1~4 1~9 3~5 9-11 9 Wednesday, December 22, 2010 28 1. Mutation Events DOMNodeInsertedIntoDocument DOMSubtreeModified DOMNodeInserted 2. Mutation Events DOM Level 2 (http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html) 3. DOM Level2 LV3 IE9B IE 6/7/8
  • 29. PT.C DOM document.addEventListener( • Mutation Events // DOMNodeInserted 'DOMNodeInserted', function (evt) { // // var curTarget = evt.target; • Mutation Events DOM Level 2 Core // iframe if (1 !== curTar.nodeType || ‘iframe’ !== curTar.nodeName) return; (via http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html) // iframe DOM • }, 1~4 1~9 3~5 9/10 9 false ); Wednesday, December 22, 2010 29
  • 30. PT.D DOM • IE CSS Expression • Behavior Expression (ref: http://dean.edwards.name/weblog/2005/06/base64-sexy/) • 6/7 Wednesday, December 22, 2010 30 1. PNG IE6 (http://www.komodomedia.com/blog/2007/11/css-png-image-fix-for-ie/) IE CSS Expression IE bug 2. Expression “ ” Dean Edwards 05 (http://dean.edwards.name/weblog/2005/06/base64-sexy/)
  • 31. PT.D DOM <style> • IE iframe { CSS Expression behavior:expression(iframeInserted(this)); } </style> • <script> Behavior Expression function iframeInserted(node) { (via http://dean.edwards.name/weblog/2005/06/base64-sexy/) // node.style.behavior = 'none'; • // 6/7 iframe DOM } </script> Wednesday, December 22, 2010 31
  • 32. PT.E DOM • IE8 Accessor (getter/setter) innerHTML appendChild • IE8 Accessor (getter/setter) MSDN (ref: http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx) • 8std Wednesday, December 22, 2010 32 1. IE outerHTML DOM Accessor (getter/setter) MSDN IE8 innerHTML appendChild 2. MSDN (http://msdn.microsoft.com/en-us/library/dd229916(VS.85).aspx)
  • 33. PT.E DOM • // IE8 innerHTML Accessor (getter/setter) innerHTML var propDscrptr = Object.getOwnPropertyDescriptor appendChild (Element.prototype, ‘innerHTML’); // innerHTML Object.defineProperty(Element.prototype, ‘innerHTML’, { // setter • set: function (html) Accessor (getter/setter) IE8 { MSDN // innerHTML set propDscrptr.set.call(this, html); (via http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx) // iframe DOM • }); } 8std Wednesday, December 22, 2010 33 innerHTML hack outerHTML
  • 34. PT.E DOM • IE8 Accessor (getter/setter) // innerHTML appendChild appendChild var methodProto = Element.prototype[‘appendChild’]; // appendChild Element.prototype[‘appendChild’] = function () { // appendChild • IE8 res = methodProto.apply(this, arguments); var Accessor (getter/setter) MSDN // iframe DOM (via http://msdn.microsoft.com/en-us/library/dd229916%28VS.85%29.aspx) return result; • }; 8std Wednesday, December 22, 2010 34 appendChild hack insertBefore
  • 35. PT.F DOM • • iframe iframe flag flag iframe • Wednesday, December 22, 2010 35 1. A iOS Android fallback 2.
  • 36. · http://QuChao.com Chappell.Wat@Gmail.com Wednesday, December 22, 2010 36
  • 37. Dec 18th, 2010 Wednesday, December 22, 2010 37