\r
var undefined,\r
X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),\r
- X_TEMP = {};\r
+ X_TEMP = { onSystemReady : [] };\r
\r
X.VERSION = '0.6.89';\r
\r
return s.tagName.toLowerCase() === 'head';// opera7.23 s.tagName is 'HTML'\r
})( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );\r
\r
-X.parse = function( v ){\r
- var _v, n;\r
- if( Type.isString( v ) === true ){\r
- switch( v ){\r
- case '' : return v;\r
- //case '{}' : return {};\r
- //case '[]' : return [];\r
- case 'NaN' : return NaN;\r
- case 'null' : return null;\r
- case 'true' : return true;\r
- case 'false' : return false;\r
- case 'Infinity' : return 1/0;//Number.POSITIVE_INFINITY;\r
- case '-Infinity' : return -1/0;//Number.NEGATIVE_INFINITY;\r
- case 'void(0)' :\r
- case 'void 0' :\r
- case 'undefined' : return;\r
- };\r
- _v = v.split( ' ' ).join( '' );\r
- n = _v - 0;\r
- if( '' + n === _v || '' + n === '0' + _v ) return n;\r
- };\r
- return v;\r
-};\r
- \r
-X.cloneObject = function( src ){\r
- var ret, k;\r
- if( typeof src !== 'object' ) return src;\r
- ret = {};\r
- for( k in src ){\r
- ret[ k ] = src[ k ];\r
- };\r
- return ret;\r
-};\r
-\r
-X.deepCopy = function( src ){\r
- function clone( src, objSrc, objCopy, n ) {\r
- var ret, i, key;\r
- if( !src ){ // 0, "", null, undefined, NaN, false\r
- return src;\r
- } else\r
- if( X.Type.isArray( src ) ){\r
- i = objSrc.indexOf( src );\r
- if( i !== -1 ) return objCopy[ i ];\r
- objSrc[ ++n ] = src;\r
- objCopy[ n ] = ret = [];\r
- } else\r
- if( X.Type.isObject( src ) ){\r
- i = objSrc.indexOf( src );\r
- if( i !== -1 ) return objCopy[ i ];\r
- objSrc[ ++n ] = src;\r
- objCopy[ n ] = ret = {};\r
- } else {\r
- // string, number, true\r
- return src;\r
- };\r
- for( key in src ){\r
- ret[ key ] = clone( src[ key ], objSrc, objCopy, n );\r
- };\r
- return ret;\r
- }; \r
- return clone( src, [], [], -1 );\r
-};\r
-\r
-\r
-\r
-\r
-X.copyArray = function( ary ){\r
- var ret = [], i = ary.length;\r
- if( !i ) return ret;\r
- for( ; i; ){\r
- ret[ --i ] = ary[ i ];\r
- };\r
- return ret;\r
-};\r
- \r
-X.isEmptyObject = function( v ){\r
- var p;\r
-// if( v.length ) return false;\r
- for( p in v ){\r
- if( v.hasOwnProperty( p ) ) return false;\r
- };\r
- return true;\r
-};\r
- \r
-X.matchTest = function( array1, array2 ){\r
- var i = array2.length;\r
- for( ; i; ){\r
- if( array1.indexOf( array2[ --i ] ) === -1 ) return false;\r
- };\r
- return true;\r
-};\r
\r
-/*\r
- * UA\r
- */\r
-X.UA = (function( n, undefined ){\r
+// ------------------------------------------------------------------------- //\r
+// ------------ local variables -------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+var X_UA = (function( n, undefined ){\r
var acme = {},\r
dua = n.userAgent,\r
dav = n.appVersion,\r
tv = parseFloat(dav),\r
- i, j, v;\r
+ tridentToVer, i, j, v;\r
\r
console.log( ' userAgent : ' + dua );\r
console.log( '-' );\r
// Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko\r
if( document.all || dav.indexOf( 'Trident/' ) !== -1 ){\r
acme.ActiveX = !!window[ 'ActiveXObject' ];\r
- acme.IE = document.documentMode || parseFloat(dua.split('MSIE ')[1]) || parseFloat(dua.split('rv:')[1]) || parseFloat(dav.split('MSIE ')[1]) || 0;\r
+ acme._IE = parseFloat(dua.split('MSIE ')[1]) || parseFloat(dua.split('rv:')[1]) || parseFloat(dav.split('MSIE ')[1]) || 0;\r
+ // IE11 の互換モードの dav にも Trident/7.0 が書かれているため互換モードか?判定ができる\r
+ // 互換モードでは Silverlight でエラーが出る?\r
+ acme.Trident = parseFloat(dav.split('Trident/')[1]) || 0;\r
+ acme.IE = document.documentMode || acme._IE;\r
+ tridentToVer = acme.Trident ? ( acme.Trident + 4 | 0 ) : acme._IE;\r
+ acme.IECompat = /* acme.IE !== acme._IE || */ tridentToVer !== acme._IE && tridentToVer;\r
acme.IE4 = acme.IE && acme.IE < 5;\r
acme.IE5678 = 5 <= acme.IE && acme.IE < 9;\r
acme.IE5 = 5 <= acme.IE && acme.IE < 5.5;\r
acme.IE55 = 5.5 <= acme.IE && acme.IE < 6;\r
+ acme.IE5x = acme.IE5 || acme.IE55;\r
acme.IE6 = 6 <= acme.IE && acme.IE < 7;\r
acme.IE7 = 7 <= acme.IE && acme.IE < 8;\r
acme.IE8 = 8 <= acme.IE && acme.IE < 9;\r
dua.indexOf( 'EBRD' ) !== -1; \r
\r
return acme;\r
-})( navigator );\r
+})( navigator ),\r
+\r
+X_UA_DOM = {},\r
+X_UA_EVENT = {},\r
+X_UA_HID = {};\r
+X_UA.IECompat && alert( X_UA.IE + ' ' + X_UA._IE + ' Tri:' + X_UA.Trident );\r
\r
-//alert(X.UA.Safari + ' ' + X.UA.WebKit + '\n\n' + navigator.userAgent + '\n\n' + navigator.appVersion + '\n\n' + navigator.platform );\r
+/*\r
+ * http://d.hatena.ne.jp/t-uchima/20051003/p1\r
+ * MacIEにはattachEventが一応あるけどwindow.attachEventとdocument.attachEventしかなく他の要素にはattachEventはない。\r
+ */\r
+\r
+if( X_UA.IE4 && X_UA.IE < 5 ){ // ie4 & iemobi4 & macie4.x\r
+ X_UA_DOM.IE4 = true;\r
+ X_UA_EVENT.IE4 = true;\r
+} else\r
+if( X_UA.MacIE ){\r
+ X_UA_DOM.W3C = true;\r
+ X_UA_EVENT.IE = true;\r
+} else\r
+if( document.getElementById ){\r
+ X_UA_DOM.W3C = true;\r
+ if( document.addEventListener ){\r
+ X_UA_EVENT.W3C = true;\r
+ } else\r
+ if( document.attachEvent ){\r
+ X_UA_EVENT.IE = true;\r
+ } else {\r
+ X_UA_EVENT.DOM0 = true;\r
+ };\r
+} else\r
+if( document.layers ){\r
+ \r
+} else {\r
+ \r
+};\r
+\r
+if( navigator.msPointerEnabled || navigator.pointerEnabled ) X_UA_HID.POINTER = true;\r
+if( !X_UA_HID.POINTER && window.ontouchstart !== undefined ) X_UA_HID.TOUCH = true;\r
+\r
+//alert(X_UA.Safari + ' ' + X_UA.WebKit + '\n\n' + navigator.userAgent + '\n\n' + navigator.appVersion + '\n\n' + navigator.platform );\r
\r
// Safari 3.1 未満は開発コンソールがない!\r
// http://shimax.cocolog-nifty.com/search/2006/09/safarijavascrip_c54d.html\r
/*\r
-if( X.UA.Safari && X.UA.WebKit < 525.13 ){ \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
};\r
};*/\r
\r
-if( X.UA.IE < 7 ){ // error @ NN7.2\r
+// ------------------------------------------------------------------------- //\r
+// --- interface ----------------------------------------------------------- //\r
+// ------------------------------------------------------------------------- //\r
+X.UA = X_UA;\r
+\r
+\r
+\r
+if( X_UA.IE < 7 ){ // error @ NN7.2\r
// bonus: hotfix for IE6 SP1 (bug KB823727)\r
- // multipleIEs IE6 standalone 版では不可\r
- document.execCommand && document.execCommand( 'BackgroundImageCache', false, true );\r
+ // multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,\r
+ X_UA.IE4 || X.UA.MacIE ?\r
+ document.execCommand && document.execCommand( 'BackgroundImageCache', false, true ) :\r
+ (function(){\r
+ X_UA.IE_EXECOM_ERROR = eval( 'var a=1;try{document.execCommand&&document.execCommand("BackgroundImageCache",!1,!0)}catch(e){a=0}!a' );\r
+ })();\r
+ \r
+ X_UA.IE_EXECOM_ERROR && alert( 'document.execCommand error!' );\r
};\r
-\r
-X.inObject = X.UA.IE < 5.5 ? // TODO JScript で判定\r
- (function( name, obj ){\r
- var p;\r
- if( obj[ name ] ) return true;\r
- name += ''; // 数値も許可\r
- for( p in obj ){\r
- if( p === name ) return true;\r
- };\r
- return false;\r
- }) :\r
- new Function( 'a,b', 'return a in b' );// なぜか ie5 でもerror\r
// ------------ local variables -------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
\r
-var XCallback_USE_CLOSURE = false,\r
-\r
- XCallback_LIVE_LIST = [],\r
- XCallback_POOL_LIST = [],\r
- \r
- XCallback_THIS_FUNC = 1,\r
- XCallback_HANDLEEVENT = 2,\r
- XCallback_FUNC_ONLY = 3;\r
+var X_Callback_LIVE_LIST = [],\r
+ X_Callback_POOL_LIST = [],\r
+ X_Closure_COMMAND_BACK = X_Callback_LIVE_LIST,\r
+ X_Closure_COMMAND_DROP = X_Callback_POOL_LIST,\r
\r
+ X_Callback_THIS_FUNC = 1,\r
+ X_Callback_HANDLEEVENT = 2,\r
+ X_Callback_FUNC_ONLY = 3;\r
+\r
+ X_Callback_NONE = 0,\r
+ X_Callback_UN_LISTEN = 1,\r
+ X_Callback_STOP_PROPAGATION = 2, // 上位階層への伝播のキャンセル\r
+ X_Callback_STOP_NOW = 4 | 2, // 同一階層のリスナーのキャンセル(上位へもキャンセル)\r
+ X_Callback_PREVENT_DEFAULT = 8, // 結果動作のキャンセル,\r
+ X_Callback_MONOPOLY = 16, // move event を独占する\r
+ X_Callback_SYS_CANCEL = 32 | 4 | 2;\r
\r
/*\r
* handleEvent という関数のメンバーを持つオブジェクト\r
\r
/*\r
* \r
- * @typedef {funciton}\r
+ * @typedef {(funciton|{ _ : function, same : function, kill : function, a : (Array|undefined) })}\r
*/\r
var functionHash;\r
\r
X.Callback = {\r
\r
- NONE : 0,\r
- UN_LISTEN : 1,\r
- STOP_PROPAGATION : 2, // 上位階層への伝播のキャンセル\r
- STOP_NOW : 4 | 2, // 同一階層のリスナーのキャンセル(上位へもキャンセル)\r
- PREVENT_DEFAULT : 8, // 結果動作のキャンセル,\r
- MONOPOLY : 16, // move event を独占する\r
- SYS_CANCEL : 32 | 4 | 2,\r
- \r
- _USE_CLOSURE : false,\r
- \r
- _LIVE_LIST : [],\r
- _POOL_LIST : [],\r
- \r
- _THIS_FUNC : 1,\r
- _HANDLEEVENT : 2,\r
- _FUNC_ONLY : 3,\r
- \r
- create : function( arg1, arg2, arg3 /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
- var live = X.Callback._LIVE_LIST,\r
- hash = X.Callback._classifyCallbackArgs( arg1, arg2, arg3 ),\r
- f;\r
- \r
- if( !hash.k ) return hash;\r
- \r
- f = X.Callback._POOL_LIST.pop();\r
- if( !f ){\r
- f = new Function( 'var a=arguments,f=a.callee;f.a=a;return f._(f)' ); // f.x=this;\r
- f[ 'kill' ] = X.Callback._kill;\r
- f[ 'same' ] = X.Callback._same;\r
- f._ = X.Callback._proxyCallback;\r
- };\r
- \r
- live[ live.length ] = f;\r
- \r
- switch( f.k = hash.k ){\r
- case X.Callback._THIS_FUNC :\r
- f.x = hash.x;\r
- f.f = hash.f;\r
- break;\r
- case X.Callback._HANDLEEVENT :\r
- f.x = hash.x;\r
- break;\r
- case X.Callback._FUNC_ONLY :\r
- f.f = hash.f;\r
- break;\r
- };\r
-\r
- if( hash.s ) f.s = hash.s;\r
- return f;\r
- },\r
+ NONE : X_Callback_NONE,\r
+ UN_LISTEN : X_Callback_UN_LISTEN,\r
+ STOP_PROPAGATION : X_Callback_STOP_PROPAGATION,\r
+ STOP_NOW : X_Callback_STOP_NOW,\r
+ PREVENT_DEFAULT : X_Callback_PREVENT_DEFAULT,\r
+ MONOPOLY : X_Callback_MONOPOLY,\r
\r
- _createClosure : function( obj ){\r
- return function(){\r
- obj.a = arguments;\r
- return obj._( obj );\r
- };\r
- },\r
- \r
- _classifyCallbackArgs : function( arg1, arg2, arg3, alt_context ){\r
- var obj;\r
- \r
- if( arg1 && X.Type.isFunction( arg2 ) ){\r
- obj = { x : arg1, f : arg2, k : X.Callback._THIS_FUNC };\r
- } else\r
- if( arg1 && X.Type.isFunction( arg1[ 'handleEvent' ] ) ){\r
- obj = { x : arg1, k : X.Callback._HANDLEEVENT };\r
- arg3 = arg2;\r
- } else\r
- if( X.Type.isFunction( arg1 ) ){\r
- arg3 = arg2;\r
- if( alt_context ){\r
- obj = { x : alt_context, f : arg1, k : X.Callback._THIS_FUNC };\r
- } else {\r
- obj = { f : arg1, k : X.Callback._FUNC_ONLY };\r
- };\r
- } else\r
- if( X.Type.isFunction( arg2 ) ){\r
- //console.log( 'X.Callback._classifyCallbackArgs : arg1 が ' + arg1 + 'です' ); ie4 で error\r
- if( alt_context ){\r
- obj = { x : alt_context, f : arg2, k : X.Callback._THIS_FUNC };\r
- } else {\r
- obj = { f : arg2, k : X.Callback._FUNC_ONLY };\r
- };\r
- } else\r
- if( alt_context ){\r
- obj = { x : alt_context, k : X.Callback._HANDLEEVENT };\r
- arg3 = arg1;\r
- } else {\r
- console.log( '不正 ' + arg1 );\r
- console.dir( arg1 );\r
- return;\r
- };\r
- \r
- if( X.Type.isArray( arg3 )){\r
- obj.s = arg3;\r
- };\r
- return ( obj.x || obj.s ) ? obj : arg1;\r
- },\r
-\r
- _proxyCallback : function( xfunc ){\r
- var args = xfunc.a || [],\r
- thisObj = xfunc.x,\r
- func = xfunc.f,\r
- supp = xfunc.s,\r
- temp, ret;\r
- \r
- delete xfunc.a; \r
- \r
- if( supp && supp.length ){\r
- temp = [];\r
- args.length &&\r
- (\r
- args.length === 1 ?\r
- ( temp[ 0 ] = args[ 0 ] ) :\r
- temp.push.apply( temp, args )\r
- );\r
- supp.length === 1 ?\r
- ( temp[ temp.length ] = supp[ 0 ] ) :\r
- temp.push.apply( temp, supp );\r
- args = temp;\r
- };\r
- \r
- switch( xfunc.k ){\r
-\r
- case X.Callback._THIS_FUNC :\r
- return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );\r
- \r
- case X.Callback._HANDLEEVENT :\r
- temp = thisObj[ 'handleEvent' ];\r
- if( X.Type.isFunction( temp ) ){\r
- return args.length === 0 ? thisObj[ 'handleEvent' ]() :\r
- args.length === 1 ? thisObj[ 'handleEvent' ]( args[ 0 ] ) : temp.apply( thisObj, args );\r
- };\r
- break;\r
- /*\r
- if( temp !== func && X.Type.isFunction( temp ) ){\r
- return args.length === 0 ? thisObj[ 'handleEvent' ]() : temp.apply( thisObj, args );\r
- } else\r
- if( X.Type.isFunction( thisObj ) ){\r
- return args.length === 0 ? thisObj.call( thisObj ) : thisObj.apply( thisObj, args );\r
- };\r
- return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );*/\r
- \r
- case X.Callback._FUNC_ONLY :\r
- return args.length === 0 ?\r
- func() :\r
- args.length === 1 ?\r
- func( args[ 0 ] ) :\r
- func.apply( null, args );\r
- };\r
- return X.Callback.NONE;\r
- },\r
- \r
- _kill : function(){\r
- X.Callback._correct( this );\r
- },\r
- _same : function( arg1, arg2, arg3 ){\r
- var hash;\r
- \r
- if( arg1 && arg1[ 'kill' ] === X.Callback._kill ) return this === arg1;\r
- \r
- hash = X.Callback._classifyCallbackArgs( arg1, arg2, arg3 );\r
- \r
- return hash && this.k === hash.k && this.x === hash.x && this.f === hash.f && this.s === hash.s;\r
- },\r
- _correct : function( f ){\r
- var i = X.Callback._LIVE_LIST.indexOf( f );\r
- //delete f._;\r
- delete f.k;\r
- if( f.x ) delete f.x;\r
- if( f.f ) delete f.f;\r
- if( f.s ) delete f.s;\r
- if( i === -1 ) return;\r
- X.Callback._LIVE_LIST.splice( i, 1 );\r
- X.Callback._POOL_LIST.push( f );\r
- },\r
+ create : X_Callback_create,\r
\r
sys_monitor : function(){\r
return {\r
- 'Live callback' : X.Callback._LIVE_LIST.length,\r
- 'Pool callback' : X.Callback._POOL_LIST.length\r
+ 'Live callback' : X_Callback_LIVE_LIST.length,\r
+ 'Pool callback' : X_Callback_POOL_LIST.length\r
};\r
},\r
+ \r
sys_gc : function(){\r
- var list = X.Callback._POOL_LIST,\r
+ var list = X_Callback_POOL_LIST,\r
f;\r
while( 0 < list.length ){\r
f = list.shift();\r
- X.Callback._correct( f );\r
- delete f[ '_' ];\r
+ X_Callback_correct( f );\r
delete f[ 'kill' ];\r
delete f[ 'same' ];\r
};\r
}\r
};\r
\r
+X_TEMP.onSystemReady.push( X_Callback_handleSystemEvent );\r
+\r
// ------------------------------------------------------------------------- //\r
// --- implements ---------------------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
\r
+function X_Callback_handleSystemEvent( e ){\r
+ switch( e ){\r
+ case '':\r
+ };\r
+};\r
+\r
+function X_Callback_create( thisObject, opt_callback, opt_args /* [ listener || ( context + function ) || function ][ args... ] */ ){\r
+ var obj = X_Callback_classifyCallbackArgs( thisObject, opt_callback, opt_args ),\r
+ l, ret, _obj;\r
+ if( !obj.k ) return obj;\r
+ if( l = X_Callback_POOL_LIST.length ){\r
+ ret = X_Callback_POOL_LIST[ l - 1 ]; --X_Callback_POOL_LIST.length; // ret = X_Callback_POOL_LIST.pop();\r
+ _obj = ret( X_Closure_COMMAND_BACK );\r
+ _obj.k = obj.k;\r
+ _obj.f = obj.f;\r
+ _obj.x = obj.x;\r
+ _obj.s = obj.s;\r
+ } else {\r
+ ret = X_Closure_actualClosure( obj );\r
+ ret.kill = X_Callback_kill;\r
+ ret.same = X_Callback_same;\r
+ };\r
+ X_Callback_LIVE_LIST[ X_Callback_LIVE_LIST.length ] = ret;\r
+ return ret; \r
+};\r
+\r
+function X_Closure_actualClosure( obj ){\r
+ return function(){\r
+ if( arguments[ 0 ] === X_Closure_COMMAND_BACK ) return obj;\r
+ if( arguments[ 0 ] !== X_Closure_COMMAND_DROP ) return X_Callback_proxyCallback( obj, arguments );\r
+ };\r
+};\r
+\r
+function X_Callback_classifyCallbackArgs( arg1, arg2, arg3, alt_context ){\r
+ var obj;\r
+ \r
+ if( arg1 && X.Type.isFunction( arg2 ) ){\r
+ obj = { x : arg1, f : arg2, k : X_Callback_THIS_FUNC };\r
+ } else\r
+ if( arg1 && X.Type.isFunction( arg1[ 'handleEvent' ] ) ){\r
+ obj = { x : arg1, k : X_Callback_HANDLEEVENT };\r
+ arg3 = arg2;\r
+ } else\r
+ if( X.Type.isFunction( arg1 ) ){\r
+ arg3 = arg2;\r
+ if( alt_context ){\r
+ obj = { x : alt_context, f : arg1, k : X_Callback_THIS_FUNC };\r
+ } else {\r
+ obj = { f : arg1, k : X_Callback_FUNC_ONLY };\r
+ };\r
+ } else\r
+ if( X.Type.isFunction( arg2 ) ){\r
+ //console.log( 'X_Callback_classifyCallbackArgs : arg1 が ' + arg1 + 'です' ); ie4 で error\r
+ if( alt_context ){\r
+ obj = { x : alt_context, f : arg2, k : X_Callback_THIS_FUNC };\r
+ } else {\r
+ obj = { f : arg2, k : X_Callback_FUNC_ONLY };\r
+ };\r
+ } else\r
+ if( alt_context ){\r
+ obj = { x : alt_context, k : X_Callback_HANDLEEVENT };\r
+ arg3 = arg1;\r
+ } else {\r
+ console.log( '不正 ' + arg1 );\r
+ console.dir( arg1 );\r
+ return;\r
+ };\r
+ \r
+ if( X.Type.isArray( arg3 )){\r
+ obj.s = arg3;\r
+ };\r
+ return ( obj.x || obj.s ) ? obj : arg1;\r
+};\r
+\r
+function X_Callback_proxyCallback( xfunc, _args ){\r
+ var args = _args || [],\r
+ thisObj = xfunc.x,\r
+ func = xfunc.f,\r
+ supp = xfunc.s,\r
+ temp, ret; \r
+ \r
+ if( supp && supp.length ){\r
+ temp = [];\r
+ args.length &&\r
+ (\r
+ args.length === 1 ?\r
+ ( temp[ 0 ] = args[ 0 ] ) :\r
+ temp.push.apply( temp, args )\r
+ );\r
+ supp.length === 1 ?\r
+ ( temp[ temp.length ] = supp[ 0 ] ) :\r
+ temp.push.apply( temp, supp );\r
+ args = temp;\r
+ };\r
+ \r
+ switch( xfunc.k ){\r
+\r
+ case X_Callback_THIS_FUNC :\r
+ return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );\r
+ \r
+ case X_Callback_HANDLEEVENT :\r
+ temp = thisObj[ 'handleEvent' ];\r
+ if( X.Type.isFunction( temp ) ){\r
+ return args.length === 0 ? thisObj[ 'handleEvent' ]() :\r
+ args.length === 1 ? thisObj[ 'handleEvent' ]( args[ 0 ] ) : temp.apply( thisObj, args );\r
+ };\r
+ break;\r
+ /*\r
+ if( temp !== func && X.Type.isFunction( temp ) ){\r
+ return args.length === 0 ? thisObj[ 'handleEvent' ]() : temp.apply( thisObj, args );\r
+ } else\r
+ if( X.Type.isFunction( thisObj ) ){\r
+ return args.length === 0 ? thisObj.call( thisObj ) : thisObj.apply( thisObj, args );\r
+ };\r
+ return args.length === 0 ? func.call( thisObj ) : func.apply( thisObj, args );*/\r
+ \r
+ case X_Callback_FUNC_ONLY :\r
+ return args.length === 0 ?\r
+ func() :\r
+ args.length === 1 ?\r
+ func( args[ 0 ] ) :\r
+ func.apply( null, args );\r
+ };\r
+ return X_Callback_NONE;\r
+};\r
+\r
+function X_Callback_same( arg1, arg2, arg3 ){\r
+ var hash;\r
+ \r
+ if( arg1 && arg1[ 'kill' ] === X_Callback_kill ) return this === arg1;\r
+ \r
+ hash = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
+ \r
+ return hash && this.k === hash.k && this.x === hash.x && this.f === hash.f && this.s === hash.s;\r
+};\r
+\r
+function X_Callback_kill(){\r
+ X_Callback_correct( this );\r
+};\r
+\r
+function X_Callback_correct( f ){\r
+ var i = X_Callback_LIVE_LIST.indexOf( f ),\r
+ obj;\r
+ if( i !== -1 ){\r
+ X_Callback_LIVE_LIST.splice( i, 1 );\r
+ X_Callback_POOL_LIST[ X_Callback_POOL_LIST.length ] = f;\r
+ obj = f( X_Closure_COMMAND_BACK );\r
+ delete obj.k;\r
+ if( obj.f ) delete obj.f;\r
+ if( obj.x ) delete obj.x;\r
+ if( obj.s ) delete obj.s;\r
+ return true;\r
+ };\r
+ return false;\r
+};\r
\r
\r
\r
SINGLETON : 32, // 未実装\r
\r
create : function( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
- var args = X.copyArray( arguments ),\r
+ var args = X_Object_cloneArray( arguments ),\r
displayName = args[ 0 ],\r
classSetting,\r
opt_pool, opt_abstract, opt_final, opt_private,\r
};\r
\r
function X_Class_newPrivate( /* instance, args */ ){\r
- var args = X.copyArray( arguments ),\r
+ var args = X_Object_cloneArray( arguments ),\r
user = args.shift(),\r
def = X_Class_getClassDef( user ),\r
privateClass = def.privateClass,\r
* http://d.hatena.ne.jp/m-hiyama/20051018/1129605002\r
*/\r
function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
- var args = X.copyArray( arguments ),\r
+ var args = X_Object_cloneArray( arguments ),\r
params = [],\r
Super = this,\r
superDef = X_Class_getClassDef( Super ),\r
// ------------------------------------------------------------------------- //\r
var X_EventDispatcher_once = false,\r
X_EventDispatcher_needsIndex = false,\r
- X_EventDispatcher_temp = {},\r
\r
- X_EventDispatcher_safariPreventDefault = false; // // Safari3-\r
-\r
-if( X.UA.MacIE ){\r
- X_EventDispatcher_temp.DOM_W3C = true;\r
- X_EventDispatcher_temp.EVENT_DOM0 = true;\r
-} else\r
-if( X.UA.IE4 ){ // ie4 & iemobi4\r
- X_EventDispatcher_temp.DOM_IE4 = true;\r
- X_EventDispatcher_temp.EVENT_DOM0 = true;\r
-} else\r
-if( document.getElementById ){\r
- X_EventDispatcher_temp.DOM_W3C = true;\r
- if( document.addEventListener ){\r
- X_EventDispatcher_temp.EVENT_W3C = true;\r
- } else\r
- if( document.attachEvent ){\r
- X_EventDispatcher_temp.EVENT_IE = true;\r
- } else {\r
- X_EventDispatcher_temp.EVENT_DOM0 = true;\r
- };\r
-} else\r
-if( document.all ){\r
- X_EventDispatcher_temp.DOM_IE4 = true;\r
- X_EventDispatcher_temp.EVENT_DOM0 = true;\r
-} else\r
-if( document.layers ){\r
- \r
-} else {\r
- \r
-};\r
+ X_EventDispatcher_safariPreventDefault = false; // Safari3-\r
\r
// ------------------------------------------------------------------------- //\r
// --- interface ----------------------------------------------------------- //\r
if( opt_arg1.k ){\r
hash = opt_arg1;\r
} else {\r
- hash = X.Callback._classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
+ hash = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
};\r
\r
if( ( unlistens = this._unlistens ) && ( unlistens = unlistens[ opt_type ] ) ){\r
*/\r
function X_EventDispatcher_dispatch( e ){\r
var list = this[ '_listeners' ],\r
- ret = X.Callback.NONE,\r
+ ret = X_Callback_NONE,\r
type = e[ 'type' ],\r
- unlistens, i, l, f, r, sysOnly;\r
+ unlistens, i, l, args, f, r, sysOnly;\r
\r
if( !list || !( list = list[ type || e ] ) ) return ret;\r
\r
};\r
if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
\r
- r = X.Callback.NONE;\r
+ r = X_Callback_NONE;\r
if( f.k ){\r
- f.a = [ e ];\r
- r = X.Callback._proxyCallback( f );\r
+ r = X_Callback_proxyCallback( f, args || ( args = [ e ] ) );\r
} else {\r
r = f.call( this, e );\r
};\r
\r
- if( f.once || r & X.Callback.UN_LISTEN ){\r
+ if( f.once || r & X_Callback_UN_LISTEN ){\r
// dispatch 中に unlisten が作られることがある\r
if( !unlistens ){\r
unlistens = this._unlistens || ( this._unlistens = {} );\r
\r
add && X_EventDispatcher_actualAddEvent( this, type, raw, list );\r
\r
- f = X.Callback._classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
+ f = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
list[ list.length ] = f;\r
f.once = X_EventDispatcher_once;\r
\r
if( X.Type.isArray( opt_type ) ){\r
for( i = opt_type.length; i; ){\r
this.unlisten( opt_type[ --i ], opt_arg1, opt_arg2, opt_arg3 );\r
+ if( !opt_type[ i ] ){\r
+ alert( '不正な unlisten Array' );\r
+ };\r
};\r
return this;\r
};\r
( this._unlistens[ opt_type ] = [ f ] );\r
} else {\r
delete f.once;\r
- // f.kill === X.Callback._kill && f.kill();\r
+ // f.kill === X_Callback_kill && f.kill();\r
_list.splice( i, 1 );\r
if( !_list.length ){\r
raw = this._rawObject || this._ie4getRawNode && this._ie4getRawNode();\r
delete list[ opt_type ];\r
- if( empty = X.isEmptyObject( list ) ) delete this._listeners;\r
+ if( empty = X_Object_isEmpty( list ) ) delete this._listeners;\r
if( raw && '' + parseFloat( opt_type ) !== '' + opt_type ){ // 数字イベントの除外\r
X_EventDispatcher_actualRemoveEvent( this, opt_type, raw, _list, !empty );\r
};\r
// Days on the Moon DOM Events とブラウザの実装 \r
// http://nanto.asablo.jp/blog/2007/03/23/1339502\r
// Safari 2 では関数オブジェクトしか EventListener として使えませんが、Safari のナイトリービルドでは handleEvent メソッドを持つオブジェクトも EventListener として使えるようです。\r
- X_EventDispatcher_temp.EVENT_W3C /* && ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 ) */ ? // Safari3-\r
+ X_UA_EVENT.W3C /* && ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 ) */ ? // Safari3-\r
(function( that, type, raw, list ){\r
var i;\r
\r
X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
};\r
} else {\r
- that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
\r
if( that._isSilverlight ){\r
- list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw.AddEventListener( type, list.slcallback );\r
} else\r
if( raw.addEventListener ){\r
}; \r
};\r
}) :\r
- X_EventDispatcher_temp.EVENT_IE ?\r
+ X_UA_EVENT.IE ?\r
(function( that, type, raw, list ){\r
var i;\r
//if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
//};\r
if( that._isXHR ){\r
// ie8- の XHR は window.event が更新されないため, eventType 毎に callback を指定する\r
- raw[ 'on' + type ] = X.Callback.create( that, X_EventDispatcher_dispatch, [ type ] );\r
+ raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
} else {\r
type = X.Dom.Event.Rename[ type ] || type;\r
\r
X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
};\r
} else{\r
- that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
\r
if( that._isSilverlight ){\r
- list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw.AddEventListener( type, list.slcallback );\r
} else\r
if( raw.attachEvent ){\r
X_EventDispatcher_actualAddEvent( that, type[ --i ], raw, list );\r
};\r
} else {\r
- that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ that._handleEvent || ( that._handleEvent = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
\r
if( that._isSilverlight ){\r
- list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw.AddEventListener( type, list.slcallback );\r
} else {\r
raw[ 'on' + type ] = that._handleEvent;\r
};\r
\r
var X_EventDispatcher_actualRemoveEvent =\r
- X_EventDispatcher_temp.EVENT_W3C /*&& ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 )*/ ? // Safari3-\r
+ X_UA_EVENT.W3C /*&& ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 )*/ ? // Safari3-\r
(function( that, type, raw, list, skip ){\r
type = X.Dom.Event.Rename[ type ] || type;\r
\r
\r
if( that._isSilverlight ){\r
raw.RemoveEventListener( type, list.sltoken ); // token\r
- X.Callback._correct( list.slcallback );\r
+ X_Callback_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
} else {\r
raw[ 'on' + type ] = null;\r
};\r
if( !skip ){\r
- X.Callback._correct( that._handleEvent );\r
+ X_Callback_correct( that._handleEvent );\r
delete that._handleEvent;\r
}; \r
};\r
};\r
}) :\r
- X_EventDispatcher_temp.EVENT_IE ?\r
+ X_UA_EVENT.IE ?\r
(function( that, type, raw, list, skip ){\r
var i;\r
//if( type === 'load' && that._tag && X.Dom.Event._LOAD_FIX_TAGS[ that._tag ] ){\r
// type = 'readystatechange';\r
//};\r
if( that._isXHR ){\r
- X.Callback._correct( raw[ 'on' + type ] );\r
+ X_Callback_correct( raw[ 'on' + type ] );\r
raw[ 'on' + type ] = X.emptyFunction;\r
raw[ 'on' + type ] = '';\r
} else {\r
\r
if( that._isSilverlight ){\r
raw.RemoveEventListener( type, list.sltoken ); // token\r
- X.Callback._correct( list.slcallback );\r
+ X_Callback_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
} else {\r
};\r
\r
if( !skip ){\r
- X.Callback._correct( that._handleEvent );\r
+ X_Callback_correct( that._handleEvent );\r
delete that._handleEvent;\r
}; \r
};\r
\r
if( that._isSilverlight ){\r
raw.RemoveEventListener( type, list.sltoken ); // token\r
- X.Callback._correct( list.slcallback );\r
+ X_Callback_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
} else {\r
raw[ 'on' + type ] = '';\r
\r
if( !skip ){\r
- X.Callback._correct( that._handleEvent );\r
+ X_Callback_correct( that._handleEvent );\r
delete that._handleEvent;\r
}; \r
};\r
// Is this in regard to the Safari 1.x preventDefault bug on click/dblclick?\r
// https://groups.google.com/forum/#!msg/comp.lang.javascript/uYEuCHjHxnw/yKoHtZJPa1QJ\r
var X_EventDispatcher_actualHandleEvent =\r
- X.UA.IE4 || X_EventDispatcher_temp.EVENT_IE ? // ie45678 EVENT_IE & EVENT_DOM0 for ie4\r
+ X_UA_EVENT.IE4 || X_UA_EVENT.IE ? // ie45678 EVENT_IE & EVENT_DOM0 for ie4\r
(function(){\r
var ret;\r
\r
return event.returnValue = false;\r
};\r
}) :\r
- //X.Dom.EVENT_W3C & EVENT_DOM0\r
+ //X_UA_EVENT.W3C & X_UA_EVENT.DOM0\r
(function( e ){\r
var ev = new X.Dom.Event( e, this ),\r
- ret = X.Callback.NONE,\r
+ ret = X_Callback_NONE,\r
i, l;\r
\r
// touch event -> pointer\r
opt_count = 0;\r
};\r
\r
- hash = X.Callback._classifyCallbackArgs( args1, args2, args3 );\r
+ hash = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
if( !hash ) return -1; // dev only\r
\r
if( !hash.k ) hash = { f : hash };\r
var i = X_Timer_REQ_FRAME_LIST.length,\r
f;\r
i === 0 && ( X_Timer_requestID = X_Timer_REQ_ANIME_FRAME( X_Timer_onEnterFrame ) );\r
- f = X_Timer_REQ_FRAME_LIST[ i ] = X.Callback._classifyCallbackArgs( args1, args2, args3 );\r
+ f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
return f.uid = ++X_Timer_uid;\r
}) :\r
(function( args1, args2, args3 ){\r
var i = X_Timer_REQ_FRAME_LIST.length,\r
f;\r
i === 0 && ( X_Timer_requestID = X.Timer.add( 0, 1, X_Timer_onEnterFrame ) );\r
- f = X_Timer_REQ_FRAME_LIST[ i ] = X.Callback._classifyCallbackArgs( args1, args2, args3 );\r
+ f = X_Timer_REQ_FRAME_LIST[ i ] = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
return f.uid = ++X_Timer_uid;\r
}),\r
\r
c = q.count;\r
\r
if( q.k ){\r
- q.a = [];\r
- r = X.Callback._proxyCallback( q );\r
+ //q.a = [];\r
+ r = X_Callback_proxyCallback( q, [] );\r
} else {\r
r = q.f();\r
};\r
heavy = true;\r
};\r
\r
- if( r & X.Callback.UN_LISTEN || c === 1 ){\r
+ if( r & X_Callback_UN_LISTEN || c === 1 ){\r
list.splice( i, 1 );\r
--i;\r
--l;\r
function X_Timer_onEnterFrame( time ){\r
var list = X_Timer_REQ_FRAME_LIST,\r
l = list.length,\r
- i = 0, q, uid;\r
+ i = 0, q, uid, args;\r
\r
time = time || X.getTime();\r
X_Timer_busyOnFrame = true;\r
if( X_Timer_removal && X_Timer_removal[ q.uid ] ) continue;\r
\r
if( q.k ){\r
- q.a = [ time ];\r
- X.Callback._proxyCallback( q );\r
+ X_Callback_proxyCallback( q, args || ( args = [ time ] ) );\r
} else {\r
q( time );\r
};\r
\r
-\r
-\r
X.Dom = X.Class._override(\r
new X.EventDispatcher(),\r
{\r
readyState : -1,\r
- active : !!window.parent || !!document.activeElement, // frameに読み込まれた場合のieのerror回避\r
+ active : !!window.parent || !!document.activeElement, // parent は frameに読み込まれた場合のieのerror回避\r
_root : null,\r
\r
_lock : false,\r
* \r
* http://sssslide.com/www.slideshare.net/hiroakiwakamatsu/javascript-14514208\r
* 1. 傾き時の画面サイズ取得ー 対処方法の例\r
- * (1)ー• タイマーを使って、画面サイズ取得の タイミングを少しだけ遅延させる\r
+ * (1)ー? タイマーを使って、画面サイズ取得の タイミングを少しだけ遅延させる\r
* window.onorientationchange = function() { setTimeout(function() { alert("W: " + window.innerWidth + ", H: " + window.innerHeight); }, 200); }\r
* 横に傾けた時、正常に横向け時の 幅と高さが取得できている ただし、端末によってはうまく取得できな い場合がある(Galaxy S IIIとか・・・) 7 \r
* \r
\r
_init : function(){\r
var s, size, html, head, body;\r
- if( X.Dom.Event.DOM_PRE_INIT <= X.Dom.readyState ) return X.Callback.UN_LISTEN;\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
html = Node._html =\r
document.documentElement ?\r
new Node( document.documentElement ) :\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
new Node( document.getElementsByTagName( 'html' )[ 0 ] ) :\r
- X.Dom.DOM_IE4 ?\r
+ X_UA_DOM.IE4 ?\r
new Node( document.all.tags( 'html' )[ 0 ] ) :\r
null;\r
\r
head = Node._head =\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
new Node( document.getElementsByTagName( 'head' )[ 0 ] ) :\r
- X.Dom.DOM_IE4 ?\r
+ X_UA_DOM.IE4 ?\r
new Node( document.all.tags( 'head' )[ 0 ] ) :\r
null;\r
\r
\r
X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT, function(){\r
X.Dom.readyState = X.Dom.Event.DOM_BUILDER_COMPLETE;\r
- !X.Dom._useBuilder && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
+ !X_TEMP.X_Dom_useBuilder && X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
} );\r
\r
X.Dom.listenOnce( X.Dom.Event.DOM_BUILDER_COMPLETE, function(){\r
.listen( 'blur', X.Dom );\r
};\r
\r
- return X.Callback.UN_LISTEN;\r
+ return X_Callback_UN_LISTEN;\r
},\r
\r
handleEvent : function( e ){\r
};\r
};\r
\r
-/*\r
- * http://d.hatena.ne.jp/t-uchima/20051003/p1\r
- * MacIEにはattachEventが一応あるけどwindow.attachEventとdocument.attachEventしかなく他の要素にはattachEventはない。\r
- */\r
-if( X.UA.MacIE ){\r
- X.Dom.DOM_W3C = true;\r
- X.Dom.EVENT_DOM0 = true;\r
-} else\r
-if( X.UA.IE4 ){ // ie4 & iemobi4\r
- X.Dom.DOM_IE4 = true;\r
- X.Dom.EVENT_DOM0 = true;\r
-} else\r
-if( document.getElementById ){\r
- X.Dom.DOM_W3C = true;\r
- if( document.addEventListener ){\r
- X.Dom.EVENT_W3C = true;\r
- } else\r
- if( document.attachEvent ){\r
- X.Dom.EVENT_IE = true;\r
- } else {\r
- X.Dom.EVENT_DOM0 = true;\r
- };\r
-} else\r
-if( document.all ){\r
- X.Dom.DOM_IE4 = true;\r
- X.Dom.EVENT_DOM0 = true;\r
-} else\r
-if( document.layers ){\r
- \r
-} else {\r
- \r
-};\r
-\r
-X.Dom.EVENT_POINTER = navigator.msPointerEnabled || navigator.pointerEnabled;\r
-X.Dom.EVENT_TOUCH = !X.Dom.EVENT_POINTER && window.ontouchstart !== undefined;\r
-\r
-\r
-\r
-X.Dom.CRLF = String.fromCharCode( 13 ) + String.fromCharCode( 10 );\r
- \r
-X.Dom.cleanupWhiteSpace = function( text ){\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
- text.indexOf( '\n' ) !== -1 && ( text = text.split( '\n' ).join( _ ) );\r
- text.indexOf( '\f' ) !== -1 && ( text = text.split( '\f' ).join( _ ) );\r
- text.indexOf( '\b' ) !== -1 && ( text = text.split( '\b' ).join( _ ) );\r
- while( text.indexOf( __ ) !== -1 ){\r
- text = text.split( __ ).join( _ );\r
- };\r
- return text;\r
-};\r
-\r
-X.Dom.whiteSpaceToTag = function( text ){\r
- if( text == null ) return '';\r
- return text.toString()\r
- //.split( '\r\n\r\n' ).join( '<br>' )\r
- //.split( '\n\r\n\r' ).join( '<br>' )\r
- //.split( '\r\n' ).join( '<br>' )\r
- .split( '\n\r' ).join( '<br>' )\r
- .split( '\r' ).join( '<br>' )\r
- .split( '\n' ).join( '<br>' )\r
- .split( '\t' ).join( ' ' )\r
- .split( '\f' ).join( '' )\r
- .split( '\b' ).join( '' );\r
-};\r
-\r
-X.Dom.chrReferanceTo = function( str ){\r
- if( str == null ) return '';\r
- return str.toString()\r
- .split( '&' ).join( '&' )\r
- .split( '<' ).join( '<' )\r
- .split( '>' ).join( '>' )\r
- .split( ' ' ).join( ' ' );\r
-};\r
-\r
-/*\r
- * original\r
- * AS3で相対パスを絶対パスに変換する\r
- * http://www.shin-go.net/motionlab/?p=449\r
- */\r
-X.Dom.baseURL = ( function( parts ){\r
- var last = 1 < parts.length && parts[ parts.length - 1 ];\r
- if( last !== false && ( last === '' || //末尾が/で終わるとき\r
- last.indexOf( '.' ) !== -1 ) ){//末尾がファイル名で終わる時\r
- \r
- --parts.length;\r
- };\r
- return parts.join( '/' );\r
-})( location.href.split( '?' )[ 0 ].split( '#' )[ 0 ].split( '/' ) );\r
-\r
-X.Dom.getAbsolutePath = function( path ){\r
- var s = '/',\r
- ss = '//',\r
- _ary, ary, i = 0;\r
-\r
- if( 'http:file:https:'.indexOf( path.substr( 0, 4 ) ) !== -1 ) return path;\r
- \r
- _ary = X.Dom.baseURL.split( ss );\r
- ary = _ary[ 1 ].split( s );\r
-\r
- if( path.charAt( 0 ) === s ) return [ _ary[ 0 ], ss, ary[ 0 ], path ].join( '' );\r
- \r
- if( path.substr( 0, 2 ) === './' ){\r
- path = path.substr( 2 );\r
- } else {\r
- while( path.substr( i, 3 ) === '../' ){\r
- --ary.length;\r
- i += 3;\r
- };\r
- if( i ) path = path.substr( i );\r
- };\r
- return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
-};\r
-\r
if( window[ 'orientation' ] !== undefined ){\r
X.Dom._orientationchange = function( e ){\r
X.Dom._orientationFlag = true;\r
};\r
};\r
\r
-\r
-console.log( 'X.Dom dom:w3c=' + X.Dom.DOM_W3C + ' ev:w3c=' + X.Dom.EVENT_W3C );\r
+console.log( 'X.Dom dom:w3c=' + X_UA_DOM.W3C + ' ev:w3c=' + X_UA_EVENT.W3C );\r
-\r
-/* なんで */\r
-X.Dom.DTD = {\r
- \r
- EMPTY : {\r
+\r
+var X_Dom_DTD_EMPTY = {\r
AREA : true,\r
BASE : true,\r
BASEFONT : true,\r
EMBED : true\r
},\r
\r
- TAG_FIX :\r
- X.UA.IE && 4 <= X.UA.IE && X.UA.IE < 5 ?\r
+ /*\r
+ * TODO html5 要素, audio, video は?\r
+ */ \r
+ X_Dom_DTD_TAG_FIX =\r
+ X_UA.IE4 ?\r
{ ABBR : 'ACRONYM', BDO : '', RUBY : '' } :\r
- X.UA.IE && 5 <= X.UA.IE && X.UA.IE < 7 ?\r
+ X_UA.IE5 || X_UA.IE55 || X_UA.IE6 ?\r
{ ABBR : 'ACRONYM' } :\r
{},\r
\r
- // video:1,audio:1}\r
- ATTR_VAL_IS_URI : {\r
+ X_Dom_DTD_ATTR_VAL_IS_URI = {\r
action : true,\r
archive : true,\r
background : true,\r
profile : true,\r
src : true,\r
usemap : true\r
- }\r
-};\r
-\r
-X.Dom.moveToHead = {\r
- STYLE : true,\r
- LINK : true,\r
- TITLE : true,\r
- BGSOUND : true,\r
- AREA : true,\r
- BASE : true,\r
- META : true\r
-};\r
+ },\r
+ \r
+ X_Dom_DTD_MOVE_TO_HEAD = {\r
+ STYLE : true,\r
+ LINK : true,\r
+ TITLE : true,\r
+ BGSOUND : true,\r
+ AREA : true,\r
+ BASE : true,\r
+ META : true\r
+ },\r
+ \r
+ X_Dom_DTD_CLEANUP_TAGS = {\r
+ SCRIPT : true,\r
+ NOSCRIPT : true,\r
+ NOFRAMES : true,\r
+ '!' : true, // ie\r
+ COMMENT : true, // ie\r
+ NOEMBED : true,\r
+ NOLAYER : true\r
+ },\r
+ \r
+ X_Dom_DTD_SKIP_CLEANUP_TAGS = {\r
+ PRE : true,\r
+ TEXTAREA : true,\r
+ CODE : true,\r
+ KBD : true,\r
+ SAMP : true,\r
+ XMP : true,\r
+ PLAINTEXT : true,\r
+ LISTING : true\r
+ };\r
+/*\r
+X.Dom.DTD = {\r
+ \r
+ EMPTY : X_Dom_DTD_EMPTY,\r
+ \r
+ TAG_FIX : X_Dom_DTD_TAG_FIX,\r
\r
-X.Dom.cleanupTagNames = {\r
- SCRIPT : true,\r
- NOSCRIPT : true,\r
- NOFRAMES : true,\r
- '!' : true, // ie\r
- COMMENT : true, // ie\r
- NOEMBED : true,\r
- NOLAYER : true\r
+ ATTR_VAL_IS_URI : X_Dom_DTD_ATTR_VAL_IS_URI\r
};\r
+*/\r
\r
-X.Dom.skipCleanupTagNames = {\r
- PRE : true,\r
- TEXTAREA : true,\r
- CODE : true,\r
- KBD : true,\r
- SAMP : true,\r
- XMP : true,\r
- PLAINTEXT : true,\r
- LISTING : true\r
-};\r
HAS_HEIGHT_LENGTH : 512,\r
HAS_HEIGHT_PERCENT : 1024,\r
IE4_ONLY_TEXT : 2048,\r
- IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && 5 <= X.UA.IE && X.UA.IE < 5.5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
+ IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?\r
};\r
\r
X.Dom._strictElmCreation = !X.UA.MacIE && X.UA.IE5678;// && !X.UA.MacIE;\r
// X.Dom.Dirty.CSS を落とす\r
this._dirty = 0;\r
// attr の回収は不可能、、、\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
v.setAttribute( 'UID', '' + uid );\r
} else {\r
v.UID = uid;\r
case Node.IS_RAW_HTML :\r
case Node.IS_IMAGE :\r
// fake TextNode too.\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
uid = v.getAttribute( 'UID' );\r
return uid && Node._chashe[ uid ];\r
};\r
};\r
// XMLかどうかを判別する\r
Node.isXmlDocument =\r
- X.Dom.DOM_IE4 ?\r
+ X_UA_DOM.IE4 ?\r
X.emptyFunction :\r
(function( root ){\r
if( X.Type.isBoolean( root.isXML ) ) return root.isXML;\r
\r
Node._reserveRemoval = [];\r
\r
-if( X.Dom.DOM_IE4 ){\r
+if( X_UA_DOM.IE4 ){\r
Node.prototype._ie4getRawNode = function(){\r
var elm = this._rawObject;\r
return elm ||\r
switch( this._xnodeType ){\r
case 1 :\r
Node._newByTag = true;\r
- xnode = new Node( this._tag, X.cloneObject( this._attrs ), X.cloneObject( this._css ) )\r
+ xnode = new Node( this._tag, X_Object_clone( this._attrs ), X_Object_clone( this._css ) )\r
.attr( { 'id' : this._id } )\r
.className( this._className );\r
if( opt_clone_children && ( xnodes = this._xnodes ) && ( l = xnodes.length ) ){\r
if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
// 親の xnodes から v を消す\r
if( v.parent ){\r
- //if( X.Dom.DOM_W3C ){\r
+ //if( X_UA_DOM.W3C ){\r
// v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 );\r
//} else\r
- //if( X.Dom.DOM_IE4 ){\r
+ //if( X_UA_DOM.IE4 ){\r
v.remove();\r
//} else {\r
\r
if( v._xnodeType !== 1 && v._xnodeType !== 3 ) return this;\r
// 親の xnodes から v を消す\r
if( v.parent ){\r
- //if( X.Dom.DOM_W3C ){\r
+ //if( X_UA_DOM.W3C ){\r
// v.parent._xnodes.splice( v.parent._xnodes.indexOf( v ), 1 );\r
//} else\r
- //if( X.Dom.DOM_IE4 ){\r
+ //if( X_UA_DOM.IE4 ){\r
v.remove();\r
//} else {\r
\r
};\r
if( Node._outerFlag === this ) Node._outerFlag = null;\r
};\r
- !Node._outerFlag || X.Dom.DTD.EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
+ !Node._outerFlag || X_Dom_DTD_EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
return html.join( _ );\r
};\r
\r
func = raw[ name ];\r
if( X.Type.isFunction( func ) ){\r
if( l ){\r
- args = X.copyArray( arguments );\r
+ args = X_Object_cloneArray( arguments );\r
args.shift();\r
return func.apply( raw, args );\r
};\r
// typeof func === unknown に対策\r
// http://la.ma.la/blog/diary_200509031529.htm \r
if( l ){\r
- args = X.copyArray( arguments );\r
+ args = X_Object_cloneArray( arguments );\r
args.shift();\r
\r
params = [];\r
Node.prototype.each = function( func /*, opt_args */ ){\r
var args;\r
if( 1 < arguments.length ){\r
- args = X.copyArray( arguments );\r
+ args = X_Object_cloneArray( arguments );\r
args[ 0 ] = 0; \r
func.apply( this, args );\r
} else {\r
};\r
\r
Node.prototype._commitUpdate =\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
( function( parentElement, nextElement ){\r
var elm = this._rawObject,\r
xnodes, l, i, frg, next, k, v;\r
};\r
return elm;\r
}) :\r
- X.Dom.DOM_IE4 ? \r
+ X_UA_DOM.IE4 ? \r
( function( parentElement, prevElement ){\r
var elm = this._rawObject || this._ie4getRawNode(),\r
xnodes, l, i, html, text, prev;\r
(function(){});\r
\r
Node.prototype._updateRawNode =\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
( function( elm ){\r
var attrs, rename, k, v;\r
\r
// textNode\r
if( this._dirty & X.Dom.Dirty.CONTENT ){\r
- elm.data = X.Dom.chrReferanceTo( this._text );\r
+ elm.data = X_String_chrReferanceTo( this._text );\r
delete this._dirty;\r
return;\r
};\r
\r
delete this._dirty;\r
}) :\r
- X.Dom.DOM_IE4 ? \r
+ X_UA_DOM.IE4 ? \r
( function( elm ){\r
var attrs, rename, k, v;\r
\r
for( k in attrs ){\r
( v = attrs[ k ] ) === undefined ?\r
elm.removeAttribute( rename[ k ] || k ) :\r
- elm.setAttribute( rename[ k ] || k, v ); // TODO X.Dom.Attr.noValue[ k ] ? k : v\r
+ this._tag === 'TEXTAREA' && k === 'value' ?\r
+ ( elm.innerText = v ) :\r
+ elm.setAttribute( rename[ k ] || k, X.Dom.Attr.noValue[ k ] ? k : v ); // TODO X.Dom.Attr.noValue[ k ] ? k : v\r
};\r
delete this._newAttrs;\r
};\r
* document.createElement of ie4 is only for OPTION & IMAGE.\r
*/\r
Node.prototype._actualCreate =\r
- X.Dom.DOM_W3C ? (function( isChild ){\r
+ X_UA_DOM.W3C ? (function( isChild ){\r
var elm = this._rawObject,\r
xnodes, frg, i, l;\r
\r
if( this._xnodeType === 3 ){\r
if( elm ) return elm;\r
delete this._dirty;\r
- return this._rawObject = document.createTextNode( X.Dom.chrReferanceTo( this._text ) );\r
+ return this._rawObject = document.createTextNode( X_String_chrReferanceTo( this._text ) );\r
};\r
\r
if( !elm ){\r
\r
return elm;\r
}) :\r
- X.Dom.DOM_IE4 ? (function( isChild ){\r
+ X_UA_DOM.IE4 ? (function( isChild ){\r
var uid = this._uid,\r
html, xnodes, n, i, l;\r
\r
}; \r
};\r
};\r
- X.Dom.DTD.EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
+ X_Dom_DTD_EMPTY[ this._tag ] || ( html[ n ] = '<\/' + this._tag + '>' );\r
\r
delete this._newAttrs;\r
};\r
(function(){});\r
\r
Node.prototype._afterActualCreate =\r
- X.Dom.DOM_W3C ? (function(){\r
+ X_UA_DOM.W3C ? (function(){\r
var elm = this._rawObject, xnodes, l, attrs, k, i;\r
\r
this._root = this.parent._root;\r
// ie の str から要素を作る場合、srcだけ イベント設定後ではないか?\r
X_EventDispatcher_toggleAllEvents( this, true );// イベントの復帰\r
}) :\r
- X.Dom.DOM_IE4 ? (function(){\r
+ X_UA_DOM.IE4 ? (function(){\r
var xnodes, i;\r
this._root = this.parent._root;\r
\r
(function(){});\r
\r
Node.prototype._actualRemove =\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
( function( isChild ){\r
var xnodes = this._xnodes,\r
elm = this._rawObject,\r
if( !X.UA.MacIE ){\r
!isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm );\r
} else {\r
- !isChild && elm.parentNode && elm.parentNode.tagName && X.Dom._fixed_remove( elm, this );\r
+ !isChild && elm.parentNode && elm.parentNode.tagName && X_TEMP._fixed_remove( elm, this );\r
};\r
}) :\r
- X.Dom.DOM_IE4 ?\r
+ X_UA_DOM.IE4 ?\r
( function( isChild ){\r
var xnodes = this._xnodes,\r
elm = this._rawObject || this._ie4getRawNode(),\r
if( !elm ) return;\r
this._xnodeType === 1 && X_EventDispatcher_toggleAllEvents( this, false );// イベントの退避\r
\r
- if( X.Dom.Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X.inObject( 'value', this._newAttrs ) ) ){\r
+ if( X.Dom.Attr.HAS_VALUE[ this._tag ] && ( !this._newAttrs || !X_Object_inObject( 'value', this._newAttrs ) ) ){\r
this._attrs.value = elm.value;\r
};\r
elm.removeAttribute( 'id' ); // ?\r
\r
// http://msdn.microsoft.com/ja-jp/library/ie/dn255104%28v=vs.85%29.aspx\r
var X_Dom_Event_devicePixelRatio = window.devicePixelRatio || ( window.screen.deviceXDPI / window.screen.logicalXDPI ),\r
- X_Dom_Event_convertMSPointerType = window.MSPointerEvent && {\r
- 2 : 'touch',\r
- 3 : 'pen',\r
- 4 : 'mouse'\r
- };\r
+ X_Dom_Event_convertMSPointerType = window.MSPointerEvent && [ 0, 0, 'touch', 'pen', 'mouse' ];/*{\r
+ '2' : 'touch',\r
+ '3' : 'pen',\r
+ '4' : 'mouse'\r
+ }; */\r
\r
if( !X.UA.IE || 9 <= X.UA.IE ){\r
X.Dom.Event = function( e, xnode ){\r
\r
X.Dom.Event.Rename = {};\r
X.Dom.Event.RenameTo = {};\r
-X.Dom.Event.toPointer = !X.Dom.EVENT_POINTER && ( X.Dom.EVENT_TOUCH ?\r
+X.Dom.Event.toPointer = !X_UA_HID.POINTER && ( X_UA_HID.TOUCH ?\r
{\r
touchdown : 'pointerdown',\r
mousedown : 'pointerdown',\r
X.Dom.Event.Rename[ 'pointercancel' ] = 'MSPointerCancel';\r
// http://msdn.microsoft.com/ja-jp/library/ie/dn304886%28v=vs.85%29.aspx\r
} else\r
- if( X.Dom.EVENT_TOUCH ){\r
+ if( X_UA_HID.TOUCH ){\r
X.Dom.Event.Rename[ 'pointerdown' ] = [ 'touchdown', 'mousedown' ];\r
X.Dom.Event.Rename[ 'pointerup' ] = [ 'touchup', 'mouseup' ];\r
X.Dom.Event.Rename[ 'pointermove' ] = [ 'touchmove', 'mousemove' ];\r
// http://shimax.cocolog-nifty.com/search/2006/09/safarijavascrip_c54d.html\r
\r
/* for ie9+/Mozilla/Opera9 */\r
-if( X.Dom.EVENT_W3C ){\r
+if( X_UA_EVENT.W3C ){\r
Node._document.listenOnce( 'DOMContentLoaded', X.Dom._init );\r
} else\r
if( 6 <= X.UA.IE && X.inHead ){\r
// http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html\r
if( X.UA.WebKit || X.UA.Safari < 3 ){ // sniff\r
X.Timer.add( 16, function(){\r
- if( !X.Dom._init ) return X.Callback.UN_LISTEN;\r
+ if( !X.Dom._init ) return X_Callback_UN_LISTEN;\r
if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X.Dom._init();\r
});\r
};\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'width' );\r
return this._rawObject.offsetWidth;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).offsetWidth;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'height' );\r
return this._rawObject.offsetHeight;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).offsetHeight;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'width' );\r
return this._rawObject.clientWidth;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).clientWidth;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'height' );\r
return this._rawObject.clientHeight;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).clientHeight;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'width' );\r
return this._rawObject.scrollWidth;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).scrollWidth;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'height' );\r
return this._rawObject.scrollHeight;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).scrollHeight;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'width' );\r
return this._rawObject.scrollLeft;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).scrollLeft;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'width' );\r
return this._rawObject.scrollTop;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).scrollTop;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'left' );\r
// this.css( X.Dom.Style.Unit.px, 'translateX' );\r
return this._rawObject.offsetLeft;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).offsetLeft;\r
} else {\r
\r
return 0;\r
};\r
if( this._state & X.Dom.State.DISPLAY_NONE ) return 0;\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
// this.css( X.Dom.Style.Unit.px, 'top' );\r
// this.css( X.Dom.Style.Unit.px, 'transisitonY' );\r
return this._rawObject.offsetTop;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
return ( this._rawObject || this._ie4getRawNode() ).offsetTop; \r
} else {\r
\r
return { x : 0, y : 0 };\r
};\r
\r
- if( X.Dom.DOM_W3C ){\r
+ if( X_UA_DOM.W3C ){\r
elm = this._rawObject;\r
} else\r
- if( X.Dom.DOM_IE4 ){\r
+ if( X_UA_DOM.IE4 ){\r
elm = this._rawObject || this._ie4getRawNode(); \r
} else {\r
\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
- if( elm = X.Dom.DOM_IE4 ? this._rawObject || this._ie4getRawNode() : this._rawObject ){\r
+ if( this._newAttrs && X_Object_inObject( nameOrObj, this._newAttrs ) ) return this._newAttrs[ nameOrObj ];\r
+ if( elm = X_UA_DOM.IE4 ? this._rawObject || this._ie4getRawNode() : this._rawObject ){\r
if( !attrs ) attrs = this._attrs = {};\r
return attrs[ nameOrObj ] = elm[ nameOrObj ]; // getAttribute( nameOrObj )?\r
};\r
};
return 0;
}) :
- X.Dom.DOM_W3C ?
+ X_UA_DOM.W3C ?
(function(){
var elm, v;
Node._body._updateTimerID && Node._body._startUpdate();
this._rawObject.removeChild( elm );
return this._fontSize = v;
}) :
- X.Dom.DOM_IE4 ?
+ X_UA_DOM.IE4 ?
(function(){
var font, vu, v, u, _v;
Node._body._updateTimerID && Node._body._startUpdate();
i = 0, args;\r
\r
if( 1 < arguments.length ){\r
- args = X.copyArray( arguments );\r
+ args = X_Object_cloneArray( arguments );\r
for( ; i < l; ++i ){\r
args[ 0 ] = i;\r
if( func.apply( this[ i ], args ) === false ) break;\r
scope = this.constructor === X.Dom.NodeList && this.length ? this : [ this.constructor === Node ? this : Node._body ],\r
parents = scope, // 探索元の親要素 XNodeList の場合あり\r
// TODO { title : true,,, }\r
- noLower = 'title id name class for action archive background cite classid codebase data href longdesc profile src usemap',// + X.Dom.DTD.ATTR_VAL_IS_URI.join( ' ' ),\r
+ noLower = 'title id name class for action archive background cite classid codebase data href longdesc profile src usemap',// + X_Dom_DTD_ATTR_VAL_IS_URI.join( ' ' ),\r
ARY_PUSH = Array.prototype.push,\r
ret = [], // 結果要素\r
root = X.Dom.Node.getRoot( scope[ 0 ] ),\r
CHARS : {\r
A:1,B:1,C:1,D:1,E:1,F:1,G:1,H:1,I:1,J:1,K:1,L:1,M:1,N:1,O:1,P:1,Q:1,R:1,S:1,T:1,U:1,V:1,W:1,X:1,Y:1,Z:1,\r
a:2,b:2,c:2,d:2,e:2,f:2,g:2,h:2,i:2,j:2,k:2,l:2,m:2,n:2,o:2,p:2,q:2,r:2,s:2,t:2,u:2,v:2,w:2,x:2,y:2,z:2,\r
- '0' : 4, '1' : 4, '2' : 4, '3' : 4, '4' : 4, '5' : 4, '6' : 4, '7' : 4, '8' : 4, '9' : 4,\r
+ // "0" : 4, "1" : 4, "2" : 4, "3" : 4, "4" : 4, "5" : 4, "6" : 4, "7" : 4, "8" : 4, "9" : 4, closure compiler で minify すると ie4 で error、eval使う\r
\r
'\t' : 16, '\r\n' : 16, '\r' : 16, '\n' : 16, '\f' : 16, '\b' : 16, ' ' : 16\r
},\r
whiteSpace : '\t\r\n\f\b ',\r
\r
// Empty Elements - HTML 4.01\r
- empty : X.Dom.DTD.EMPTY,\r
+ empty : X_Dom_DTD_EMPTY,\r
\r
// Block Elements - HTML 4.01\r
block : {ADDRESS:1,APPLET:1,BLOCKQUOTE:1,BUTTON:1,CENTER:1,DD:1,DEL:1,DIR:1,DIV:1,DL:1,DT:1,FIELDSET:1,FORM:1,FRAMESET:1,HR:1,IFRAME:1,INS:1,\r
var alphabets = X_Dom_Parser.CHARS,\r
whiteSpace = X_Dom_Parser.CHARS,\r
saveAttr = X_Dom_Parser.saveAttr,\r
- uri = X.Dom.DTD.ATTR_VAL_IS_URI,\r
+ uri = X_Dom_DTD_ATTR_VAL_IS_URI,\r
phase = 0,\r
l = html.length,\r
i = 0,\r
var xnode, img, remove, ret, run, memW, memH, w, h;\r
\r
if( X.Type.isString( XnodeOrImageElemOrSrc ) ){\r
- if( ret = X.Dom.Image._actualSize[ X.Dom.getAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;\r
+ if( ret = X.Dom.Image._actualSize[ X_URL_toAbsolutePath( XnodeOrImageElemOrSrc ) ] ) return ret;\r
\r
xnode = X.Dom.Node._systemNode.create(\r
'img',\r
\r
-X.Dom._useBuilder = true;\r
+X_TEMP.X_Dom_useBuilder = true;\r
\r
-X.Dom._isCleanupTarget = function( elm ){\r
+X_TEMP._isCleanupTarget = function( elm ){\r
var cname = ' ' + elm.className + ' ',\r
tag = ( elm.tagName || '' ).toUpperCase();\r
return cname.indexOf( ' skip-cleanup ' ) === -1 &&\r
- ( X.Dom.cleanupTagNames[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 );\r
+ ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 );\r
};\r
\r
if( X.UA.MacIE ){\r
\r
- X.Dom._fixed_remove = function( node, xnode ){\r
+ X_TEMP._fixed_remove = function( node, xnode ){\r
var parent = node.parentNode, l;\r
\r
node.nodeType !== 3 && alert( node.nodeType + '\n' + ( node.outerHTML || node.data ) );\r
} else\r
if( X.UA.Opera7 ){\r
\r
- X.Dom._fixed_remove = function( node ){\r
+ X_TEMP._fixed_remove = function( node ){\r
if( node.nodeType === 1 || node.nodeType === 3 ){\r
node.parentNode && node.parentNode.removeChild( node );\r
- } else {\r
+ //} else {\r
//node.data = '';\r
};\r
};\r
* IE6 には、「空の span エレメントに続く空白は無視される」という謎な癖があります。 \r
*/\r
X.Dom.listenOnce( X.Dom.Event.DOM_PRE_INIT,\r
- X.Dom.DOM_W3C ?\r
+ X_UA_DOM.W3C ?\r
(function(){\r
var r = Node._body,\r
body = r._rawObject,\r
//X.UA.MacIE && alert( body.innerHTML );\r
// cleanup tree \r
(function/*cleanUpTree*/( elm, skip, head ){\r
- var nodes = X.copyArray( elm.childNodes ),\r
+ var nodes = X_Object_cloneArray( elm.childNodes ),\r
i = 0,\r
l = nodes.length,\r
node, tag, textNode, content;\r
switch( node.nodeType ){\r
case 1 :\r
tag = node.tagName.toUpperCase();\r
- if( X.Dom.moveToHead[ tag ] ){\r
+ if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){\r
head = head || document.getElementsByTagName( 'head' )[ 0 ];\r
head.appendChild( node );\r
continue;\r
} else\r
- if( X.Dom._isCleanupTarget( node ) ){\r
+ if( X_TEMP._isCleanupTarget( node ) ){\r
elm.removeChild( node );\r
continue;\r
} else {\r
// pre タグ以下はスペースの置換は行わない\r
- node.childNodes && node.childNodes.length && /*cleanUpTree*/arguments.callee( node, skip || X.Dom.skipCleanupTagNames[ tag ], head );\r
+ node.childNodes && node.childNodes.length && /*cleanUpTree*/arguments.callee( node, skip || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ], head );\r
};\r
textNode = null;\r
break;\r
case 3 :\r
- content = skip ? node.data : X.Dom.cleanupWhiteSpace( node.data );\r
+ content = skip ? node.data : X_String_cleanupWhiteSpace( node.data );\r
//console.log( 'Delete space ' + node.data.length + ' => ' + content.length ); \r
if( !textNode && content !== ' ' && content.length ){\r
node.data = content;\r
if( !X.UA.Opera7 /*&& !X.UA.MacIE */ ){\r
elm.removeChild( node );\r
} else {\r
- X.Dom._fixed_remove( node );\r
+ X_TEMP._fixed_remove( node );\r
};\r
//++count;\r
};\r
} else {\r
// body の属性値の取得\r
if( X.UA.IE5678 ){\r
- html = body.innerHTML.split( X.Dom.CRLF ).join( '' ); // 不要な改行が入る\r
+ html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る\r
} else {\r
html = body.innerHTML;\r
};\r
xnodes.push.apply( xnodes, e.xnodes );\r
elmProgress.style.width = '100%';\r
\r
- X.Dom._asyncCreateTree( Node._body, body.childNodes, elmProgress );\r
+ X_TEMP.asyncCreateTree( Node._body, body.childNodes, elmProgress );\r
} );\r
\r
}) :\r
-X.Dom.DOM_IE4 ?\r
+X_UA_DOM.IE4 ?\r
(function(){\r
var r = Node._body,\r
body = r._rawObject,\r
xnodes.push.apply( xnodes, e.xnodes );\r
elmProgress.style.width = '100%';\r
\r
- X.Dom._asyncCreateTree( Node._body, body.childNodes || body.children, elmProgress );\r
+ X_TEMP.asyncCreateTree( Node._body, body.childNodes || body.children, elmProgress );\r
}\r
);\r
}) :\r
\r
}) );\r
\r
-X.Dom._asyncCreateTree = function ( parent, elems, elmProgress, async ){\r
- var xnodes = async ? 0 : X.copyArray( parent._xnodes ),\r
+X_TEMP.asyncCreateTree = function ( parent, elems, elmProgress, async ){\r
+ var xnodes = async ? 0 : X_Object_cloneArray( parent._xnodes ),\r
l = async ? 0 : xnodes.length,\r
stack = async ? async.stack : [],\r
done = async ? async.done : 0,\r
xnodes : xnodes,\r
l : l,\r
i : 0,\r
- elems : X.copyArray( elems ),\r
+ elems : X_Object_cloneArray( elems ),\r
j : 0,\r
xtext : null,\r
flag : 0\r
},\r
xnode, i, dive;\r
- //alert( 'X.Dom._asyncCreateTree' );\r
+ //alert( 'X_TEMP.asyncCreateTree' );\r
while( current || ( current = stack.pop() ) ){\r
i = current.i;\r
l = current.l;\r
xnodes = current.xnodes;\r
while( xnode = xnodes[ i ] ){ \r
//\r
- dive = X.Dom._bindElementToXnode( parent, xnode, current );\r
+ dive = X_TEMP.bindElementToXnode( parent, xnode, current );\r
\r
++i;\r
++done;\r
async.done = done;\r
};\r
//alert( 'koko?' );\r
- X.Timer.once( 0, X.Dom._asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\r
+ X.Timer.once( 0, X_TEMP.asyncCreateTree, [ null, null, elmProgress, async || { stack : stack, current : i < l && current, done : done } ] );\r
// progress\r
elmProgress.style.width = ( ( 1 - done / Node._chashe.length ) * 100 | 0 ) + '%';\r
return;\r
current = null;\r
};\r
// complete\r
- X.Dom.asyncDispatch( 0, { type : X.Dom.Event.DOM_BUILDER_COMPLETE } );\r
+ X.Dom.asyncDispatch( 0, X.Dom.Event.DOM_BUILDER_COMPLETE );\r
elmProgress.parentNode ? elmProgress.parentNode.removeChild( elmProgress ) : ( elmProgress.outerHTML = '' );\r
- delete X.Dom._asyncCreateTree;\r
- delete X.Dom._bindElementToXnode;\r
+ delete X_TEMP.asyncCreateTree;\r
+ delete X_TEMP.bindElementToXnode;\r
+ delete X_TEMP.X_Dom_useBuilder;\r
};\r
\r
-X.Dom._bindElementToXnode =\r
- X.Dom.DOM_W3C ?\r
+X_TEMP.bindElementToXnode =\r
+ X_UA_DOM.W3C ?\r
(function( parent, xnode, current ){\r
var elems = current.elems,\r
//j = current.j,\r
if( !X.UA.Opera7 && !X.UA.MacIE ){\r
elm.parentNode.removeChild( elm );\r
} else {\r
- X.Dom._fixed_remove( elm );\r
+ X_TEMP._fixed_remove( elm );\r
};\r
continue;\r
};\r
\r
if( xnode._xnodeType === 1 ){\r
if( elm.nodeType === 3 ){\r
- if( !( text = elm.data ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
+ if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
//alert( text.charCodeAt( 0 ) );\r
if( !X.UA.Opera7 && !X.UA.MacIE ){\r
elm.parentNode.removeChild( elm );\r
} else {\r
- X.Dom._fixed_remove( elm );\r
+ X_TEMP._fixed_remove( elm );\r
};\r
continue;\r
};\r
alert( '1:[' +parent._tag + '>' +xnode._tag + '] !== ' + elm.nodeType + '\n' + ( elm.data ) );\r
} else\r
- if( X.Dom.moveToHead[ tag ] ){\r
+ if( X_Dom_DTD_MOVE_TO_HEAD[ tag ] ){\r
alert( tag );\r
continue;\r
} else\r
xnode.attr( 'value', xnode.html() ).empty();\r
\r
} else\r
- //if( X.Dom._isCleanupTarget( elm ) ){// !xnode.hasClass( 'skip-cleanup' ) && ( X.Dom.cleanupTagNames[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){ // ie で body 内の script が2度よばれるのに対処\r
+ //if( X_TEMP._isCleanupTarget( elm ) ){// !xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){ // ie で body 内の script が2度よばれるのに対処\r
//alert( '[' +parent._tag + '>' + xnode._tag + '] remove ... ' );\r
//xnode.destroy();\r
//} else\r
\r
return {\r
me : xnode,\r
- xnodes : X.copyArray( xnode._xnodes ),\r
+ xnodes : X_Object_cloneArray( xnode._xnodes ),\r
xtext : null,\r
flag : 0,\r
i : 0,\r
l : xnode._xnodes.length,\r
- elems : X.copyArray( elm.childNodes ),\r
+ elems : X_Object_cloneArray( elm.childNodes ),\r
j : 0,\r
- skipCleanup : skipCleanup || X.Dom.skipCleanupTagNames[ tag ]\r
+ skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
};\r
};\r
// nochild\r
};\r
\r
if( elm.nodeType !== 3 ){\r
- if( !( text = xnode._text ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
+ if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\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
xnode._text = elm.data; // 正確\r
xnode._root = parent._root;\r
if( !skipCleanup ){\r
- if( !( text = xnode._text ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
+ if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
console.log( '[' +parent._tag + '>' + xnode._uid + '] destroy ... ' );\r
xnode.destroy();\r
};\r
xnode.parent = parent;\r
\r
if( xnode._xnodeType === 3 ){\r
- //alert( X.Dom.cleanupWhiteSpace( xnode._text ) );\r
+ //alert( X_String_cleanupWhiteSpace( xnode._text ) );\r
if( !skipCleanup ){\r
- if( !( text = xnode._text ) || ( text = X.Dom.cleanupWhiteSpace( text ) ) === ' ' ){\r
+ if( !( text = xnode._text ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){\r
xnode.destroy();\r
} else\r
if( xtext ){\r
xnode._rawObject = elm;\r
xnode._dirty = 0;\r
xnode._root = parent._root;\r
- //xnode._tag = X.Dom.DTD.TAG_FIX[ tag ] || tag;\r
- if( X.Dom._isCleanupTarget( elm ) ){ //!xnode.hasClass( 'skip-cleanup' ) && ( X.Dom.cleanupTagNames[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){\r
+ //xnode._tag = X_Dom_DTD_TAG_FIX[ tag ] || tag;\r
+ if( X_TEMP._isCleanupTarget( elm ) ){ //!xnode.hasClass( 'skip-cleanup' ) && ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || xnode.hasClass( 'cleanup-target' ) ) ){\r
xnode.destroy();\r
break;\r
};\r
if( xnode._xnodes && xnode._xnodes.length ){\r
return {\r
me : xnode,\r
- xnodes : X.copyArray( xnode._xnodes ),\r
+ xnodes : X_Object_cloneArray( xnode._xnodes ),\r
xtext : null,\r
flag : 0,\r
i : 0,\r
l : xnode._xnodes.length,\r
- elems : X.copyArray( elm.children ),\r
+ elems : X_Object_cloneArray( elm.children ),\r
j : 0,\r
- skipCleanup : skipCleanup || X.Dom.skipCleanupTagNames[ tag ]\r
+ skipCleanup : skipCleanup || X_Dom_DTD_SKIP_CLEANUP_TAGS[ tag ]\r
};\r
};\r
break;\r
var X_Pulgin_FLASH_VERSION =
!X.UA.IE && navigator.plugins[ 'Shockwave Flash' ] ?
parseFloat( navigator.plugins[ 'Shockwave Flash' ].version ) :
- X.UA.ActiveX ? (function(){
+ !X.UA.IE4 && !X.UA.IE5 && X.UA.ActiveX ? (function(){
var obj = eval( 'var a;try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}a' ),
ver = obj && obj.GetVariable( '$version' ).split( ' ' ).join( '.' );
return parseFloat( ver ) || 0;
X_Pulgin_UNITY_VERSION =
!X.UA.IE && navigator.plugins[ 'Unity Player' ] ?
parseFloat( navigator.plugins[ 'Unity Player' ].version ) :
- X.UA.ActiveX ? (function(){
+ !X.UA.IE4 && !X.UA.IE5 && X.UA.ActiveX ? (function(){
var obj = eval( 'var a;try{a=new ActiveXObject("UnityWebPlayer.UnityWebPlayer.1")}catch(e){}a' );
return obj ? parseFloat( obj.GetPluginVersion() ) : 0;
})() :
new ActiveXObject( 'Msxml2.XMLHTTP.5.0' ); // バージョン5.0 は bugfix が行われないので、3.0 か 6.0 を指定すべき\r
\r
*/\r
-var X_Net_XHR_W3C = window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),\r
+var X_Net_XHR_W3C = ( !X.UA.IE7 || !X_URL_IS_LOCAL ) && window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),\r
X_Net_XHR_X_DOMAIN = window[ 'XDomainRequest' ] && new XDomainRequest(),\r
X_Net_XHR_VERSION = 0,\r
X_Net_XHR_ACTIVE_X = !X.UA.IE4 && X.UA.IE < 8 && X.UA.ActiveX && ( new Function( [\r
\r
/*\r
* http://hakuhin.jp/as/import.html\r
- * ファイルの読み込みについて\r
+ * ファイルの読み込みについて(4 or 5 or 6+)\r
* http://hakuhin.jp/as/javascript.html\r
- * Flash から JavaScript にアクセスする\r
+ * Flash から JavaScript にアクセスする(3+)\r
*/\r
FLASH : false,\r
\r
\r
};\r
\r
-if( X.Net.XHR.W3C || X_Net_XHR_ACTIVE_X ){\r
+if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){\r
\r
X_NET_XHRWrapper = X.Class._override(\r
new X.EventDispatcher(),\r
X_NET_XHRWrapper.listen( [ 'readystatechange', 'error', 'abort', 'timeout' ] );\r
} else\r
if( X.UA.IE7 ){\r
- X_NET_XHRWrapper.listen( [ 'readystatechange', 'error' ] ); // ie7 ActiveX の場合、error は不可\r
+ if( X_URL_IS_LOCAL ){\r
+ X_NET_XHRWrapper.listen( 'readystatechange' ); // ie7 ActiveX の場合、error は不可\r
+ } else {\r
+ X_NET_XHRWrapper.listen( [ 'readystatechange', 'error' ] ); // ie7 ActiveX の場合、error は不可\r
+ };\r
} else\r
if( X_Net_XHR_ACTIVE_X ){ // win ie5-6\r
X_NET_XHRWrapper.listen( 'readystatechange' );\r
-X.Audio = {\r
+\r
+X.Audio = {\r
HTML5 : 1,\r
Flash : 2,\r
Silverlight : 3,\r
QuickTime : 7,\r
\r
create : function( sourceList, opt_option ){\r
- return new X_AudioProxy( X.Type.isArray( sourceList ) ? X.copyArray( sourceList ) : [ sourceList ], opt_option || {} );\r
+ return new X_AudioProxy( X.Type.isArray( sourceList ) ? X_Object_cloneArray( sourceList ) : [ sourceList ], opt_option || {} );\r
}\r
};\r
\r
break;\r
};\r
};\r
+\r
+\r
-/*\r
+\r
+/*\r
* original : uupaa-js HTML5Audio.js\r
* https://code.google.com/p/uupaa-js/source/browse/trunk/0.8/src/Audio/HTML5Audio.js?r=568\r
*/\r
\r
\r
\r
-\r
-\r
-\r
-/*\r
+\r
+/*\r
* original : uupaa-js SilverlightAudio.js\r
* https://code.google.com/p/uupaa-js/source/browse/trunk/0.8/src/Audio/SilverlightAudio.js?r=568\r
*\r
* Silverlight 4 → 5における不具合の状況\r
* http://www.slideshare.net/wakabayashiy/silverlight-4-5 \r
- *\r
+ * \r
+ * IE10以降でSilverlightでF5押したらフリーズする不具合と対処\r
+ * http://katsuyuzu.hatenablog.jp/entry/2014/01/11/003550\r
+ * \r
* SilverlLight5 ie6&7(ietester,winxp), ie8(winxp) で動作確認。firefox32 では動作しない。(4以下の方がよい?)\r
*/\r
\r
*/\r
this.proxy = proxy;\r
this._onload = 'XAudioSilverlightOnLoad';// + ( ++X_Audio_SLAudio_uid );\r
- this._callback = window[ this._onload ] = X.Callback.create( this, this.onSLReady, [ option.autoplay ] );\r
+ this._callback = window[ this._onload ] = X_Callback_create( this, this.onSLReady, [ option.autoplay ] );\r
this.xnodeObject = X.Dom.Node._body\r
.create( 'object', {\r
type : 'application/x-silverlight-2',\r
// SilverlightAudio.state\r
state : function(){ // @return Hash: { loop, error, paused, ended, source, duration }\r
return {\r
- loop: this._loop,\r
- error: this._error,\r
- paused: this._paused,\r
- ended: this._ended,\r
- source: this._source,\r
- duration: this._duration\r
+ loop : this._loop,\r
+ error : this._error,\r
+ paused : this._paused,\r
+ ended : this._ended,\r
+ source : this._source,\r
+ duration : this._duration\r
};\r
},\r
\r
X.UI.Attr = {\r
- AUTO : Number.POSITIVE_INFINITY,\r
+ AUTO : 1/0,//Number.POSITIVE_INFINITY,\r
FLOOR : new Function( 'v', 'return 0 <= v ? v | 0 : -( -v | 0 )' ),\r
\r
USER : {\r
},\r
\r
createAttrDef : function( base, defs ){\r
- var F = base ? X.cloneObject( base ) : {},\r
+ var F = base ? X_Object_clone( base ) : {},\r
z = base ? base._last : 0,\r
n = 1,\r
p, def;\r
};\r
\r
// raw pointing device event\r
-//if( X.Dom.EVENT_POINTER ){\r
+//if( X_UA_HID.POINTER ){\r
X.UI.Event.IdToName[ X.UI.Event._POINTER_DOWN ] = 'pointerdown';\r
X.UI.Event.IdToName[ X.UI.Event._POINTER_UP ] = 'pointerup';\r
X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ] = 'pointermove';\r
X.UI.Event.IdToName[ X.UI.Event._POINTER_CANCEL ] = 'pointercancel';\r
/*} else {\r
\r
- if( X.Dom.EVENT_TOUCH ){\r
+ if( X_UA_HID.TOUCH ){\r
X.UI.Event.IdToName[ X.UI.Event._TOUCH_START ] = 'touchstart';\r
X.UI.Event.IdToName[ X.UI.Event._TOUCH_END ] = 'touchend';\r
X.UI.Event.IdToName[ X.UI.Event._TOUCH_MOVE ] = 'touchmove';\r
Detection.register( Gestures[ name ] );\r
};\r
\r
- //if( X.Dom.EVENT_POINTER ){\r
+ //if( X_UA_HID.POINTER ){\r
Hammer.EVENT_TYPES_START = [ X.UI.Event._POINTER_DOWN ];\r
types = [ X.UI.Event._POINTER_MOVE, X.UI.Event._POINTER_UP, X.UI.Event._POINTER_CANCEL ];\r
/*} else\r
- if( X.Dom.EVENT_TOUCH ){\r
+ if( X_UA_HID.TOUCH ){\r
Hammer.EVENT_TYPES_START = [ X.UI.Event._TOUCH_START, X.UI.Event._MOUSE_DOWN ];\r
types = [ X.UI.Event._MOUSE_MOVE, X.UI.Event._MOUSE_UP, X.UI.Event._MOUSE_CANCEL,\r
X.UI.Event._TOUCH_MOVE, X.UI.Event._TOUCH_END, X.UI.Event._TOUCH_CANCEL ];\r
};\r
};\r
};\r
- f = X.Callback._classifyCallbackArgs( arg1, arg2, arg3 );\r
+ f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
if( !f.k ){\r
return X_EventDispatcher_listen.call( this, type, this.User, f );\r
} else\r
- if( f.k === X.Callback._FUNC_ONLY ){\r
+ if( f.k === X_Callback_FUNC_ONLY ){\r
return X_EventDispatcher_listen.call( this, type, this.User, f.f, f.s );\r
};\r
return X_EventDispatcher_listen.apply( this, arguments );\r
};\r
};\r
};\r
- f = X.Callback._classifyCallbackArgs( arg1, arg2, arg3 );\r
+ f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 );\r
if( !f.k ){\r
return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f ] );\r
} else\r
- if( f.k === X.Callback._FUNC_ONLY ){\r
+ if( f.k === X_Callback_FUNC_ONLY ){\r
return X.EventDispatcher.prototype.unlisten.apply( this, [ type, this.User, f.f, f.s ] );\r
};\r
return X.EventDispatcher.prototype.unlisten.apply( this, arguments );\r
// hover や rollover rollout のための move イベントの追加
// X.Dom.Event.activate, X.Dom.Event.deactivate ?
// mouseout, mouseover
- //if( X.Dom.EVENT_POINTER ){
+ //if( X_UA_HID.POINTER ){
this.xnodeInteractiveLayer.listen( X.UI.Event.IdToName[ X.UI.Event._POINTER_MOVE ], X.UI._eventRellay );
if( counter[ X.UI.Event._POINTER_MOVE ] ){
++counter[ X.UI.Event._POINTER_MOVE ];
'js/01_core/00_builtin.js',\r
'js/01_core/01_X.js',\r
'js/01_core/02_XUA.js',\r
- \r
+\r
'js/01_core/03_XType.js',\r
- 'js/01_core/04_XCallback.js',\r
- 'js/01_core/05_XClass.js',\r
- 'js/01_core/06_XEvent.js',\r
- 'js/01_core/07_XEventDispatcher.js', \r
- 'js/01_core/08_XTimer.js',\r
+ 'js/01_core/04_XObject.js',\r
+ 'js/01_core/05_XString.js',\r
+ 'js/01_core/06_XURL.js',\r
+ \r
+ 'js/01_core/10_XCallback.js',\r
+ 'js/01_core/11_XClass.js',\r
+ 'js/01_core/12_XEvent.js',\r
+ 'js/01_core/13_XEventDispatcher.js', \r
+ 'js/01_core/14_XTimer.js',\r
\r
- //'js/01_core/09_XSystem.js',\r
- 'js/01_core/10_XLogger.js',\r
- //'js/01_core/11_XView.js',\r
+ //'js/01_core/15_XSystem.js',\r
+ //'js/01_core/16_XView.js', \r
+ 'js/01_core/17_XLogger.js',\r
\r
\r
- 'js/02_dom/10_XDom.js',\r
- 'js/02_dom/11_XDomDTD.js',\r
- 'js/02_dom/12_XDomNode.js',\r
- 'js/02_dom/13_XDomEvent.js',\r
- 'js/02_dom/14_XDomBoxModel.js',\r
- 'js/02_dom/15_XDomAttr.js',\r
- 'js/02_dom/16_XDomStyle.js',\r
- 'js/02_dom/17_XDomNodeList.js',\r
- 'js/02_dom/18_XDomSelector.js',\r
- 'js/02_dom/19_XDomParser.js',\r
+ 'js/02_dom/00_XDom.js',\r
+ 'js/02_dom/01_XDomDTD.js',\r
+ 'js/02_dom/02_XDomNode.js',\r
+ 'js/02_dom/03_XDomEvent.js',\r
+ 'js/02_dom/04_XDomBoxModel.js',\r
+ 'js/02_dom/05_XDomAttr.js',\r
+ 'js/02_dom/06_XDomStyle.js',\r
+ 'js/02_dom/07_XDomNodeList.js',\r
+ 'js/02_dom/08_XDomSelector.js',\r
+ 'js/02_dom/09_XDomParser.js',\r
'js/02_dom/20_XDomImage.js', // remove\r
'js/02_dom/22_XDomBuilder.js',\r
\r
'js/05_net/00_XNet.js',\r
'js/05_net/01_XNetXHR.js',\r
'js/05_net/02_XNetJSONP.js',\r
- 'js/05_net/03_XNetForm.js',\r
+ //'js/05_net/03_XNetForm.js',\r
'js/05_net/04_XNetImage.js',\r
\r
'js/06_audio/00_XAudio.js',\r