var undefined,\r
X = X || new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' );\r
\r
-X.VERSION = '0.6.18';\r
+X.VERSION = '0.6.39';\r
\r
X.bootTime = + new Date;\r
\r
};\r
return true;\r
};\r
- \r
-// bonus: hotfix for IE6 SP1 (bug KB823727)\r
-document.execCommand && document.execCommand( 'BackgroundImageCache', false, true );\r
-//document.execCommand && document.execCommand( 'LiveResize', false, false );\r
-//document.execCommand && document.execCommand( 'SizeToControl', false, false );\r
dua = n.userAgent,\r
dav = n.appVersion,\r
tv = parseFloat(dav),\r
- i;\r
- acme.Opera = ( 0 < dua.indexOf("Opera") ) ? tv : undefined;\r
- acme.OperaMobile = ( 0 < dua.indexOf("Opera Mobi") ) ? tv : undefined;\r
+ i, j, v;\r
+ if( window.opera ){\r
+ i = dua.indexOf( 'Opera' ); // Opera/\r
+ j = dua.indexOf( 'Version/' );\r
+ acme.Opera = Math.max(\r
+ i !== -1 ? parseFloat( dua.substr( i + 6 ) ) : 0,\r
+ j !== -1 ? parseFloat( dua.substr( j + 8 ) ) : 0,\r
+ tv );\r
+ acme.OperaMobile = 0 < dua.indexOf("Opera Mobi");\r
+ acme.OperaTablet = 0 < dua.indexOf("Opera Tablet");\r
+ return acme;\r
+ };\r
\r
- acme.IE = undefined;\r
- if( document.all && !acme.Opera ){\r
- acme.IE = parseFloat(dav.split("MSIE ")[1]) || undefined;\r
+ // Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko\r
+ if( document.all ){\r
+ acme.ActiveX = !!window[ 'ActiveXObject' ];\r
+ acme.IE = parseFloat(dav.split("MSIE ")[1]) || parseFloat(dua.split("rv:")[1]) || 0;\r
return acme;\r
};\r
\r
// 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
navigator.userAgent.indexOf( 'EBRD' ) !== -1;\r
\r
-if( X.UA.IE && X.UA.IE < 10 ) X.UA.ActiveX = !!window[ 'ActiveXObject' ];\r
-\r
X.inObject = X.UA.IE && X.UA.IE < 5 ?\r
(function( name, obj ){\r
var p;\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
+ document.execCommand && document.execCommand( 'BackgroundImageCache', false, true );\r
+};\r
ret = X.Callback.NONE,\r
type = e.type,\r
unlistens, i, l, f, r, sysOnly;\r
-\r
+ \r
+ // 数値, 文字が渡された場合\r
+ if( !type ) e = { type : type = e };\r
+ e.target = e.target || this;\r
+ \r
if( !list || !( list = list[ type ] ) ) return ret;\r
\r
++this._dispatching;\r
// style\r
if( this._dirty & X.Dom.Dirty.CSS ){\r
if( this._cssText || ( this._cssText = X.Dom.Style.objToCssText( this._css ) ) ){\r
- elm.style.cssText = this._cssText;\r
- //elm.setAttribute( 'style', this._cssText );\r
+ X.UA.Opera && X.UA.Opera < 9 ?\r
+ elm.setAttribute( 'style', this._cssText ) : // opera8用\r
+ ( elm.style.cssText = this._cssText );\r
} else {\r
elm.style.cssText = ''; // IE5.5以下 Safari3.2 で必要\r
elm.removeAttribute( 'style' );\r
* \r
*/\r
\r
-if( window.addEventListener ){\r
+if( X.Dom.EVENT_W3C ){\r
X.Dom.Event = function( e, xnode ){\r
//this._event = e;\r
this.type = X.Dom.Event.RenameTo[ e.type ] || e.type;\r
\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
};\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
COMBI : 2 < 13
},
- SPECIAL_VALUES : {
- AUTO : Number.POSITIVE_INFINITY,
- FULL : X.Dom // something unigue value; 100%
- },
-
- PropNo : {},
-
UNIT : {
'px' : 0,
'em' : 1,
output[ size ] = xnode.css( 'fontSize', size ).height();// / base;
};
- // 以下解決、scroll 中に timer が無視される iOS の問題が原因(dom追加で起こったスクロール?)
- // ipod touch 1st で必要なんですけど、、、
- //xnode._rawNode.style.cssText = '';
- xnode.cssText( '' ).empty(); //._startUpdate();
+ xnode.cssText( '' ).empty();
} );