};\r
return false;\r
}) :\r
- new Function( 'a,b', 'return a in b' );\r
+ new Function( 'a,b', 'return (""+a) in b' );\r
\r
\r
// ------------------------------------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
\r
/**\r
- * Object に関するメソッドを集めたものです。\r
+ * Object に関する関数を集めたものです。\r
* @namespace X.Object\r
* @alias X.Object\r
*/\r
return X_Object_deepCopy_( src, [], [], -1 );\r
};\r
\r
-function X_Object_deepCopy_( src, objSrc, objCopy, n ) {\r
+function X_Object_deepCopy_( src, objSrc, objCopy, n ){\r
var ret, i, k;\r
\r
if( !src ){ // 0, "", null, undefined, NaN, false\r
/**\r
- * Array に関するメソッドを集めたものです。\r
+ * Array に関する関数を集めたものです。\r
* @namespace X.Array\r
* @alias X.Array\r
*/\r
// ------------------------------------------------------------------------- //\r
\r
/**\r
+ * 文字列に関する関数を集めたものです。\r
* @namespace X.String\r
* @alias X.String\r
*/\r
// ------------------------------------------------------------------------- //\r
// --- implements ---------------------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
+/**\r
+ * 文字列を数値、NaN,Infinity,-Infinity,bool値、null,undefinedに変換します。1e3等には未対応です。\r
+ * @alias X.String.parse\r
+ * @param {string}\r
+ * @return {*}\r
+ */\r
function X_String_parse( v ){\r
var _v, n;\r
if( X_Type_isString( v ) ){\r
};\r
return v;\r
};\r
- \r
+\r
+/**\r
+ * <p>空白文字を半角スペースに変換します。\n\r,\t,\r,\n,\f,\b\r
+ * <p>2つ以上の連続する半角スペースを一つの半角スペースにします。\r
+ * @alias X.String.cleanupWhiteSpace\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
function X_String_cleanupWhiteSpace( text ){\r
var _ = ' ', __ = ' ', CRLF = X_String_CRLF;\r
//text.indexOf( CRLF ) !== -1 && ( text = text.split( CRLF ).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
+ //while( text.indexOf( __ ) !== -1 ){\r
+ // text = text.split( __ ).join( _ );\r
+ //};\r
+ //return text;\r
+ while( true ){\r
+ text = text.split( __ );\r
+ if( text.length < 2 ) return text.join( _ );\r
+ text = text.join( _ );\r
};\r
- return text;\r
};\r
\r
+/**\r
+ * 空白文字列を <br> に変換します。タブを &nbsp; 4つに変換します。\r
+ * @alias X.String.whiteSpaceToTag\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
function X_String_whiteSpaceToTag( text ){\r
if( text == null ) return '';\r
return text.toString()\r
.split( '\b' ).join( '' );\r
};\r
\r
+/**\r
+ * 一部の文字実体参照をデコードします。", &, <, >, \r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string} html文字列\r
+ */\r
function X_String_chrReferanceTo( str ){\r
if( str == null ) return '';\r
return str.toString()\r
.split( ' ' ).join( ' ' );\r
};\r
\r
+/**\r
+ * htmlタグで使われる文字を文字実体参照に変換します。", &, <, >, \r
+ * @alias X.String.chrReferanceTo\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
function X_String_toChrReferance( str ){\r
if( str == null ) return '';\r
str += '';\r
.split( ' ' ).join( ' ' );\r
};\r
\r
+/**\r
+ * htmlタグで使われる文字を文字実体参照に変換します。", &, <, >, \r
+ * @alias X.String.isNumberString\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
function X_String_isNumberString( v ){\r
var n = v - 0;\r
return '' + n === v || '' + n === '0' + v;\r
};\r
\r
-// https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+/**\r
+ * postdata のために object を文字列に変換します。\r
+ * https://github.com/jquery/jquery/blob/master/src/serialize.js\r
+ * @alias X.String.serialize\r
+ * @param {object}\r
+ * @param {boolean} [traditional=]\r
+ * @return {string}\r
+ */\r
function X_String_serialize( a, traditional ) {\r
var prefix,\r
list = [];\r
\r
// If an array was passed in, assume that it is an array of form elements.\r
- if ( X_Type_isArray( a ) && false ) {\r
+ //if ( X_Type_isArray( a ) && false ) {\r
// Serialize the form elements\r
//jQuery.each( a, function() {\r
// X_String_serialize_addParam( list, this.name, this.value );\r
//});\r
\r
- } else {\r
+ //} else {\r
// If traditional, encode the 'old' way (the way 1.3.2 or older\r
// did it), otherwise encode params recursively.\r
for ( prefix in a ) {\r
- X_String_serialize_buildParams( list, prefix, a[ prefix ], traditional );\r
+ X_String_serialize_buildParams( list, prefix, a[ prefix ], !!traditional );\r
}\r
- }\r
+ //}\r
\r
// Return the resulting serialization\r
return list.join( '&' ).split( '%20' ).join( '+' );\r
};\r
};\r
\r
-/*\r
- * 信頼できる文字列だけに対して json 文字列のパースを行います\r
- */\r
-function X_String_parseTrustedJsonString( jsonString ){\r
- return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
-};\r
\r
X_URL_IS_LOCAL = X_URL_IS_FILE || location.hostname === 'localhost' || location.hostname === '127.0.0.1',\r
\r
- X_URL_PARAMS = X_URL_ParamToObj( location.search.slice( 1 ) );\r
+ X_URL_PARAMS = X_URL_paramToObj( location.search.slice( 1 ) );\r
\r
// ------------------------------------------------------------------------- //\r
// --- interface ----------------------------------------------------------- //\r
* @alias X.URL\r
*/\r
X[ 'URL' ] = {\r
-\r
+ /**\r
+ * ベースurl\r
+ * @alias X.URL.BASE_URL\r
+ * @type {string}\r
+ */\r
'BASE_URL' : X_URL_BASE_URL,\r
- \r
+ /**\r
+ * ファイルプロトコルである。\r
+ * @alias X.URL.IS_FILE\r
+ * @type {boolean}\r
+ */\r
'IS_FILE' : X_URL_IS_FILE,\r
- \r
+ /**\r
+ * ローカルホストである。\r
+ * @alias X.URL.IS_LOCAL\r
+ * @type {boolean}\r
+ */\r
'IS_LOCAL' : X_URL_IS_LOCAL,\r
- \r
+ /**\r
+ * url パラメータを object に格納したもの。\r
+ * @alias X.URL.PARAMS\r
+ * @type {object}\r
+ */\r
'PARAMS' : X_URL_PARAMS,\r
- \r
+\r
'create' : X_URL_create,\r
\r
'toAbsolutePath' : X_URL_toAbsolutePath,\r
\r
+ 'objToParam' : X_URL_objToParam,\r
+ \r
'isSameDomain' : X_URL_isSameDomain,\r
\r
'isSameProtocol' : X_URL_isSameProtocol,\r
// ------------------------------------------------------------------------- //\r
// --- implements ---------------------------------------------------------- //\r
// ------------------------------------------------------------------------- //\r
-/*\r
- * original\r
- * AS3で相対パスを絶対パスに変換する\r
- * http://www.shin-go.net/motionlab/?p=449\r
+/**\r
+ * <p>絶対 url にして返します。\r
+ * <p>original AS3で相対パスを絶対パスに変換する http://www.shin-go.net/motionlab/?p=449\r
+ * @alias X.URL.toAbsolutePath\r
+ * @param {string}\r
+ * @return {string} url\r
*/\r
function X_URL_toAbsolutePath( path ){\r
var s = '/',\r
};\r
return [ _ary[ 0 ], ss, ary.join( s ), s, path ].join( '' );\r
};\r
-\r
+/**\r
+ * 同一ドメインか?\r
+ * @alias X.URL.isSameDomain\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
function X_URL_isSameDomain( path ){\r
path = X_URL_cleanup( X_URL_toAbsolutePath( path ) );\r
return path === X_URL_BASE_URL || path.indexOf( X_URL_BASE_URL + '/' ) === 0;\r
};\r
-\r
+/**\r
+ * 同一プロトコルか?\r
+ * @alias X.URL.isSameProtocol\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
function X_URL_isSameProtocol( path ){\r
return X_URL_toAbsolutePath( path ).indexOf( location.protocol ) === 0;\r
};\r
-\r
+/**\r
+ * ローカルリソースへのアクセスか?\r
+ * @alias X.URL.isLocal\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
function X_URL_isLocal( path ){\r
return X_URL_toAbsolutePath( path ).indexOf( 'file:' ) === 0;\r
};\r
-\r
+/**\r
+ * url パラメータとハッシュフラグメントを削除します。\r
+ * @alias X.URL.cleanup\r
+ * @param {string}\r
+ * @return {boolean}\r
+ */\r
function X_URL_cleanup( path ){\r
return path.split( '?' )[ 0 ].split( '#' )[ 0 ];\r
};\r
-\r
+/**\r
+ * 拡張子を返します。\r
+ * @alias X.URL.getEXT\r
+ * @param {string}\r
+ * @return {string}\r
+ */\r
function X_URL_getEXT( path ){\r
path = X_URL_cleanup( path ).split( '.' );\r
return path.length ? path.pop() : '';\r
};\r
-\r
+/**\r
+ * object を url パラメータにします。値が object の場合、データは失われます。\r
+ * @alias X.URL.objToParam\r
+ * @param {object}\r
+ * @return {string}\r
+ */\r
function X_URL_objToParam( data ){\r
var result = [], k, n = -1;\r
for( k in data ){\r
}\r
return result.join( '' );\r
};\r
-\r
+/**\r
+ * url にパラメータを加えた url を返します。\r
+ * @alias X.URL.create\r
+ * @param {string}\r
+ * @param {object}\r
+ * @return {string}\r
+ */\r
function X_URL_create( url, params ){\r
if( !X_Type_isObject( params ) || !( params = X_URL_objToParam( params ) ) ) return url;\r
\r
return url + ( url.indexOf( '?' ) !== -1 ? '&' : '?' ) + params;\r
};\r
\r
-function X_URL_ParamToObj( str ){\r
+function X_URL_paramToObj( str ){\r
var i = 0,\r
obj = {},\r
parts, l, pair, p;\r
};\r
return false;\r
};\r
+\r
if( listeners && !listeners[ X_LISTENERS_KILL_RESERVED ] && listeners[ X_EVENT_BEFORE_KILL_INSTANCE ] ){\r
X_Class_SEAL_KILLING[ X_Class_SEAL_KILLING.length ] = this;\r
\r
- if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_Callback_PREVENT_DEFAULT ){\r
+ if( this[ 'dispatch' ]( X_EVENT_BEFORE_KILL_INSTANCE ) & X_CALLBACK_PREVENT_DEFAULT ){\r
this[ 'dispatch' ]( X_EVENT_KILL_INSTANCE_CANCELED );\r
// BEFORE_KILL_INSTANCE, KILL_INSTANCE_CANCELED 内で kill() しても PREVENT_DEFAULT の場合はこれを無視する。\r
flag = true;\r
classDef.Constructor = props[ 'Constructor' ];\r
};\r
\r
- klass = X_Callback_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
+ klass = X_Closure_actualClosure( cbHash ); // TODO callbackHash を class定義の置き場所にしてしまう!なるほど…\r
cbHash.klass = klass;\r
klass[ 'superClassOf' ] = X_Class_superClassOf;\r
klass[ 'subClassOf' ] = X_Class_subClassOf;\r
* @example var SubClass = SuperClass.inherits( 'Sub', X_Class.FINAL, { ... } );\r
* @param {string} [displayName] クラスの名前\r
* @param {number} [classSetting=0] X_Class.POOL_OBJECT | X_Class.FINAL など\r
- * @param {__ClassBase__=} [privateClass] このクラスとペアで動作するシャドウクラス\r
* @param {object} [props={}] このクラスのメンバと関数。コンストラクタは Constructor と書くこと\r
* @return {__ClassBase__}\r
*/\r
-function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props */ ){\r
+function X_Class_inherits( /* displayName, classSetting, props */ ){\r
var args = X_Array_copy( arguments ),\r
params = [],\r
Super = this,\r
var raw = this[ '_rawObject' ];\r
\r
return raw.readyState === 'complete' || raw.readyState === 'loaded' ?\r
- this[ 'dispatch' ]( 'load' ) : X_Callback_PREVENT_DEFAULT, X_Callback_STOP_PROPAGATION;\r
+ this[ 'dispatch' ]( 'load' ) : X_CALLBACK_PREVENT_DEFAULT, X_CALLBACK_STOP_PROPAGATION;\r
},\r
\r
// X_UA[ 'Opera' ]\r
},\r
\r
contextmenu_proxy : function( e ){\r
- return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_Callback_NONE;\r
+ return e.button === 2 ? this[ 'dispatch' ]( 'contextmenu' ) : X_CALLBACK_NONE;\r
}\r
},\r
\r
X_EVENT_INIT = 7,\r
\r
// 公開イベント\r
- /* @const */\r
X_EVENT_XDOM_READY = 8,\r
\r
X_EVENT_COMPLETE = 9,\r
X_EVENT_CANCELED = 15,\r
X_EVENT_TIMEOUT = 16,\r
\r
- /* @const */\r
X_EVENT_BEFORE_KILL_INSTANCE = 17,\r
- /* @const */\r
X_EVENT_KILL_INSTANCE_CANCELED = 18,\r
- /* @const */\r
X_EVENT_KILL_INSTANCE = 19,\r
\r
X_EVENT_VIEW_ACTIVATE = 20,\r
\r
X_Event_last = 49;\r
\r
+// in_page_jump\r
+// on_screen_keyboard_show\r
+// on_screen_keyboard_hide\r
+\r
/**\r
* フレームワーク内で定義されたイベント。\r
* @namespace X.Event\r
- * @alias X.Event\r
- * @enum {number}\r
*/\r
-X[ 'Event' ] = {\r
+X[ 'Event' ] = /** @lends X.Event */\r
+{\r
/**\r
* X.ViewPort で発生する。DomContentLoaded に相当。document.body.innerHTML の内容から X.Node ツリーの作成が完了した。\r
* このイベント以降、X.Doc.create(), X.Doc.find() 等が可能になる。\r
*/\r
'BASE_FONT_RESIZED' : X_EVENT_BASE_FONT_RESIZED,\r
\r
-// in_page_jump\r
-// on_screen_keyboard_show\r
-// on_screen_keyboard_hide\r
-\r
/**\r
* X_System で発生する。このイベントで要素のサイズを取得すると無限ループに!\r
*/\r
*/\r
var X_Listeners_;\r
\r
-var /** @const */\r
- X_LISTENERS_ACTUAL_HANDLER = 0,\r
- /** @const */\r
+var X_LISTENERS_ACTUAL_HANDLER = 0,\r
X_LISTENERS_DISPATCHING = 1,\r
- /** @const */\r
X_LISTENERS_RESERVES = 2,\r
- /** @const */\r
X_LISTENERS_UNLISTENS = 3,\r
- /** @const */\r
X_LISTENERS_KILL_RESERVED = 4; // X.Event で、イベントIDを 5 から始めているので注意。\r
\r
\r
if( opt_arg1.kind ){\r
cbHash = opt_arg1;\r
} else {\r
- cbHash = X_Callback_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
+ cbHash = X_Closure_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
};\r
\r
if( ( unlistens = listeners[ X_LISTENERS_UNLISTENS ] ) && ( unlistens = unlistens[ opt_type ] ) ){\r
*/\r
function X_EventDispatcher_dispatch( e ){\r
var listeners = this[ '_listeners' ],\r
- ret = X_Callback_NONE,\r
+ ret = X_CALLBACK_NONE,\r
type = e[ 'type' ],\r
list, unlistens, i, l, args, f, r, sysOnly, timerID, k;\r
\r
- if( !listeners || !( list = listeners[ type || e ] ) ) return X_Callback_NONE;\r
+ if( !listeners || !( list = listeners[ type || e ] ) ) return X_CALLBACK_NONE;\r
\r
// 数値, 文字が渡された場合\r
if( !type ){\r
};\r
if( unlistens && unlistens.indexOf( f ) !== -1 ) continue;\r
\r
- r = X_Callback_proxyCallback( f, args || ( args = [ e ] ) ) || 0;\r
+ r = X_Closure_proxyCallback( f, args || ( args = [ e ] ) ) || 0;\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 = listeners[ X_LISTENERS_UNLISTENS ] || ( listeners[ X_LISTENERS_UNLISTENS ] = {} );\r
};\r
ret |= X_Type_isFinite( r ) ? r : 0;\r
\r
- if( ( r & X_Callback_STOP_NOW ) === X_Callback_STOP_NOW ){ // iOS では ( & ) 括弧が無いと判定を誤る\r
+ if( ( r & X_CALLBACK_STOP_NOW ) === X_CALLBACK_STOP_NOW ){ // iOS では ( & ) 括弧が無いと判定を誤る\r
sysOnly = true;\r
break;\r
};\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_Closure_classifyCallbackArgs( opt_arg1, opt_arg2, opt_arg3, this );\r
list[ list.length ] = f;\r
f.once = X_EventDispatcher_once;\r
f.lock = X_EventDispatcher_lock;\r
if( X_UA_EVENT.W3C ){\r
switch( that[ '_rawType' ] ){\r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
- list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw[ 'AddEventListener' ]( type, list.slcallback );\r
break;\r
\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
if( X_UA[ 'Opera' ] < 12 ){\r
// Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
- raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+ raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
break;\r
};\r
\r
type === 'animationiteration' || type === 'webkitAnimationIteration' ) ){\r
raw.addEventListener( type, X_EventDispatcher_iOSTransitionEndDispatch, false );\r
} else {\r
- f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
\r
if( raw.addEventListener ){\r
raw.addEventListener( type, f, false );\r
if( X_UA_EVENT.IE ){\r
switch( that[ '_rawType' ] ){ \r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
- list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw[ 'AddEventListener' ]( type, list.slcallback );\r
break; \r
\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
console.log( 'XHR addEvent ' + type );\r
// ie8- の XHR は window.event が更新されないため, eventType 毎に callback を指定する\r
- raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+ raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
break;\r
\r
default :\r
- f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ f = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
\r
if( raw.attachEvent ){\r
raw.attachEvent( 'on' + type, f );\r
switch( that[ '_rawType' ] ){\r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
// DOM0 で Silverlight ってあるの -> ie4 mobile?\r
- list.slcallback = X_Callback_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
+ list.slcallback = X_Closure_create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
list.sltoken = raw[ 'AddEventListener' ]( type, list.slcallback );\r
break; \r
\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
// ie4 mobile は XHR をサポート!\r
- raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );\r
+ raw[ 'on' + type ] = X_Closure_create( that, X_EventDispatcher_dispatch, [ type ] );\r
break;\r
\r
default :\r
- raw[ 'on' + type ] = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Callback_create( that, X_EventDispatcher_actualHandleEvent ) );\r
+ raw[ 'on' + type ] = that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] || ( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] = X_Closure_create( that, X_EventDispatcher_actualHandleEvent ) );\r
break;\r
};\r
}\r
\r
/*\r
* iOS の webkitTransitionEnd が連続して起こる場合、\r
- * コールバックの(that[ X_LISTENERS_ACTUAL_HANDLER ])クロージャ内の実際のコールバック(X_Callback_actualClosure:obj._)が\r
+ * コールバックの(that[ X_LISTENERS_ACTUAL_HANDLER ])クロージャ内の実際のコールバック(X_Closure_actualClosure:obj._)が\r
* 参照できていない問題に遭遇、、、iOS3.1.3 & iOS6.1.5 で確認\r
* animation も怪しい、、、\r
*/\r
switch( that[ '_rawType' ] ){\r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
- X_Callback_correct( list.slcallback );\r
+ X_Closure_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
break;\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
if( X_UA[ 'Opera' ] < 12 ){\r
// Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない\r
- X_Callback_correct( raw[ 'on' + type ] );\r
+ X_Closure_correct( raw[ 'on' + type ] );\r
raw[ 'on' + type ] = '';\r
break;\r
};\r
};\r
\r
if( !skip && that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] ){\r
- X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+ X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
};\r
};\r
switch( that[ '_rawType' ] ){\r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
- X_Callback_correct( list.slcallback );\r
+ X_Closure_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
break;\r
\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
- X_Callback_correct( raw[ 'on' + type ] );\r
+ X_Closure_correct( raw[ 'on' + type ] );\r
raw[ 'on' + type ] = X_emptyFunction;\r
raw[ 'on' + type ] = '';\r
console.log( 'XHR rmEvent ' + type );\r
};\r
\r
if( !skip ){\r
- X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+ X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
};\r
};\r
switch( that[ '_rawType' ] ){\r
case X_EventDispatcher_EVENT_TARGET_SILVER_LIGHT :\r
raw[ 'RemoveEventListener' ]( type, list.sltoken ); // token\r
- X_Callback_correct( list.slcallback );\r
+ X_Closure_correct( list.slcallback );\r
delete list.sltoken;\r
delete list.slcallback;\r
break;\r
\r
case X_EventDispatcher_EVENT_TARGET_XHR :\r
- X_Callback_correct( raw[ 'on' + type ] );\r
+ X_Closure_correct( raw[ 'on' + type ] );\r
raw[ 'on' + type ] = X_emptyFunction;\r
raw[ 'on' + type ] = '';\r
break;\r
raw[ 'on' + type ] = '';\r
\r
if( !skip ){\r
- X_Callback_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
+ X_Closure_correct( that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ] );\r
delete that[ '_listeners' ][ X_LISTENERS_ACTUAL_HANDLER ];\r
};\r
};\r
\r
ret = this[ 'dispatch' ]( new X_DomEvent( e, this, this[ '_rawObject' ] ) );\r
\r
- if( ret & X_Callback_STOP_PROPAGATION ){\r
+ if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
e.cancelBubble = true;\r
};\r
- if( ret & X_Callback_PREVENT_DEFAULT ){\r
+ if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
return e.returnValue = false;\r
};\r
//X_UA_EVENT.W3C || X_UA_EVENT.DOM0\r
(function( e ){\r
var ev = new X_DomEvent( e, this ),\r
- ret = X_Callback_NONE,\r
+ ret = X_CALLBACK_NONE,\r
i, l;\r
//console.log( '>>>>>>>>>> ' + e.type );\r
// touch event -> pointer\r
if( X_Type_isArray( ev ) ){\r
if( ev.length === 0 ){\r
// TouchEvent の後に発生した MouseEvent のキャンセル\r
- ret = X_Callback_STOP_PROPAGATION | X_Callback_PREVENT_DEFAULT;\r
+ ret = X_CALLBACK_STOP_PROPAGATION | X_CALLBACK_PREVENT_DEFAULT;\r
} else {\r
for( i = 0, l = ev.length; i < l; ++i ){\r
//console.log( 'handleEvent ' + ev[ i ].type );\r
ret = this[ 'dispatch' ]( ev );\r
};\r
\r
- if( ret & X_Callback_STOP_PROPAGATION ){\r
+ if( ret & X_CALLBACK_STOP_PROPAGATION ){\r
e.stopPropagation();\r
};\r
- if( ret & X_Callback_PREVENT_DEFAULT ){\r
+ if( ret & X_CALLBACK_PREVENT_DEFAULT ){\r
this[ '_tag' ] === 'A' && this[ '_rawObject' ].blur();\r
e.preventDefault();\r
if( X_UA[ 'WebKit' ] < 525.13 ){ // Safari3-\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_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+ f = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
if( !f.kind ) f = { func : f };\r
X_Timer_REQ_FRAME_LIST[ i ] = f;\r
return f.uid = ++X_Timer_uid;\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_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+ f = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
if( !f.kind ) f = { func : f };\r
X_Timer_REQ_FRAME_LIST[ i ] = f;\r
return f.uid = ++X_Timer_uid;\r
opt_count = 0;\r
};\r
\r
- hash = X_Callback_classifyCallbackArgs( args1, args2, args3 );\r
+ hash = X_Closure_classifyCallbackArgs( args1, args2, args3 );\r
if( !hash ) return -1; // dev only\r
\r
if( !hash.kind ) hash = { func : hash };\r
X_Timer_currentUID = q.uid;\r
\r
if( q.kind ){\r
- r = X_Callback_proxyCallback( q, [] );\r
+ r = X_Closure_proxyCallback( q, [] );\r
} else {\r
r = q.func();\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
if( X_Timer_removal && X_Timer_removal[ q.uid ] ) continue;\r
\r
if( q.kind ){\r
- X_Callback_proxyCallback( q, args || ( args = [ time ] ) );\r
+ X_Closure_proxyCallback( q, args || ( args = [ time ] ) );\r
} else {\r
q.func( time );\r
};\r
};\r
console.log( e.origin + ' ' + X.URL.BASE_URL );\r
\r
- return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+ return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
};\r
}\r
}\r
case 'beforeunload' :
// ie では a href='javascript' な要素でも beforeunload が起こる
href = e.target && e.target[ 'attr' ] && e.target[ 'attr' ]( 'href' );
- if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
+ if( href && href.indexOf && href.indexOf( 'javascript:' ) === 0 ) return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;
return X_ViewPort[ 'dispatch' ]( X_EVENT_BEFORE_UNLOAD );
* @alias X.ViewPort
*/
X[ 'ViewPort' ] = {
-
+ /**
+ *
+ * @alias X.ViewPort.listen
+ */
'listen' : function( type, arg1, arg2, arg3 ){
if( type <= X_ViewPort_readyState ){
/*
return X[ 'ViewPort' ];
},
-
+ /**
+ *
+ * @alias X.ViewPort.listenOnce
+ */
'listenOnce' : function( type, arg1, arg2, arg3 ){
if( type <= X_ViewPort_readyState ){
/*
return X[ 'ViewPort' ];
},
+ /**
+ *
+ * @alias X.ViewPort.unlisten
+ */
'unlisten' : function( type, arg1, arg2, arg3 ){
type && arg1 && X_ViewPort[ 'unlisten' ]( type, arg1, arg2, arg3 );
return X[ 'ViewPort' ];
},
+ /**
+ *
+ * @alias X.ViewPort.listening
+ */
'listening' : function( type, arg1, arg2, arg3 ){
return X_ViewPort[ 'listening' ]( type, arg1, arg2, arg3 );
},
-
- // hammer のテストファイルだけが使用
+
+ /**
+ * hammer のテストファイルだけが使用
+ * @alias X.ViewPort.asyncDispatch
+ */
'asyncDispatch' : function(){
return X_ViewPort[ 'asyncDispatch' ].apply( X_ViewPort, arguments );
},
},
+ /**
+ *
+ * @alias X.ViewPort.getSize
+ */
'getSize' : function(){
return [ X_ViewPort_width, X_ViewPort_height ];
},
//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollLeft == 'number' ? t : document.body).ScrollLeft;
//(((t = document.documentElement) || (t = document.body.parentNode)) && typeof t.ScrollTop == 'number' ? t : document.body).ScrollTop
+ /**
+ *
+ * @alias X.ViewPort.getDocumentSize
+ */
'getDocumentSize' : function(){
// Opera は互換モードでは document.body.scrollHeight、標準モードでは document.documentElement.scrollHeight でページの高さが取れる。と思ってたんだけど、例外があった。
// http://orera.g.hatena.ne.jp/edvakf/20100515/1273908051
];
},
+ /**
+ *
+ * @alias X.ViewPort.getScrollPosition
+ */
'getScrollPosition' :
window.pageXOffset !== undefined ?
( function(){
return[ X_ViewPort_scrollX = X_ViewPort_rootElement.scrollLeft || document.body.scrollLeft, X_ViewPort_scrollY = X_ViewPort_rootElement.scrollTop || document.body.scrollTop ];
} ),
+ /**
+ *
+ * @alias X.ViewPort.getScrollbarSize
+ */
'getScrollbarSize' : function(){
return [ X_ViewPort_vScrollbarSize, X_ViewPort_hScrollbarSize ];
},
+ /**
+ *
+ * @alias X.ViewPort.getBaseFontSize
+ */
'getBaseFontSize' : function(){
if( X_Node_updateTimerID ){
X_Node_startUpdate();
console.log( '-- resize : ' + X_Timer_now() );
!X_ViewPort_lock && ( X_ViewPort_lock = true ) && X_Timer_once( 100, X_ViewPort_detectFinishResizing );
- return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;
+ return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;
});
function X_ViewPort_detectFinishResizing(){
console.log( '> X_TEMP.onDomContentLoaded rs:' + X_ViewPort_readyState );
- if( X_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_Callback_UN_LISTEN;
+ if( X_EVENT_PRE_INIT <= X_ViewPort_readyState ) return X_CALLBACK_UN_LISTEN;
X_ViewPort_readyState = X_EVENT_PRE_INIT;
// DOMContentLoaded の無いブラウザで X_TEMP.onDomContentLoaded への参照が残り続けるのを回避
X_EventDispatcher_systemListen( X_ViewPort, [ 'focus', 'blur' ] );
};
- return X_Callback_UN_LISTEN;
+ return X_CALLBACK_UN_LISTEN;
};
function X_ViewPort_getWindowSize(){
// http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html
if( X_UA[ 'WebKit' ] || X_UA[ 'Safari' ] < 3 ){ // sniff
X_Timer_add( 16, function(){
- if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN;
+ if( !X_TEMP.onDomContentLoaded ) return X_CALLBACK_UN_LISTEN;
if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded();
});
};
};\r
if( !skip ){\r
this[ n ] = xnode;\r
- n = ++this.length; \r
+ n = ++this.length;\r
};\r
};\r
};\r
if( !this[ '_anime' ] || this[ '_anime' ].phase !== 2 ){\r
// ここで return してしまうと、view の更新イベント待ちの場合、アニメが止まる\r
X_Node_Anime_reserved && !X_Node_Anime_updateTimerID && !X_Node_updateTimerID && X_Node_Anime_reserveUpdate( X_Node_Anime_reserved = false );\r
- return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+ return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
};\r
\r
this[ '_anime' ].phase = 3;\r
// win+Gecko は不可\r
X_Node_Anime_updateAnimations( 0, X_Node_updateOnTransitionEnd );\r
\r
- return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+ return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
};\r
\r
function X_Node_Anime_releaseGPULayer(){\r
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.Util\r
+ */\r
X[ 'Util' ] = {};\r
-/*\r
+/**\r
* http://msdn.microsoft.com/ja-jp/library/ie/hh180174%28v=vs.85%29.aspx\r
* 孤立するとウィンドウ オブジェクトのプロパティが消去される\r
* \r
* http://qiita.com/sou/items/3380d4fa9b08b27bb387\r
* モバイルブラウザでの iframe の挙動(Mobile Safari, Chrome for Android)\r
+ * \r
+ * @alias X.Util.NinjaIframe\r
+ * @class 隠し iframe 機能を提供します。\r
+ * @constructor \r
+ * @constructs NinjaIframe\r
+ * @extends {Node}\r
*/\r
-\r
-// TODO Node.inherits\r
-X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
+var X_NinjaIframe = X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
'NinjaIframe',\r
{\r
autoRefresh : 0,\r
break;\r
};\r
\r
- return X_Callback_STOP_PROPAGATION;\r
+ return X_CALLBACK_STOP_PROPAGATION;\r
};\r
\r
function X_Util_NinjaIframe_writeToIframe( that ){\r
-\r
-\r
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.JSON\r
+ */\r
var X_JSON = X[ 'JSON' ] =\r
\r
// TODO ie8 は子フレームには JSON がいない…アクセス可能な親を探索\r
'parse' : JSON.parse\r
} :\r
\r
-window.JSON || {\r
+window.JSON ||\r
+{\r
'stringify' : X_JSON_stringify,\r
\r
- 'parse' : X_String_parseTrustedJsonString\r
+ 'parse' : X_JSON_parseTrustableString\r
};\r
\r
\r
-\r
+/**\r
+ * \r
+ * @alias X.JSON.stringify\r
+ */\r
function X_JSON_stringify( obj ){\r
var json = '', k, v;\r
for( k in obj ){\r
};\r
//console.log( json );\r
return '{' + json + '}';\r
-};
\ No newline at end of file
+};\r
+\r
+/**\r
+ * <p>JSON を持たないブラウザでは、eval を使用します。よって、信頼できる文字列だけに対してパースを行います。\r
+ * <p>url パラメータや window.name に対して使用する際は最新の注意を払います。\r
+ * @alias X.JSON.parse\r
+ */\r
+function X_JSON_parseTrustableString( jsonString ){\r
+ return window.JSON ? JSON.parse( jsonString ) : eval( '(' + jsonString + ')' );\r
+};\r
+\r
\r
var X_Util_Image_actualSize = {};\r
\r
+/**\r
+ * ユーティリティ関数とユーティリティクラス\r
+ * @namespace X.Util.Image\r
+ */\r
X[ 'Util' ][ 'Image' ] = { \r
'getActualDimension' : X_Util_Image_getActualDimension\r
\r
* Opacity不可 NetFront3.4\r
*/\r
\r
-/*\r
- * original\r
- * LICENSE: MIT\r
- * AUTHOR: uupaa.js@gmail.com\r
+/**\r
+ * <p>画像の実際のサイズを返します。\r
+ * <p>original\r
+ * <p> LICENSE: MIT\r
+ * <p> AUTHOR: uupaa.js@gmail.com\r
+ * @alias X.Util.Image.getActualDimension\r
+ * @param {Node|ImageElement|string}\r
+ * @return {array.<number>}\r
*/\r
function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){\r
var xnode, img, remove, ret, run, memW, memH, w, h;\r
\r
X[ 'XML' ] = XMLWrapper;\r
\r
+/**\r
+ * XML 探索用のラッパークラスです\r
+ * @alias X.XML\r
+ * @class XML 探索用のラッパークラスです\r
+ * @constructor\r
+ * @param {xml}\r
+ */\r
function XMLWrapper( xml ){\r
this._rawXML = xml;\r
};\r
};\r
\r
function XMLWrapper_val( queryString, type ){\r
- var attr_textContent = X.UA.IE < 9 || X.UA.Opera ? 'innerText' : X.UA.IE9 ? 'text' : 'textContent',\r
+ var attr_textContent = X_UA[ 'IE' ] < 9 || X_UA[ 'Opera' ] ? 'innerText' : X_UA[ 'IE9' ] ? 'text' : 'textContent',\r
wrapper, xml, v;\r
\r
switch( queryString ){\r
case 0 :\r
case 1 :\r
case 2 :\r
- if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ if( !( auth[ 'dispatch' ]( X_EVENT_NEED_AUTH ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
authSettings.lazyRequests = authSettings.lazyRequests || [];\r
authSettings.lazyRequests.indexOf( X_NET_currentQueue ) === -1 && authSettings.lazyRequests.push( X_NET_currentQueue );\r
};\r
itozyun 2014-10-30 20:55:41\r
basic 認証のかかったhtml を表示して、そのjsが xhr をすると Android1.6 では 401 error が返る。Android 2.3 では解決している。\r
Android1.6- の XHR で 401 エラーが返った場合は、iframe に xml を表示させてその内容を取ればサーバ側の対応無しでいけるかも?\r
+Android2 にも xdomain な GET が一回しかできない問題 gears 使えない?\r
\r
IE9 で 画像バイナリの取得 VBA をかましている\r
http://web.archive.org/web/20130808105151/http://gurimmer.lolipop.jp/daihakken/2012/05/22/javascriptajaxxmlhttprequest%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9Fajax%E3%81%AE%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89\r
headers[ 'Pragma' ] = 'no-cache';\r
headers[ 'Cache-Control' ] = 'no-cache';\r
headers[ 'If-Modified-Since' ] = 'Thu, 01 Jun 1970 00:00:00 GMT';\r
- } */ \r
+ } */\r
+ \r
// http://nakigao.sitemix.jp/blog/?p=2040\r
// json 取得時に SafariでHTTP/412のエラー。但し相手が audio の場合この指定があるとロードに失敗する。 iOS8.2, iOS7.1 では遭遇せず\r
if( this._dataType === 'json' ){\r
// eval() を使っているけど JSON の無いブラウザは XDomain な XHR はできないのでよしとする。\r
// XDomain な XHR の際は Flash 等で代替し、その中に Json parser も組み込む。\r
// http://d.hatena.ne.jp/sshi/20060904/p1\r
- if( !X_Type_isObject( data ) ) data = X_String_parseTrustedJsonString( data );\r
+ if( !X_Type_isObject( data ) ) data = X_JSON_parseTrustableString( data );\r
break;\r
case 'document' :\r
case 'xml' :\r
* http://developer.cybozu.co.jp/takesako/2007/06/opera_img-jsonp.html
*
* iframe を使った jsonp の読み込みエラー判定の記事、
- * JSONPのエラーを判断する は web archive でも観れない
- * http://d.hatena.ne.jp/yuushimizu/20090128/1233146321
+ * https://web.archive.org/web/20120917100043/http://d.hatena.ne.jp/yuushimizu/20090128/1233146321
* TODO JSONPの動的取得+エラー処理
* http://d.hatena.ne.jp/NeoCat/20110206/1296934235
*
// TODO iframe useful or not. TODO check dynamicIframe
// TODO file: では http: は使えない
-X[ 'Net' ][ 'JSONP' ] = {
- 'cb' : function( accessKey, jsonString, time, opt_json2FileSize ){
+X_TEMP.X_NET_JSONP_cb = function( accessKey, jsonString, time, opt_json2FileSize ){
if( accessKey !== X_NET_JSONP_ACCESS_KEY || !X_NET_JSONPWrapper._busy ) return;
X_NET_JSONPWrapper._busy = false;
X_NET_JSONPWrapper
[ 'asyncDispatch' ]( {
type : jsonString ? X_EVENT_SUCCESS : X_EVENT_ERROR,
- response : X_String_parseTrustedJsonString( jsonString )
+ response : X_JSON_parseTrustableString( jsonString )
} );
X_Net_JSONP_errorTimerID && X_Timer_remove( X_Net_JSONP_errorTimerID );
console.log( 'ms : ' + time + ' speed : ' + ( ( jsonString.length + ( opt_json2FileSize || 0 ) ) / time * 1000 ) + ' バイト/秒.' );
- }
-};
+ };
var X_NET_JSONP_ACCESS_KEY = Math.random(),
X_Net_JSONP_errorTimerID;
X_TEMP.X_NET_JSONP_init = function(){
- X_NET_JSONPWrapper = X_Class_override( X[ 'Util' ][ 'NinjaIframe' ](), X_TEMP.X_NET_JSONP_params );
+ X[ 'Net' ][ '__json_cb__' ] = X_TEMP.X_NET_JSONP_cb;
+
+ X_NET_JSONPWrapper = X_Class_override( X_NinjaIframe(), X_TEMP.X_NET_JSONP_params );
+ delete X_TEMP.X_NET_JSONP_cb;
delete X_TEMP.X_NET_JSONP_init;
delete X_TEMP.X_NET_JSONP_params;
url = X_URL_create( url, params );
- if( !callback && !( callback = X_URL_ParamToObj( url.split( '?' )[ 1 ] )[ 'callback' ] ) ){
+ if( !callback && !( callback = X_URL_paramToObj( url.split( '?' )[ 1 ] )[ 'callback' ] ) ){
url += '&callback=cb';
callback = 'cb';
};
'<script>',
'onunload=function(){im.onload=im.onerror=""};',
'nw=+new Date;',
- 'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw', window[ 'JSON' ] ? json2FileSize : 0 ,');nw=0}}',
+ 'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw', window[ 'JSON' ] ? json2FileSize : 0 ,');nw=0}}',
'</script>',
'<script', charset, ' id="jp"></script>',
'<img id="im" src="', url, '" onload="jp.src=im.src" onerror="jp.src=im.src">'
'<script>',
'onunload=function(){clearTimeout(id)};',
'nw=0;', // なぜか必要,,,
- 'function ', callback, '(o){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',parent.X.JSON.stringify(o),-nw)}',
+ 'function ', callback, '(o){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',parent.X.JSON.stringify(o),-nw)}',
//'function ', callback, '(o){if(nw){nw-=+new Date;postMessage("', X_NET_JSONP_SEND_MSG_KEY,' "+nw+"|"+parent.JSON.stringify(o).replace(/\\\\u([a-fA-F0-9]{4})/g,function(a,b){return String.fromCharCode(parseInt(b,16))}),"*");nw=0}}',
'function tm(){jp.src="', url ,'";nw=+new Date}',
'id=setTimeout(tm,16);',
/* 以下のコードは XP ie8 では動くけど、win8 IE11(8モード)で動かない 開発の便宜を取って,setTimeout を挟む
'<script>',
- 'function ', callback, '(o){window.parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',window.parent.JSON.stringify(o))}',
+ 'function ', callback, '(o){window.parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',window.parent.JSON.stringify(o))}',
'</script>',
'<script src="', url, '"></script>' */
];
'<script', charset, ' id="jp"></script>',
'<script>',
'onunload=function(){clearTimeout(id)};',
- 'function ', callback, '(o){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw)}',
+ 'function ', callback, '(o){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw)}',
'function tm(){jp.src="', url ,'";nw=+new Date}',
'id=setTimeout(tm,16);',
'</script>'
html = [
'<script>',
'nw=+new Date;',
- 'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw);nw=0}}',
+ 'function ', callback, '(o){if(nw){nw-=+new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw);nw=0}}',
//'function ', callback, '(o){if(nw){nw-=+new Date;parent.postMessage("', X_NET_JSONP_SEND_MSG_KEY,' "+nw+"|"+JSON.stringify(o),"', location.origin, '");nw=0}}',
'</script>',
'<script', charset, ' src="', url, '"></script>'
'<script', charset, ' id="jp"></script>',
'<script>',
'onunload=function(){clearTimeout(id)};',
- 'function ', callback, '(o){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
+ 'function ', callback, '(o){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
'function t1(){document.all.jn.src="', json2Path ,'";id=setTimeout("t2()",16);nw=+new Date}',
'id=setTimeout("t1()",16);',
'function t2(){if(window.JSON){document.all.jp.src="', url ,'"}else{id=setTimeout("t2()",16)}}',
'<script', charset, ' id="jp"></script>',
'<script>',
'onunload=function(){clearTimeout(id)};',
- 'function ', callback, '(o){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
+ 'function ', callback, '(o){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw-16,', json2FileSize, ')}',
'function t1(){jn.src="', json2Path ,'";id=setTimeout(t2,16);nw=+new Date}',
'id=setTimeout(t1,16);',
'function t2(){if(window.JSON){jp.src="', url ,'"}else{id=setTimeout(t2,16)}}',
} else {
html = [
'<script>',
- 'function ', callback, '(o){if(nw){nw-=new Date;parent.X.Net.JSONP.cb(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw,', json2FileSize, ');nw=0}}',
+ 'function ', callback, '(o){if(nw){nw-=new Date;parent.X.Net.__json_cb__(' + X_NET_JSONP_ACCESS_KEY + ',JSON.stringify(o),-nw,', json2FileSize, ');nw=0}}',
'nw=+new Date;',
'</script>',
'<script src="', json2Path, '"></script>',
X_NET_JSONPWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR );
break;
};
- return X_Callback_UN_LISTEN;
+ return X_CALLBACK_UN_LISTEN;
};
//{+netform"<form>によるGETとPOST"(動的に生成したフォームによるGETとPOST。)[+net,+ninjaiframe]\r
\r
-X[ 'Net' ][ 'Form' ] = {\r
- // 隠し iframe 使用の可否\r
-};\r
-\r
var X_NET_Form_errorTimerID, X_Net_Form_onloadCount = 0;\r
\r
X_TEMP.X_NET_Form_init = function(){\r
- X_NET_FormWrapper = X_Class_override( X[ 'Util' ][ 'NinjaIframe' ](), X_TEMP.X_NET_Form_params );\r
+ X_NET_FormWrapper = X_Class_override( X_NinjaIframe(), X_TEMP.X_NET_Form_params );\r
\r
delete X_TEMP.X_NET_Form_init;\r
delete X_TEMP.X_NET_Form_params;\r
X_NET_FormWrapper[ 'asyncDispatch' ]( X_EVENT_ERROR );\r
break;\r
};\r
- return X_Callback_UN_LISTEN;\r
+ return X_CALLBACK_UN_LISTEN;\r
};\r
\r
//}+netform
\ No newline at end of file
iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_' + X_NET_GIMR_isReceiveBatches;\r
// speedup\r
X_NET_GIMR_timerID = X_Timer_add( 16, 0, this, X_NET_GIMR_detectImageOverIframe );\r
- return X_Callback_UN_LISTEN;\r
+ return X_CALLBACK_UN_LISTEN;\r
} else {\r
X_NET_GIMR_receivedString = X_Net_GIMR_decodeLocationHash( ret );\r
};\r
\r
- X_NET_GIMRWrapper[ 'asyncDispatch' ]( X_String_parseTrustedJsonString( X_NET_GIMR_receivedString ) );\r
+ X_NET_GIMRWrapper[ 'asyncDispatch' ]( X_JSON_parseTrustableString( X_NET_GIMR_receivedString ) );\r
X_NET_GIMR_receivedString = '';\r
//console.dir( e );\r
\r
X_NET_GIMR_lastHashString = '';\r
iwin.location.href = X_NET_GIMR_GADGET_URL + '#_recived_';\r
\r
- return X_Callback_UN_LISTEN;\r
+ return X_CALLBACK_UN_LISTEN;\r
};\r
++X_NET_GIMR_phase;\r
};\r
} else
if( search = X_NET_OAUTH2_detection( X_NET_OAUTH2_authorizationWindow ) ){
pair = X_Pair_get( this );
- pair.code = X_URL_ParamToObj( search.slice( 1 ) )[ 'code' ];
+ pair.code = X_URL_paramToObj( search.slice( 1 ) )[ 'code' ];
if( 9 < X_UA[ 'IEHost' ] ){
X_NET_OAUTH2_authorizationWindow.close();
X_NET_OAUTH2_authorizationWindow = null;
X_NET_OAUTH2_authorizationTimerID = 0;
- return X_Callback_UN_LISTEN;
+ return X_CALLBACK_UN_LISTEN;
};
};
} else
if( X_Audio_WebAudio_context.decodeAudioData ){
X_Audio_WebAudio_context.decodeAudioData( e.response,
- this.onDecodeSuccess = X_Callback_create( this, this._onDecodeSuccess ),
- this.onDecodeError = X_Callback_create( this, this._onDecodeError ) );
+ this.onDecodeSuccess = X_Closure_create( this, this._onDecodeSuccess ),
+ this.onDecodeError = X_Closure_create( this, this._onDecodeError ) );
} else {
this._onDecodeSuccess( X_Audio_WebAudio_context.createBuffer( e.response, false ) );
};
},
_onDecodeComplete : function(){
- X_Callback_correct( this.onDecodeSuccess );
+ X_Closure_correct( this.onDecodeSuccess );
delete this.onDecodeSuccess;
- X_Callback_correct( this.onDecodeError );
+ X_Closure_correct( this.onDecodeError );
delete this.onDecodeError;
},
this.playing && this.actualPause();
this.source && this._sourceDispose();
- this._onended && X_Callback_correct( this._onended );
+ this._onended && X_Closure_correct( this._onended );
this.gainNode && this.gainNode.disconnect();
},
// 破棄された X.Callback が呼ばれて、obj.proxy() でエラーになる。Firefox では、onended は使わない
if( false && this.source.onended !== undefined ){
//console.log( '> use onended' );
- this.source.onended = this._onended || ( this._onended = X_Callback_create( this, this._onEnded ) );
+ this.source.onended = this._onended || ( this._onended = X_Closure_create( this, this._onEnded ) );
} else {
this._timerID && X_Timer_remove( this._timerID );
this._timerID = X_Timer_once( end - begin, this, this._onEnded );
_onInterval : function(){
if( !this.playing ){
delete this._interval;
- return X_Callback_UN_LISTEN;
+ return X_CALLBACK_UN_LISTEN;
};
this.target[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );
},
};
if( this.autoLoop ){
- if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){
this.looped = true;
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );
this.actualPlay();
\r
case 'ended' :\r
if( !this._closed && this.autoLoop ){\r
- if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
this.looped = true;\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
this.actualPlay();\r
console.log( end + ' / ' + now );\r
if( 0 + end <= 0 + now ){ // なぜか iem9 で必要,,,\r
if( this.autoLoop ){\r
- if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
this.looped = true;\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
this.actualPlay();\r
this._source = source;\r
// X.Audio._slOnload_ は不可\r
this._onload = 'XAudioSilverlightOnLoad' + ( ++X_Audio_SLAudio_uid );\r
- this._callback = window[ this._onload ] = X_Callback_create( this, this.onSLReady );\r
+ this._callback = window[ this._onload ] = X_Closure_create( this, this.onSLReady );\r
this.xnodeObject = X_Node_body\r
[ 'create' ]( 'object', {\r
type : 'application/x-silverlight-2',\r
\r
window[ this._onload ] = null;\r
delete this._onload;\r
- X_Callback_correct( this._callback );\r
+ X_Closure_correct( this._callback );\r
delete this._callback;\r
\r
sender[ 'children' ][ 'add' ](\r
// window への delete に ie5 は対応しないが、そもそも ie5 は Silverlight に非対応\r
window[ this._onload ] = null;\r
delete this._onload;\r
- X_Callback_correct( this._callback );\r
+ X_Closure_correct( this._callback );\r
};\r
this.xnodeObject[ 'kill' ]();\r
break;\r
_onInterval : function(){\r
if( !this.playing ){\r
delete this._interval;\r
- return X_Callback_UN_LISTEN;\r
+ return X_CALLBACK_UN_LISTEN;\r
};\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_PLAYING );\r
},\r
\r
if( this.autoLoop ){\r
console.log( '========= loop?' );\r
- if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_Callback_PREVENT_DEFAULT ) ){\r
+ if( !( this.target[ 'dispatch' ]( X_EVENT_MEDIA_BEFORE_LOOP ) & X_CALLBACK_PREVENT_DEFAULT ) ){\r
console.log( '========== loopした' );\r
this.looped = true;\r
this.target[ 'dispatch' ]( X_EVENT_MEDIA_LOOPED );\r
},\r
k, i, v, track; \r
\r
- if( X_Audio_Sprite_instance ){\r
- X_Audio_Sprite_instance[ 'kill' ]();\r
- } else {\r
+ if( !X_Audio_Sprite_instance ){\r
X_Audio_Sprite_instance = X_Class_override( X_EventDispatcher(), X_Audio_Sprite_members );\r
X_ViewPort[ 'listen' ]( [ X_EVENT_VIEW_ACTIVATE, X_EVENT_VIEW_DEACTIVATE ], X_Audio_Sprite_instance, X_Audio_Sprite_handleEvent );\r
};\r
};\r
};\r
\r
- return X_Callback_STOP_NOW;\r
+ return X_CALLBACK_STOP_NOW;\r
\r
case X_EVENT_BACKEND_NONE :\r
this[ 'unlisten' ]( X_EVENT_BACKEND_READY, this, X_AudioSprite_backendHandler )\r
[ 'asyncDispatch' ]( X_EVENT_BACKEND_NONE );\r
- return X_Callback_STOP_NOW;\r
+ return X_CALLBACK_STOP_NOW;\r
\r
case X_EVENT_READY :\r
console.log( 'X.AudioSprite - Ready!' );\r
// onmouseup, but when touchend has been fired we do nothing.\r
// this is for touchdevices which also fire a mouseup on touchend\r
if( type & MOUSE && touch_triggered ){\r
- return X_Callback_STOP_NOW | X_Callback_PREVENT_DEFAULT;\r
+ return X_CALLBACK_STOP_NOW | X_CALLBACK_PREVENT_DEFAULT;\r
} else\r
// mousebutton must be down or a touch event\r
if( type & TOUCH || //sourceEventType.match(/touch/) || // touch events are always on screen\r
// only when the instance options have enabled this gesture\r
active[ gesture.name ] &&\r
// if a handler returns false, we stop with the detection\r
- ( ret |= ( gesture.handler( e, hammer ) || X_Callback_NONE ) );\r
+ ( ret |= ( gesture.handler( e, hammer ) || X_CALLBACK_NONE ) );\r
};\r
\r
// endevent, but not the last touch, so dont stop\r
};\r
};\r
\r
- arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
+ arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Closure_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
if( !f.kind ){\r
return X_EventDispatcher_listen.call( this, type, this.User, f );\r
} else\r
- if( f.kind === X_Callback_FUNC_ONLY ){\r
+ if( f.kind === X_CLOSURE_FUNC_ONLY ){\r
return X_EventDispatcher_listen.call( this, type, this.User, f.func, f.supplement );\r
};\r
return X_EventDispatcher_listen.apply( this, arguments );\r
};\r
};\r
};\r
- arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Callback_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
+ arg1 && arg1.kind ? ( f = arg1 ) : ( f = X_Closure_classifyCallbackArgs( arg1, arg2, arg3 ) );\r
if( !f.kind ){\r
return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f ] );\r
} else\r
- if( f.kind === X_Callback_FUNC_ONLY ){\r
+ if( f.kind === X_CLOSURE_FUNC_ONLY ){\r
return X_EventDispatcher_unlisten.apply( this, [ type, this.User, f.func, f.supplement ] );\r
};\r
return X_EventDispatcher_unlisten.apply( this, arguments );\r
type = e.type || e;\r
\r
// TODO captureEvent PointerEvent\r
- if( ret & X_Callback_CAPTURE_POINTER && !this.hitChildData && XUI_Event._POINTER_MOVE === type ){\r
+ if( ret & X_CALLBACK_CAPTURE_POINTER && !this.hitChildData && XUI_Event._POINTER_MOVE === type ){\r
this.rootData.monopolyNodeData = this;\r
return ret;\r
};\r
this.rootData.monopolyNodeData = null;\r
- if( xve._START_BUBLEUP < type && this.parentData && !( ret & X_Callback_STOP_PROPAGATION ) && !( ret & X_Callback_STOP_NOW ) ) return this.parentData[ 'dispatch' ]( e );\r
+ if( xve._START_BUBLEUP < type && this.parentData && !( ret & X_CALLBACK_STOP_PROPAGATION ) && !( ret & X_CALLBACK_STOP_NOW ) ) return this.parentData[ 'dispatch' ]( e );\r
return ret;\r
},\r
\r
for( i = 0, l = list.length; i < l; ++i ){\r
f = list[ i ];\r
switch( f.kind ){\r
- case X_Callback_THIS_FUNC :\r
+ case X_CLOSURE_THIS_FUNC :\r
if( f.lock ){\r
X_EventDispatcher_systemListen( newNode, type, f.context === this ? newNode : f.context, f.func, f.supplement );\r
} else {\r
newNode[ f.once ? 'listenOnce' : 'listen' ]( type, f.context === this ? newNode : f.context, f.func, f.supplement );\r
};\r
break;\r
- case X_Callback_HANDLEEVENT :\r
+ case X_CLOSURE_HANDLEEVENT :\r
if( f.lock ){\r
X_EventDispatcher_systemListen( newNode, type, f.context === this ? newNode : f.context, f.supplement );\r
} else {\r
};\r
break;\r
/*\r
- case X_Callback_FUNC_ONLY :\r
+ case X_CLOSURE_FUNC_ONLY :\r
if( f.lock ){\r
X_EventDispatcher_systemListen( newNode, type, f.func, f.supplement );\r
} else {\r
function X_UI_ScrollBox_onLayoutBefore( e ){\r
if( e[ 'cancelable' ] && this.isInTransition && X_Node_Anime_translateZ ){\r
this[ 'listenOnce' ]( XUI_Event.SCROLL_END, X_UI_rootData, X_UI_rootData.calculate );\r
- return X_Callback_PREVENT_DEFAULT;\r
+ return X_CALLBACK_PREVENT_DEFAULT;\r
};\r
this.scrollXRatio = this.scrollX ? this.scrollXMax / this.scrollX : 0;\r
this.scrollYRatio = this.scrollY ? this.scrollYMax / this.scrollY : 0;\r
this.xnodeSlider.stop();\r
this.isInTransition = false;\r
- return X_Callback_NONE;\r
+ return X_CALLBACK_NONE;\r
};\r
\r
function X_UI_ScrollBox_onLayoutComplete( e ){\r
};\r
\r
function X_UI_ScrollBox_onStart( e ){\r
- var ret = X_Callback_NONE;\r
+ var ret = X_CALLBACK_NONE;\r
\r
// React to left mouse button only\r
if( e.pointerType === 'mouse' && e.button !== 0 ){\r
this[ 'listen' ]( XUI_Event._POINTER_MOVE, this, X_UI_ScrollBox_onMove );\r
this[ 'listen' ]( [ XUI_Event._POINTER_UP, XUI_Event._POINTER_CANCEL ], this, X_UI_ScrollBox_onEnd );\r
\r
- return ret | X_Callback_PREVENT_DEFAULT;\r
+ return ret | X_CALLBACK_PREVENT_DEFAULT;\r
};\r
\r
function X_UI_ScrollBox_onMove( e ){\r
- var ret = X_Callback_NONE,\r
+ var ret = X_CALLBACK_NONE,\r
deltaX, deltaY, timestamp,\r
newX, newY,\r
absDistX, absDistY;\r
this.startY = this.scrollY;\r
};\r
// イベントの拘束\r
- return ret | X_Callback_PREVENT_DEFAULT | X_Callback_CAPTURE_POINTER;\r
+ return ret | X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_CAPTURE_POINTER;\r
};\r
\r
function X_UI_ScrollBox_onEnd( e ){\r
- var ret = X_Callback_NONE,\r
+ var ret = X_CALLBACK_NONE,\r
time = 0,\r
easing = '',\r
newX, newY,\r
\r
function X_UI_ScrollBox_onAnimeEnd( e ){\r
if( e.target !== this.xnodeSlider || !this.isInTransition ){\r
- return X_Callback_NONE;\r
+ return X_CALLBACK_NONE;\r
};\r
if( !X_UI_ScrollBox_resetPosition( this, this.bounceTime ) ){\r
this.isInTransition = false;\r
this[ 'dispatch' ]( XUI_Event.SCROLL_END );\r
};\r
- return X_Callback_NONE;\r
+ return X_CALLBACK_NONE;\r
};\r
\r
function X_UI_ScrollBox_momentum( current, start, time, lowerMargin, wrapperSize, deceleration ){\r
i = 0,
data = X_UI_rootData,
sysOnly = false,
- ret = X_Callback_NONE,
+ ret = X_CALLBACK_NONE,
list, parent, _ret;
// mouseup で alert を出すと mouseleave が発生、ということでイベント中のイベント発火を禁止
e.type = type;
- if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_Callback_CAPTURE_POINTER ){
+ if( data && ( data = data.monopolyNodeData ) && ( ret = data[ 'dispatch' ]( e ) ) & X_CALLBACK_CAPTURE_POINTER ){
X_UI_eventBusy = false;
- return ret | X_Callback_PREVENT_DEFAULT;
+ return ret | X_CALLBACK_PREVENT_DEFAULT;
};
list = X_UI_rootData.hoverList;
while( data ){
_ret = data[ 'dispatch' ]( e, sysOnly );
ret |= _ret;
- if( _ret & X_Callback_CAPTURE_POINTER || _ret & X_Callback_STOP_PROPAGATION || _ret & X_Callback_STOP_NOW ) break; // sysOnly = true;
+ if( _ret & X_CALLBACK_CAPTURE_POINTER || _ret & X_CALLBACK_STOP_PROPAGATION || _ret & X_CALLBACK_STOP_NOW ) break; // sysOnly = true;
data = data.parentData;
};
};
};
X_UI_eventBusy = false;
- return ret | X_Callback_PREVENT_DEFAULT;
+ return ret | X_CALLBACK_PREVENT_DEFAULT;
};
/*
var cancelable = !e || ( e.type !== X_EVENT_VIEW_RESIZED && e.type !== X_EVENT_BASE_FONT_RESIZED ),
size, font, w, h;
- if( this[ 'dispatch' ]( { type : XUI_Event.LAYOUT_BEFORE, 'cancelable' : cancelable } ) & X_Callback_PREVENT_DEFAULT && cancelable ){
- return X_Callback_NONE;
+ if( this[ 'dispatch' ]( { type : XUI_Event.LAYOUT_BEFORE, 'cancelable' : cancelable } ) & X_CALLBACK_PREVENT_DEFAULT && cancelable ){
+ return X_CALLBACK_NONE;
};
size = X[ 'ViewPort' ][ 'getSize' ]();
X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, XUI_PageRoot_onViewUpdate );
- return X_Callback_NONE;
+ return X_CALLBACK_NONE;
},
updateCoursor : function( cursor ){
'js/01_core/06_XString.js',\r
'js/01_core/08_XURL.js',\r
\r
- 'js/01_core/10_XPair.js', \r
- 'js/01_core/11_XClosure.js',\r
- 'js/01_core/12_XCallback.js',\r
+ 'js/01_core/10_XPair.js',\r
+ 'js/01_core/11_XCallback.js',\r
+ 'js/01_core/12_XClosure.js',\r
'js/01_core/13_XClass.js',\r
'js/01_core/14_XEvent.js',\r
'js/01_core/15_XEventDispatcher.js',\r