OSDN Git Service

Version 0.6.51, add logger.html, fix for NF3.4.
authoritozyun <itozyun@user.sourceforge.jp>
Fri, 4 Jul 2014 21:19:09 +0000 (06:19 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Fri, 4 Jul 2014 21:19:09 +0000 (06:19 +0900)
16 files changed:
0.6.x/js/core/00_X.js
0.6.x/js/core/00_builtin.js
0.6.x/js/core/01_XUa.js
0.6.x/js/core/02_XType.js
0.6.x/js/core/03_XCallback.js
0.6.x/js/core/04_XClass.js
0.6.x/js/core/05_XTimer.js
0.6.x/js/core/06_XEventDispatcher.js
0.6.x/js/core/07_XNotification.js
0.6.x/js/dom/10_XDom.js
0.6.x/js/dom/11_XDomNode.js
0.6.x/js/dom/12_XDomEvent.js
0.6.x/js/dom/13_XDomBoxModel.js
0.6.x/js/dom/14_XDomAttr.js
0.6.x/js/dom/22_XDomBuilder.js
0.6.x/logger.html [new file with mode: 0644]

index d29d88c..3be38c6 100644 (file)
@@ -1,11 +1,16 @@
-if( !window['console'] ) console = { log : function(a){\r
+if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){\r
+       var win, elm;\r
        //alert(a)\r
+       if( window.parent ){\r
+               elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );\r
+               elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );\r
+       };\r
 } };\r
 \r
 var undefined,\r
-       X = X || new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
+       X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
 \r
-X.VERSION = '0.6.39';\r
+X.VERSION = '0.6.50';\r
                \r
 X.bootTime = + new Date;\r
                \r
index 3f8f676..e49582f 100644 (file)
@@ -226,37 +226,30 @@ if (window.ActiveXObject ? !Number.prototype.toFixed : (!navigator.taintEnabled
 /*\r
 Object.prototype.hasOwnProperty || (Object.prototype.hasOwnProperty = function( p ){\r
                var proto = this.constructor && this.constructor.prototype,\r
-                       __p__ = proto && ( '__proto__' in proto ) && proto.__proto__,\r
+                       __p__ = proto && proto.__proto__,\r
                        v     = this[ p ],\r
-                       nan   = v !== v, // isNaN\r
-                       r = false, save;\r
+                       r = false;\r
                \r
-               if( __p__ ) proto.__proto__ = v === null ? undefined : null;\r
+               if( __p__ ) proto.__proto__ = null;\r
                \r
-               if( nan ){\r
-                       if( proto[ p ] !== proto[ p ] ){ // proto is NaN\r
-                               proto[ p ] = 0; // different value\r
-                               r = this[ p ] !== this[ p ]; // isNaN\r
-                               proto[ p ] = NaN; // proto で定義されていた.\r
-                       } else {\r
-                               r = true;\r
-                       };\r
-               } else\r
                if( p in this ){\r
+                       if( v !== v ){\r
+                               if( proto && ( p in proto ) && proto[ p ] !== proto[ p ] ){ // proto[ p ] is NaN\r
+                                       proto[ p ] = 0; // different value\r
+                                       r = this[ p ] !== this[ p ]; // isNaN\r
+                                       proto[ p ] = v; // proto で定義されていた.\r
+                               } else {\r
+                                       r = true;\r
+                               };\r
+                       } else\r
                        if( !proto || !( p in proto ) || ( proto[ p ] !== v ) ){\r
                                r = true;\r
                        } else {\r
                                // this と proto に同名で同値が書かれている可能性あり\r
-                               save = proto[ p ];\r
                                proto[ p ] = v + ' '; // different value\r
                                r = v === this[ p ];\r
                                \r
-                               delete proto[ p ];\r
-                       \r
-                               if( proto[ p ] !== v ){\r
-                                       // proto で定義されていた.\r
-                                       proto[ p ] = save;                              \r
-                               };\r
+                               proto[ p ] = v;\r
                        };\r
                };\r
                \r
index c3be09d..0260437 100644 (file)
@@ -8,6 +8,11 @@ X.UA = (function( n, undefined ){
                dav  = n.appVersion,\r
                tv   = parseFloat(dav),\r
                i, j, v;\r
+               \r
+       console.log( ' userAgent  : ' + dua );\r
+       console.log( ' appVersion : ' + dav );\r
+       console.log( ' platform   : ' + n.platform );\r
+               \r
        if( window.opera ){\r
                i = dua.indexOf( 'Opera' ); // Opera/\r
                j = dua.indexOf( 'Version/' );\r
@@ -23,6 +28,7 @@ X.UA = (function( n, undefined ){
                acme.OperaMobile = 0 < dua.indexOf("Opera Mobi");\r
                acme.OperaTablet = 0 < dua.indexOf("Opera Tablet");\r
                // TODO NDS\r
+               console.log( '>> Opera : ' + acme.Opera );\r
                return acme;\r
        };\r
        \r
@@ -33,13 +39,22 @@ X.UA = (function( n, undefined ){
                acme.IE4      = acme.IE && acme.IE < 5;\r
                acme.IE5678   = 5 <= acme.IE && acme.IE < 9;\r
                acme.MacIE    = dua.indexOf( 'Mac_PowerPC' ) !== -1 || dua.indexOf( 'Mac_PPC' ) !== -1 || dua.indexOf( 'Mac_68K' ) !== -1;\r
-               acme.IEMobile = dua.toLowerCase().indexOf( 'iemobile' ) !== -1;\r
+               acme.IEMobile = dua.toLowerCase().indexOf( 'iemobile' ) !== -1 || n.platform === 'WinCE';\r
                acme.WinPhone = dua.toLowerCase().indexOf( 'windows phone' ) !== -1;\r
+               console.log( '>> IE : ' + acme.IE + ' ActiveX : ' + acme.ActiveX );\r
                return acme;\r
        };\r
        \r
+       // http://qa.support.sony.jp/solution/S0812181056444/common/nfb34_dom_200jp/dom_dom0_JP.html\r
        if( ( i = dua.indexOf( 'NetFront\/' ) !== -1 ) ){\r
                acme.NetFront = parseFloat( dua.substr( i + 9 ) ) || 0;\r
+               console.log( '>> NetFront : ' + acme.NetFront );\r
+               return acme;\r
+       };\r
+       \r
+       if( n.platform === 'Linux' && tv === 2 && dua.indexOf( 'Sony\/COM2\/' ) !== -1 ){\r
+               acme.NetFront = 3.4;\r
+               console.log( '>> NetFront : ' + acme.NetFront );\r
                return acme;\r
        };\r
        \r
@@ -48,6 +63,7 @@ X.UA = (function( n, undefined ){
     // Mozilla/4.0 (PS3 (PlayStation 3); 1.00)\r
        if( ( i = dua.toUpperCase().indexOf( 'PLAYSTATION 3' ) !== -1 ) ){\r
                acme.PS3 = parseFloat( dua.substr( i + 15 ) ) || 0;\r
+               console.log( '>> PS3 : ' + acme.PS3 );\r
                return acme;\r
        };\r
        \r
@@ -56,6 +72,7 @@ X.UA = (function( n, undefined ){
        // Mozilla/5.0 (Macintosh; U; PPC Mac OS; en) iCab 3\r
        if( ( i = dua.indexOf( 'iCab' ) !== -1 ) ){\r
                acme.iCab = parseFloat( dua.substr( i + 5 ) ) || 0;\r
+               console.log( '>> iCab : ' + acme.iCab );\r
                return acme;\r
        };\r
        \r
@@ -89,10 +106,15 @@ X.UA = (function( n, undefined ){
                        acme.NN = v;\r
                        return acme;\r
                };\r
+               \r
+               console.log( '>> Gecko : ' + acme.Gecko );\r
        };\r
        \r
        // TODO Blink\r
+       \r
        acme.Khtml  = ( dav.indexOf("Konqueror") >= 0 ) ? tv : undefined;\r
+       \r
+       \r
        acme.WebKit = i = parseFloat(dua.split("WebKit\/")[1]) || undefined;\r
        acme.Chrome = parseFloat(dua.split("Chrome\/")[1]) || undefined;\r
 \r
@@ -152,6 +174,7 @@ X.UA = (function( n, undefined ){
                // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1\r
                dua.indexOf( 'EBRD' ) !== -1;   \r
        \r
+       console.log( '>> Webkit : ' + acme.WebKit + ' Safari : ' + acme.Safari );\r
        return acme;\r
 })( navigator );\r
 \r
@@ -159,14 +182,14 @@ X.UA = (function( n, undefined ){
 \r
 // Safari 3.1 未満は開発コンソールがない!\r
 // http://shimax.cocolog-nifty.com/search/2006/09/safarijavascrip_c54d.html\r
-\r
+/*\r
 if( X.UA.Safari && X.UA.WebKit < 525.13 ){     \r
        window.onerror = function( x, y, z ){\r
                var n = String.fromCharCode( 10 );\r
            alert('window.onerrorによるエラーの捕捉:' + n + x + n + y + 'の' + z + '行目付近です。');\r
            return true;\r
        };\r
-};\r
+};*/\r
 \r
 if( X.UA.IE && X.UA.IE < 7 ){ // error @ NN7.2\r
        // bonus: hotfix for IE6 SP1 (bug KB823727)\r
index ecd16e6..ebfcea0 100644 (file)
@@ -46,3 +46,5 @@ X.Type = {
                return typeof v === 'undefined';\r
        }\r
 };\r
+\r
+console.log( 'X.Core.Type' );\r
index 484a263..772d234 100644 (file)
@@ -189,3 +189,6 @@ X.Callback = {
                };\r
        }\r
 };\r
+\r
+console.log( 'X.Core.Callback' );\r
+\r
index f8ec3e0..5d219b3 100644 (file)
@@ -361,4 +361,6 @@ X.Class = ( function(){
                        \r
                }\r
        };\r
-})();
\ No newline at end of file
+})();\r
+\r
+console.log( 'X.Core.Class' );\r
index 19e9ee0..66f8eef 100644 (file)
@@ -206,3 +206,5 @@ if( X.UA.IE && ( X.UA.IE < 5 || X.UA.MacIE ) ){
        X.Timer[ '_ie_loop' ] = X.Timer._loop;\r
        X.Timer._loop = 'X.Timer._ie_loop()';\r
 };\r
+\r
+console.log( 'X.Core.Timer' );\r
index 5044400..2391b79 100644 (file)
@@ -232,3 +232,5 @@ X.EventDispatcher =
        );\r
 \r
 X.EventDispatcher._once = false;\r
+\r
+console.log( 'X.Core.EventDispatcher' );\r
index 9c148e6..3653850 100644 (file)
@@ -49,3 +49,4 @@ info  サーバ情報
 debug  デバック用の情報\r
 */\r
 \r
+console.log( 'X.Core.Notification' );\r
index 19a6720..796d07b 100644 (file)
@@ -3,7 +3,7 @@ X.Dom = X.Class._override(
        new X.EventDispatcher(),\r
        {\r
                readyState   : -1,\r
-               active       : !!document.activeElement,\r
+               active       : !!window.parent || !!document.activeElement, // frameに読み込まれた場合のieのerror回避\r
                _root        : null,\r
 \r
                _lock        : false,\r
@@ -62,6 +62,9 @@ X.Dom = X.Class._override(
                _init : function(){\r
                        var s, size, h, r;\r
                        if( X.Dom.Event.DOM_PRE_INIT <= X.Dom.readyState ) return X.Callback.UN_LISTEN;\r
+                       \r
+                       console.log( 'X.Dom._init()' );\r
+                       \r
                        delete X.Dom._init;\r
                        X.Dom.readyState = X.Dom.Event.DOM_PRE_INIT;\r
                        \r
@@ -265,7 +268,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
  * http://d.hatena.ne.jp/t-uchima/20051003/p1\r
  * MacIEにはattachEventが一応あるけどwindow.attachEventとdocument.attachEventしかなく他の要素にはattachEventはない。\r
  */\r
-if( X.UA.MacIE ){\r
+if( X.UA.MacIE || X.UA.NetFront ){\r
        X.Dom.DOM_W3C    = true;\r
        X.Dom.EVENT_DOM0 = true;\r
 } else\r
@@ -323,9 +326,12 @@ X.Dom.skipCleanupTagNames = {
        PLAINTEXT : true,\r
        LISTING   : true\r
 };\r
+\r
+X.Dom.CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
                \r
 X.Dom.cleanupWhiteSpace = function( text ){\r
-       var _ = ' ', __ = '  ';\r
+       var _ = ' ', __ = '  ', CRLF = X.Dom.CRLF;\r
+       //text.indexOf( CRLF )   !== -1 && ( text = text.split( CRLF ).join( _ ) );\r
        text.indexOf( '\n\r' ) !== -1 && ( text = text.split( '\n\r' ).join( _ ) );\r
        text.indexOf( '\t' )   !== -1 && ( text = text.split( '\t' ).join( _ ) );\r
        text.indexOf( '\r' )   !== -1 && ( text = text.split( '\r' ).join( _ ) );\r
@@ -400,3 +406,4 @@ X.Dom.getAbsolutePath = function( path ){
        return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
 };\r
 \r
+console.log( 'X.Dom dom:w3c=' + X.Dom.DOM_W3C + ' ev:w3c=' + X.Dom.EVENT_W3C );\r
index d04c661..bc8881c 100644 (file)
@@ -844,6 +844,8 @@ Node.prototype._startUpdate = function(){
        tmp = this._rawNode.style.visibility;\r
        //this._rawNode.style.visibility = 'hidden';\r
 \r
+       //console.log( '_actualRemove().' );\r
+\r
        if( i = removal.length ){\r
                for( ; i; ){\r
                        xnode = removal[ --i ];\r
@@ -853,8 +855,12 @@ Node.prototype._startUpdate = function(){
                removal.length = 0;\r
        };\r
 \r
+       console.log( 'start _startUpdate().' );\r
+\r
        Node._html._dirty ? Node._html._commitUpdate() : this._commitUpdate();\r
        \r
+       //console.log( 'end of _startUpdate().' );\r
+       \r
        X.Dom._listeners && X.Dom._listeners[ X.Dom.Event.AFTER_UPDATE ] && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.AFTER_UPDATE } );\r
        //this._rawNode.style.visibility = tmp;\r
 };\r
@@ -1005,9 +1011,10 @@ Node.prototype._updateRawNode =
                                                        continue;\r
                                                };\r
                                        };\r
+                                       k = \r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
-                                               ( elm[ rename[ k ] || k ] = v );                                                \r
+                                               ( elm[ rename[ k ] || k ] = X.Dom.Attr.noValue[ k ] ? k : v );                          \r
 \r
                                };\r
                                delete this._newAttrs;\r
@@ -1058,7 +1065,7 @@ Node.prototype._updateRawNode =
                                for( k in attrs ){\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
-                                               elm.setAttribute( rename[ k ] || k, v );\r
+                                               elm.setAttribute( rename[ k ] || k, v ); // TODO X.Dom.Attr.noValue\r
                                };\r
                                delete this._newAttrs;\r
                        };\r
@@ -1078,7 +1085,7 @@ Node.prototype._updateRawNode =
  * ie7 以下では iframe の frameborder や、input name は、createElement 後に setAttribute しても無視される\r
  * \r
  * fragument がある場合 children も足して\r
- * Mozilla: 1.0+, IE: 6.0+, Netscape: 2.0+, Safari: 1.0+, Opera: 7.0+\r
+ * Mozilla: 1.0+, IE: 5.5+, Netscape: 2.0+, Safari: 1.0+, Opera: 7.0+\r
  * ie6 大丈夫?fragment の場合リークしないか?チェックが必要\r
  * http://msdn.microsoft.com/ja-jp/library/bb250448%28v=vs.85%29.aspx\r
  * \r
@@ -1279,3 +1286,5 @@ Node.prototype._actualRemove =
                }) :\r
                (function(){});\r
 \r
+console.log( 'X.Dom.Node' );\r
+\r
index 8ffb26d..1ec779c 100644 (file)
@@ -217,7 +217,7 @@ X.Dom.Node.prototype._addEvent =
                                raw.addEventListener( type, this._handleEvent, false );\r
                        };\r
                }) :\r
-       X.Dom.EVENT_W3C && X.UA.Opera7 ?\r
+       X.Dom.EVENT_W3C && ( X.UA.Opera7 || X.UA.NetFront ) ?\r
                (function( type ){\r
                        var raw = this._rawNode;\r
                        if( !raw ) return;\r
@@ -272,7 +272,7 @@ X.Dom.Node.prototype._removeEvent =
                                delete this._handleEvent;\r
                        };\r
                }) :\r
-       X.Dom.EVENT_W3C && X.UA.Opera7 ?\r
+       X.Dom.EVENT_W3C && ( X.UA.Opera7 || X.UA.NetFront ) ?\r
                (function( type ){\r
                        var raw = this._rawNode;\r
                        if( !raw ) return;\r
@@ -379,16 +379,16 @@ X.Dom.Node.prototype._restoreEvent = function(){
 // http://shimax.cocolog-nifty.com/search/2006/09/safarijavascrip_c54d.html\r
 \r
 /* for ie9+/Mozilla/Opera9 */\r
-if( X.Dom.DOM_W3C ){\r
+if( X.Dom.EVENT_W3C ){\r
        Node._document.listenOnce( 'DOMContentLoaded', X.Dom._init );\r
 } else\r
-if( 5 <= X.UA.IE && X.inHead ){\r
+if( 6 <= X.UA.IE && X.inHead ){\r
        // if this script in Head\r
        document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );\r
        X.Dom._script = document.getElementById( "__ie_onload" );\r
        X.Dom._script.onreadystatechange = function(){\r
                var s = X.Dom._script;\r
-               if( s && this.readyState === 'complete' ){\r
+               if( s && s.readyState === 'complete' ){\r
                        s.onreadystatechange = X.emptyFunction;\r
                        s.onreadystatechange = null;\r
                        s.parentNode.removeChild( s );\r
@@ -396,7 +396,7 @@ if( 5 <= X.UA.IE && X.inHead ){
                        X.Dom._init && X.Dom._init();\r
                };\r
        };\r
-} else\r
+};\r
 // Re: onLoad doesn't work with Safari?\r
 // http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html\r
 if( X.UA.WebKit || ( X.UA.Safari && X.UA.Safari < 3 ) ){ // sniff\r
@@ -424,5 +424,5 @@ if( X.UA.Safari && X.UA.Safari < 3 ){
                };\r
 };\r
 \r
-X.Dom.listenOnce( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + 'x' + e.h ); } );\r
+X.Dom.listen( X.Dom.Event.VIEW_RESIZED, function(e){ console.log( 'X.Dom VIEW_RESIZED ' + e.w + 'x' + e.h ); } );\r
 \r
index 7d70bc3..542c324 100644 (file)
@@ -13,9 +13,33 @@ X.Dom.BoxModel = {
        hScrollbarSize   : 0\r
 };\r
 \r
+\r
+\r
 X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
 \r
-       var node = Node._systemNode;\r
+       var node = Node._systemNode,\r
+       \r
+               // http://jsdo.it/imaya/kTYg\r
+               body = document.body,\r
+               defaultOverflow = document.body.style.overflow,\r
+               width, height;\r
+\r
+       body.style.overflow = 'hidden';\r
+       w = body.clientWidth;\r
+       h = body.clientHeight;\r
+\r
+       body.style.overflow = 'scroll';\r
+       w -= body.clientWidth;\r
+       h -= body.clientHeight;\r
+\r
+       if( !w ) w = body.offsetWidth  - body.clientWidth;\r
+       if( !h ) h = body.offsetHeight - body.clientHeight;\r
+       body.style.overflow = defaultOverflow; \r
+\r
+       X.Dom.BoxModel.vScrollbarSize = w;\r
+       X.Dom.BoxModel.hScrollbarSize = h;\r
+       //\r
+       \r
        node.cssText( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' );\r
        \r
        X.Dom.BoxModel.defaultBoxModel = node.width() === 10 ?\r
@@ -24,20 +48,21 @@ X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){
        \r
        if( X.Dom.BoxModel.defaultBoxModel === X.Dom.BoxModel.CONTENT_BOX ){\r
                X.Dom.BoxModel.boxSizingEnabled = node.cssText( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' +\r
-                       'box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing: border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;' )\r
+                       'box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;-o-box-sizing:border-box;-ms-box-sizing:border-box;' )\r
                                                                                        .width() === 10;\r
        };\r
        // padding\r
        // border\r
        // margin\r
        // top\r
-\r
-       node.cssText( 'width:90px;height:90px;overflow:auto;' )\r
-               .html( '<div style="width:100px;height:100px;"></div>' )\r
-               ._startUpdate();\r
        \r
+       node\r
+               //.cssText( 'width:90px;height:90px;overflow:auto;' )\r
+               .html( '<div style="width:100px;height:100px;"></div>' );\r
+               //._startUpdate();\r
+       /*\r
        X.Dom.BoxModel.vScrollbarSize = 90 - node._rawNode.clientWidth;\r
-       X.Dom.BoxModel.hScrollbarSize = 90 - node._rawNode.clientHeight;\r
+       X.Dom.BoxModel.hScrollbarSize = 90 - node._rawNode.clientHeight;*/\r
 \r
        X.Dom.BoxModel.absoluteOffset =\r
                node.cssText( 'position:absolute;top:0;left:0;margin:1px;border:2px solid #000;padding:4px;' )\r
index af1b6ac..77d8600 100644 (file)
@@ -45,7 +45,8 @@ X.Dom.Attr = {
        HAS_VALUE : {\r
                INPUT    : true,\r
                TEXTAREA : true,\r
-               SELECT   : true\r
+               SELECT   : true,\r
+               BUTTON   : true\r
        },\r
        \r
        renameForTag : {},\r
@@ -128,6 +129,9 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
                        case 'cssText' :\r
                                return this.cssText();\r
                        case 'value' :\r
+                       case 'checked' :\r
+                       case 'selected' :\r
+                       case 'disabled' :                       \r
                        case 'selectedIndex' :\r
                                if( X.Dom.Attr.HAS_VALUE[ this._tag ] ){\r
                                        if( this._newAttrs && X.inObject( nameOrObj, this._newAttrs ) ) return this._newAttrs[ nameOrObj ];\r
index 84e510b..9e1d15f 100644 (file)
@@ -168,7 +168,11 @@ X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,
                document.write( html = copy.innerHTML );\r
        } else {\r
                // body の属性値の取得\r
-               html = body.innerHTML;\r
+               if( X.UA.IE5678 ){\r
+                       html = body.innerHTML.split( X.Dom.CRLF ).join( '' ); // 不要な改行が入る\r
+               } else {\r
+                       html = body.innerHTML;\r
+               };\r
                \r
                // Nokia s60 Safari\r
                if( html === 'fastinnerhtml!' ){\r
@@ -386,7 +390,7 @@ X.Dom._bindElementToXnode =
                                \r
                                if( elm.nodeType !== 3 ){\r
                                        if( !( text = xnode._text ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
-                                               console.log( '[' +parent._tag + '>' + xnode._uid + '] destroy ... ' );\r
+                                               console.log( '[' +parent._tag + '> UID:' + xnode._uid + ' len:' + xnode._text.length + ' code : ' + xnode._text.charCodeAt( 0 ) + ',' + xnode._text.charCodeAt( 1 ) + '] destroyed.' );\r
                                                xnode.destroy();\r
                                                break;\r
                                        };\r
@@ -399,6 +403,7 @@ X.Dom._bindElementToXnode =
                                \r
                                ++current.j;\r
                                xnode._rawNode = elm;\r
+                               xnode._text    = elm.data; // 正確\r
                                xnode._root    = parent._root;\r
                                if( !skipCleanup ){\r
                                        if( !( text = xnode._text ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
@@ -524,3 +529,6 @@ X.Dom._bindElementToXnode =
                        // textNode がある\r
                        ( current.flag & 6 ) && ( parent._dirty |= X.Dom.Dirty.IE4_TEXTNODE_FIX );\r
                });\r
+\r
+console.log( 'X.Dom.Builder' );\r
+console.log( 'bootTime : ' + ( X.getTime() - X.bootTime ) );
\ No newline at end of file
diff --git a/0.6.x/logger.html b/0.6.x/logger.html
new file mode 100644 (file)
index 0000000..21774a0
--- /dev/null
@@ -0,0 +1,67 @@
+<!DOCTYPE html>\r
+<html lang="ja">\r
+<head>\r
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">\r
+               \r
+       <title>Logger</title>\r
+       \r
+       <meta name="HandheldFriendly" content="true">\r
+       <meta name="mobileoptimized" content="0">\r
+       \r
+       <!-- for ie & chrome frame -->\r
+       <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">\r
+       <meta http-equiv="imagetoolbar" content="no">\r
+       \r
+       <!-- for smartphone -->\r
+       <meta name="format-detection" content="telephone=no">\r
+       <meta name="apple-mobile-web-app-capable">\r
+       \r
+       <!-- maximum-scale=1 初代iPod touch で必要, dynamic-viewport は operaで可能  -->\r
+       <meta name="viewport" id="dynamic-viewport" content="width=device-width,target-densitydpi=device-dpi,initial-scale=1,user-scalable=0,maximum-scale=1">\r
+\r
+       <style>\r
+               html, body {\r
+                       padding  : 0;\r
+                       margin   : 0;\r
+                       border   : 0;\r
+                       width    : 100%;\r
+                       height   : 100%;\r
+                       overflow : hidden;\r
+               }\r
+               iframe {\r
+                       display     : block;\r
+                       padding     : 0;\r
+                       border      : 0;\r
+                       height      : 100%;\r
+                       margin-left : 240px;\r
+               }\r
+               #log {\r
+                       position   : absolute;\r
+                       top        : 0;\r
+                       left       : 0;\r
+                       width      : 240px;\r
+                       height     : 100%;\r
+                       font-size  : 12px;\r
+                       z-index    : 999;\r
+                       color      : #fff;\r
+                       background : #000;\r
+               }\r
+       </style>\r
+       \r
+       <script>\r
+               function __onload(){\r
+                       if( document.all ){\r
+                               document.body.children[1].style.width = ( document.documentElement || document.body ).offsetWidth - 240 + 'px';\r
+                       } else {\r
+                               document.body.lastChild.style.width  = ( window.innerWidth - 240 ) + 'px';\r
+                               document.body.lastChild.style.height = window.innerHeight + 'px'; // NetFront3.4\r
+                       };\r
+               };\r
+       </script>\r
+       <noscript>\r
+       <meta name="viewport" content="width=device-width,initial-scale=1">\r
+       </noscript>\r
+</head>\r
+<body onload="__onload()" onresize="__onload()" scroll="no"><div id="log">-- console.log() --</div><iframe src="index.html" height="100%" scrolling="yes" frameborder="0"></body>\r
+</html>\r
+<xmp class="cleanup-target" style="display:none"><plaintext style="display:none"><!-- plainetext は nds 用 -->
\ No newline at end of file