OSDN Git Service

Version 0.6.41, fix for Opera8 & NN7.2+.
[pettanr/clientJs.git] / 0.6.x / js / dom / 13_XDomBoxModel.js
index ea827c4..0e77c47 100644 (file)
@@ -15,35 +15,36 @@ X.Dom.BoxModel = {
 \r
 X.Dom.listenOnce( X.Dom.Event.DOM_INIT, function(){\r
 \r
-       var elm = Node._systemNode._rawNode || Node._systemNode._ie4getRawNode();\r
-       elm.style.cssText = 'width:10px;padding:1px;border:2px solid #0;margin:4px;';\r
+       var node = Node._systemNode;\r
+       node.cssText( 'width:10px;padding:1px;border:2px solid #0;margin:4px;' );\r
        \r
-       X.Dom.BoxModel.defaultBoxModel = elm.offsetWidth === 10 ?\r
+       X.Dom.BoxModel.defaultBoxModel = node.width() === 10 ?\r
                X.Dom.BoxModel.BORDER_BOX :\r
                X.Dom.BoxModel.CONTENT_BOX;\r
        \r
        if( X.Dom.BoxModel.defaultBoxModel === X.Dom.BoxModel.CONTENT_BOX ){\r
-               elm.style.cssText += '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
-               \r
-               X.Dom.BoxModel.boxSizingEnabled = elm.offsetWidth === 10;\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
+                                                                                       .width() === 10;\r
        };\r
        // padding\r
        // border\r
        // margin\r
        // top\r
 \r
-       elm.style.cssText = 'width:90px;height:90px;overflow:auto;';\r
-       elm.innerHTML = '<div style="width:100px;height:100px;"></div>';\r
+       node.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 - elm.clientWidth;\r
-       X.Dom.BoxModel.hScrollbarSize = 90 - elm.clientHeight;\r
-\r
-       elm.style.cssText = 'position:absolute;top:0;left:0;margin:1px;border:2px solid #000;padding:4px;';\r
-       elm.children[ 0 ].style.cssText = 'position:absolute;top:8px;left:8px;margin:16px;border:32px solid #666;padding:64px;';\r
+       X.Dom.BoxModel.vScrollbarSize = 90 - node._rawNode.clientWidth;\r
+       X.Dom.BoxModel.hScrollbarSize = 90 - node._rawNode.clientHeight;\r
 \r
-       X.Dom.BoxModel.absoluteOffset = elm.children[ 0 ].offsetTop;\r
+       X.Dom.BoxModel.absoluteOffset =\r
+               node.cssText( 'position:absolute;top:0;left:0;margin:1px;border:2px solid #000;padding:4px;' )\r
+                       .firstChild().cssText( 'position:absolute;top:8px;left:8px;margin:16px;border:32px solid #666;padding:64px;' )\r
+                       .y();\r
 \r
-       elm.style.cssText = elm.innerHTML = '';\r
+       node.cssText( '' ).empty();\r
 });\r
 \r
 /* --------------------------------------\r
@@ -139,6 +140,49 @@ Node.prototype.scrollHeight = function(){
        };\r
 };\r
 \r
+Node.prototype.scrollLeft = function(){\r
+       if( !this.parent ){// todo : _state で tree に所属しているか?判定\r
+               console.log( 'xnode.scrollLeft() : no parent' );\r
+               return 0;\r
+       };\r
+       Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.scrollLeft() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( X.Dom.DOM_W3C ){\r
+               // this.css( X.Dom.Style.Unit.px, 'width' );\r
+               return this._rawNode.scrollLeft;\r
+       } else\r
+       if( X.Dom.DOM_IE4 ){\r
+               return ( this._rawNode || this._ie4getRawNode() ).scrollLeft;\r
+       } else {\r
+               \r
+       };\r
+};\r
+\r
+Node.prototype.scrollTop = function(){\r
+       if( !this.parent ){// todo : _state で tree に所属しているか?判定\r
+               console.log( 'xnode.scrollTop() : no parent' );\r
+               return 0;\r
+       };\r
+       Node.root._updateTimerID && Node.root._startUpdate();\r
+       if( !this._root ){\r
+               console.log( 'xnode.scrollTop() : not belong tree.' );\r
+               return 0;\r
+       };\r
+       if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
+       if( X.Dom.DOM_W3C ){\r
+               // this.css( X.Dom.Style.Unit.px, 'width' );\r
+               return this._rawNode.scrollTop;\r
+       } else\r
+       if( X.Dom.DOM_IE4 ){\r
+               return ( this._rawNode || this._ie4getRawNode() ).scrollTop;\r
+       } else {\r
+               \r
+       };\r
+};\r
 \r
 /* --------------------------------------\r
  *  x, y\r