• R/O
  • HTTP
  • SSH
  • HTTPS

clientJs: コミット

クライアント側 js 開発用


コミットメタ情報

リビジョンdb532e067114718c69d226d08979d236416ae73d (tree)
日時2014-10-14 05:04:54
作者itozyun <itozyun@user...>
コミッターitozyun

ログメッセージ

Version 0.6.104, fix X_shortcut & etc.

変更サマリ

差分

--- a/0.6.x/js/01_core/01_X.js
+++ b/0.6.x/js/01_core/01_X.js
@@ -1,26 +1,36 @@
11
2-if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){
3- var win, elm;
4- //alert(a);
5- if( window.parent ){
6- elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );
7- elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );
8- };
9-} };
2+if( !window['console'] || ( window.parent && window.parent.log ) )
3+ console = { log : function(a){
4+ var win, elm;
5+ //alert(a);
6+ if( window.parent ){
7+ elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );
8+ elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );
9+ };
10+ } };
1011
1112 var undefined,
12- X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ),
1313 X_TEMP = { onSystemReady : [] },
1414 X_shortcutFunction,
1515 X_shortcutContext;
1616
17-X.VERSION = '0.6.89';
17+function X( v ){
18+ if( X.Type.isFunction( v ) ){
19+ X.ViewPort.listenOnce( X.Event.XDOM_READY, v );
20+ } else
21+ if( X_shortcutFunction ){
22+ return X_shortcutFunction.apply( X_shortcutContext || X, arguments );
23+ };
24+};
25+
26+X.VERSION = '0.6.103';
1827
1928 X.bootTime = + new Date;
2029
2130 X.emptyFunction = new Function;
2231
23- // defer の場合もあるので、document.readyState を見る MacIE で false
32+// TODO defer の場合もあるので、document.readyState を見る
33+// MacIE で false
2434 X.inHead = (function( s ){
2535 if( !s ) return false;
2636 if( !s.length ) return false; // Safari1.3 312.8 でerror
--- a/0.6.x/js/01_core/02_XUA.js
+++ b/0.6.x/js/01_core/02_XUA.js
@@ -226,15 +226,15 @@ var X_UA = (function( n, undefined ){
226226 };
227227
228228 //http://www.useragentstring.com/pages/Iris/
229- acme.Iris = dua.toLowerCase().indexOf( 'iris' ) !== -1;
229+ if( dua.toLowerCase().indexOf( 'iris' ) !== -1 ) acme.Iris = true;
230230
231- acme.EInk =
232- // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch)
231+ if( // Kobo Mozilla/5.0 (Linux; U; Android 2.0; en-us;) AppleWebKit/533.1 (KHTML, like Gecko) Verson/4.0 Mobile Safari/533.1 (Kobo Touch)
233232 dua.indexOf( 'Kobo' ) !== -1 ||
234233 // Kindle paperwhite Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+
235234 dua.indexOf( 'Kindle' ) !== -1 ||
236235 // Sony Reader Mozilla/5.0 (Linux; U; ja-jp; EBRD1101; EXT) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1
237- dua.indexOf( 'EBRD' ) !== -1;
236+ dua.indexOf( 'EBRD' ) !== -1
237+ ) acme.EInk = true;
238238
239239 return acme;
240240 })( navigator ),
@@ -242,13 +242,12 @@ var X_UA = (function( n, undefined ){
242242 X_UA_DOM = {},
243243 X_UA_EVENT = {},
244244 X_UA_HID = {};
245-X_UA.IECompat && alert( X_UA.IE + ' ' + X_UA._IE + ' Tri:' + X_UA.Trident );
245+//X_UA.IECompat && alert( X_UA.IE + ' ' + X_UA._IE + ' Tri:' + X_UA.Trident );
246246
247247 /*
248248 * http://d.hatena.ne.jp/t-uchima/20051003/p1
249249 * MacIEにはattachEventが一応あるけどwindow.attachEventとdocument.attachEventしかなく他の要素にはattachEventはない。
250250 */
251-
252251 if( X_UA.IE4 && X_UA.IE < 5 ){ // ie4 & iemobi4 & macie4.x
253252 X_UA_DOM.IE4 = true;
254253 X_UA_EVENT.IE4 = true;
@@ -300,7 +299,7 @@ X.UA = X_UA;
300299 if( X_UA.IE < 7 ){ // error @ NN7.2
301300 // bonus: hotfix for IE6 SP1 (bug KB823727)
302301 // multipleIEs IE6 standalone 版では不可, IE5.5 は可,,,
303- X_UA.IE4 || X.UA.MacIE ?
302+ X_UA.IE4 || X_UA.MacIE ?
304303 document.execCommand && document.execCommand( 'BackgroundImageCache', false, true ) :
305304 (function(){
306305 X_UA.IE_EXECOM_ERROR = eval( 'var a=1;try{document.execCommand&&document.execCommand("BackgroundImageCache",!1,!0)}catch(e){a=0}!a' );
--- a/0.6.x/js/01_core/03_XType.js
+++ b/0.6.x/js/01_core/03_XType.js
@@ -19,9 +19,9 @@ X.Type = {
1919
2020 isArray :
2121 new Function( 'v',
22- X.UA.IE < 5.5 ?
22+ X_UA.IE < 5.5 ?
2323 'return v&&v.push===Array.prototype.push' : // win ie5-, MacIE5.2
24- X.UA.IE ?
24+ X_UA.IE ?
2525 'return v&&Object.prototype.toString.call(v)==="[object Array]"' :
2626 'return v instanceof Array'
2727 ),
@@ -48,7 +48,7 @@ X.Type = {
4848
4949 isHTMLElement :
5050 new Function( 'v',
51- ( X.UA.IE4 || X.UA.MacIE ) ?
51+ ( X_UA.IE4 || X_UA.MacIE ) ?
5252 'return v&&v.tagName&&v.insertAdjacentHTML&&true' : // ie4 or MacIE5.23, v.all <- error
5353 window[ 'HTMLElement' ] ?
5454 'return v instanceof HTMLElement' :
@@ -64,7 +64,7 @@ X.Type = {
6464 function( v ){
6565 if( v && v.constructor === window.Image ) return true;
6666 if( v && window.HTMLImageElement && v.constructor === window.HTMLImageElement ) return true; // ie6- は constructor が undef、HTMLImageElement が undef なので、HTMLElement の存在確認が必要
67- if( X.UA.WebKit < 525.13 ){ // Safari3-
67+ if( X_UA.WebKit < 525.13 ){ // Safari3-
6868 if( v && v.src !== undefined && v.onload !== undefined && X.Type.isNumber( v.height ) && X.Type.isNumber( v.width ) && X.Type.isBoolean( v.complete ) ){
6969 return true;
7070 };
--- a/0.6.x/js/01_core/04_XObject.js
+++ b/0.6.x/js/01_core/04_XObject.js
@@ -1,5 +1,5 @@
11
2-var X_Object_inObject = X.UA.IE < 5.5 ? // TODO JScript で判定
2+var X_Object_inObject = X_UA.IE < 5.5 ? // TODO JScript で判定
33 (function( name, obj ){
44 var p;
55 if( obj[ name ] ) return true;
--- a/0.6.x/js/01_core/13_XEventDispatcher.js
+++ b/0.6.x/js/01_core/13_XEventDispatcher.js
@@ -207,15 +207,14 @@ X.EventDispatcher =
207207 /**
208208 * delay(ミリ秒)後にイベントを dispatch する。戻り値は uid = X.Timer.add() のタイマーID(数値)。X.Timer.remove(uid) でタイマーを解除して dispatch を中止できる。
209209 * @this {X.EventDispatcher}
210- * @return {number}
211- * @param {number=} delay ms 省略した場合は 0 として扱う asyncDispatch( 'myevent' ) -> asyncDispatch( 0, 'myevent' )
212- * @param {(eventHash|string|number)=} e
210+ * @param {(number|eventHash|string)=} delay ms 省略した場合は 0 として扱う asyncDispatch( 'myevent' ) -> asyncDispatch( 0, 'myevent' )
211+ * @param {(eventHash|string|number)=} e イベントを表す数値、文字列、{ type : XXX, ... } なオブジェクト
212+ * @return {number} X.Timer.add() の戻り値
213213 */
214214 asyncDispatch : function( delay, e ){
215215 if( delay && e === undefined ){
216216 e = delay;
217217 delay = 0;
218- console.log( 'lazy : ' + e );
219218 };
220219 return X.Timer.add( delay, 1, this, this.dispatch, [ e ] );
221220 }
@@ -483,9 +482,9 @@ var X_EventDispatcher_actualAddEvent =
483482 // Days on the Moon DOM Events とブラウザの実装
484483 // http://nanto.asablo.jp/blog/2007/03/23/1339502
485484 // Safari 2 では関数オブジェクトしか EventListener として使えませんが、Safari のナイトリービルドでは handleEvent メソッドを持つオブジェクトも EventListener として使えるようです。
486- X_UA_EVENT.W3C /* && ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 ) */ ? // Safari3-
485+ X_UA_EVENT.W3C /* && ( X_UA.WebKit < 525.13 || X_UA.Opera7 || X_UA.NetFront < 4 ) */ ? // Safari3-
487486 (function( that, type, raw, list ){
488- if( that._isXHR && X.UA.Opera < 12 ){
487+ if( that._isXHR && X_UA.Opera < 12 ){
489488 // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない
490489 raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] );
491490 } else
@@ -558,9 +557,9 @@ function X_EventDispatcher_removeEvent( that, type, raw, list, skip ){
558557 };
559558
560559 var X_EventDispatcher_actualRemoveEvent =
561- X_UA_EVENT.W3C /*&& ( X.UA.WebKit < 525.13 || X.UA.Opera7 || X.UA.NetFront < 4 )*/ ? // Safari3-
560+ X_UA_EVENT.W3C /*&& ( X_UA.WebKit < 525.13 || X_UA.Opera7 || X_UA.NetFront < 4 )*/ ? // Safari3-
562561 (function( that, type, raw, list, skip ){
563- if( that._isXHR && X.UA.Opera < 12 ){
562+ if( that._isXHR && X_UA.Opera < 12 ){
564563 X_Callback_correct( raw[ 'on' + type ] );
565564 raw[ 'on' + type ] = '';
566565 } else
@@ -679,7 +678,7 @@ var X_EventDispatcher_actualHandleEvent =
679678 if( ret & X.Callback.PREVENT_DEFAULT ){
680679 this._tag === 'A' && this._rawObject.blur();
681680 e.preventDefault();
682- if( X.UA.WebKit < 525.13 ){ // Safari3-
681+ if( X_UA.WebKit < 525.13 ){ // Safari3-
683682 if( e.type === 'click' || e.type === 'dbclick' ){
684683 X_EventDispatcher_safariPreventDefault = true;
685684 };
@@ -688,7 +687,7 @@ var X_EventDispatcher_actualHandleEvent =
688687 };
689688 });
690689
691-if( X.UA.WebKit < 525.13 ){ // Safari3-
690+if( X_UA.WebKit < 525.13 ){ // Safari3-
692691 document.documentElement.onclick =
693692 document.documentElement.ondbclick = function( e ){
694693 if( X_EventDispatcher_safariPreventDefault ){
--- a/0.6.x/js/01_core/14_XTimer.js
+++ b/0.6.x/js/01_core/14_XTimer.js
@@ -190,7 +190,7 @@ X.Timer = {
190190 // --- implements ---------------------------------------------------------- //
191191 // ------------------------------------------------------------------------- //
192192
193-if( X.UA.IE4 || X.UA.MacIE ){
193+if( X_UA.IE4 || X_UA.MacIE ){
194194 X.Timer[ '_' ] = X_Timer_onTimeout;
195195 X_Timer_onTimeout = 'X.Timer._()';
196196 };
@@ -295,7 +295,7 @@ function X_Timer_compareQueue( a, b ){
295295
296296 // http://havelog.ayumusato.com/develop/javascript/e528-ios6_scrolling_timer_notcall.html
297297 // iOS6 スクロール中のタイマー発火絡みのバグ備忘
298-if( X.UA.iOS ){
298+if( X_UA.iOS ){
299299 window.addEventListener( 'scroll', function(){
300300 var last, now;
301301 if( X_Timer_timerId ){
--- a/0.6.x/js/01_core/15_XSystem.js
+++ b/0.6.x/js/01_core/15_XSystem.js
@@ -11,14 +11,22 @@ var X_System = X_Class_override(
1111
1212 }
1313 }
14-);
14+),
15+
16+X_System_javascriptScore;
1517
1618 // beforeunload
1719 // unload
1820
1921 X_TEMP.onRearchEndOfScript = function(){
2022 var callbacks = X_TEMP.onSystemReady,
21- i = callbacks.length;
23+ i = callbacks.length,
24+ now = X_Timer_now(),
25+ speed = now - X.bootTime;
26+
27+ X_System_javascriptScore = speed;
28+ console.log( 'js score ' + speed );
29+
2230 delete X_TEMP.onRearchEndOfScript;
2331 delete X_TEMP.onSystemReady;
2432
--- a/0.6.x/js/01_core/16_XViewPort.js
+++ b/0.6.x/js/01_core/16_XViewPort.js
@@ -9,7 +9,7 @@ var X_ViewPort_readyState,
99 X_ViewPort_vScrollbarSize,
1010 X_ViewPort_hScrollbarSize,
1111
12- X_Dom_detectFontSize = !( X.UA.IE < 9 || X.UA.iOS ) && function(){
12+ X_Dom_detectFontSize = !( X_UA.IE < 9 || X_UA.iOS ) && function(){
1313 var size = X_Node_fontSizeNode._rawObject.offsetHeight;
1414 if( X_ViewPort_baseFontSize !== size ){
1515 X_ViewPort_baseFontSize && X_ViewPort.asyncDispatch( { type : X.Event.BASE_FONT_RESIZED, fontSize : size, w : X_ViewPort_width, h : X_ViewPort_height } );
@@ -20,7 +20,7 @@ var X_ViewPort_readyState,
2020 X_ViewPort_orientationFlag,
2121 X_Dom_orientationchange = window[ 'orientation' ] !== undefined && function( e ){
2222 X_ViewPort_orientationFlag = true;
23- !X.UA.Android && X_ViewPort_resize();
23+ !X_UA.Android && X_ViewPort_resize();
2424 //console.log( '-- orientationchange : ' + X.ViewPort.getSize[ 0 ] + ' ' + X.ViewPort.getSize[ 1 ] );
2525 },
2626
@@ -133,7 +133,7 @@ X.ViewPort = {
133133 // Safari2.0.4では標準・互換どちらも document.body
134134
135135 X_Node_body._updateTimerID && X_Node_startUpdate();
136- /*X.UA.Opera ?
136+ /*X_UA.Opera ?
137137 ( document.documentElement && document.documentElement.clientWidth ?
138138 new Function( 'return[document.documentElement.clientWidth,document.documentElement.clientHeight]' ) :
139139 new Function( 'return[document.body.clientWidth,document.body.clientHeight]' )
@@ -204,7 +204,7 @@ X.ViewPort = {
204204 */
205205 var X_ViewPort_resize =
206206 // iOS もループで回す,,,iOS3.1.3, iOS6 で確認
207- X.UA.IE < 9 || X.UA.iOS ?
207+ X_UA.IE < 9 || X_UA.iOS ?
208208 (function(){
209209 var size;
210210 if( !X_ViewPort_lock ){
@@ -297,7 +297,7 @@ X.ViewPort = {
297297
298298 X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_XTREE, function(){
299299 X_ViewPort_readyState = X_TEMP.SYSTEM_EVENT_INIT;
300- //X.UA.Opera7 && alert( 'bc' );
300+ //X_UA.Opera7 && alert( 'bc' );
301301 X_Node_body.appendAt( 0,
302302 X_Node_systemNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ),
303303 X_Node_fontSizeNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ).cssText( 'line-height:1;height:1em;' ).text( 'X' )
@@ -367,7 +367,7 @@ X.ViewPort = {
367367 if( document[ 'webkitHidden' ] !== undefined ) {
368368 X_ViewPort_document.listen( 'webkitvisibilitychange', X_ViewPort );
369369 } else
370- if( X.UA.iOS && window[ 'onpageshow' ] !== undefined ) {
370+ if( X_UA.iOS && window[ 'onpageshow' ] !== undefined ) {
371371 X_ViewPort.listen( 'pageshow', X_ViewPort )
372372 .listen( 'pagehide', X_ViewPort );
373373 } else {
@@ -379,7 +379,7 @@ X.ViewPort = {
379379 };
380380
381381 function X_ViewPort_getWindowSize(){
382- return X.UA.IE ?
382+ return X_UA.IE ?
383383 [ X_ViewPort_rootElement.clientWidth, X_ViewPort_rootElement.clientHeight ] :
384384 [ window.innerWidth, window.innerHeight ];
385385 };
@@ -400,7 +400,7 @@ console.log( 'X.Dom dom:w3c=' + X_UA_DOM.W3C + ' ev:w3c=' + X_UA_EVENT.W3C );
400400 if( X_UA_EVENT.W3C ){
401401 X_ViewPort_document.listenOnce( 'DOMContentLoaded', X_TEMP.onDomContentLoaded );
402402 } else
403-if( 6 <= X.UA.IE && X.inHead ){
403+if( 6 <= X_UA.IE && X.inHead ){
404404 // if this script in Head
405405 document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" );
406406 X_TEMP._script = document.getElementById( "__ie_onload" );
@@ -417,7 +417,7 @@ if( 6 <= X.UA.IE && X.inHead ){
417417 };
418418 // Re: onLoad doesn't work with Safari?
419419 // http://lists.apple.com/archives/web-dev/2003/Oct/msg00036.html
420-if( X.UA.WebKit || X.UA.Safari < 3 ){ // sniff
420+if( X_UA.WebKit || X_UA.Safari < 3 ){ // sniff
421421 X.Timer.add( 16, function(){
422422 if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN;
423423 if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded();
--- a/0.6.x/js/02_dom/00_XDoc.js
+++ b/0.6.x/js/02_dom/00_XDoc.js
@@ -32,4 +32,9 @@ X.Doc = {
3232 listening : function( type, arg1, arg2, arg3 ){
3333 return X_ViewPort_document.listening( type, arg1, arg2, arg3 );
3434 }
35+
36+ // html
37+ // head
38+ // body
39+ // find
3540 };
--- a/0.6.x/js/02_dom/02_XNode.js
+++ b/0.6.x/js/02_dom/02_XNode.js
@@ -7,18 +7,18 @@ var
77 CLASSNAME : 8, // _getCharSize, width, height, x, y
88 ATTR : 16, // _getCharSize, width, height, x, y
99 CSS : 32, // _getCharSize, width, height, x, y
10- IE_FILTER : X.UA.IE < 9 && !X.UA.MacIE ? 64 : 0,
10+ IE_FILTER : X_UA.IE < 9 && !X_UA.MacIE ? 64 : 0,
1111 UNKNOWN_TAG_FIX : 128,
1212 IE4_TEXTNODE_FIX : 256
1313 },
1414
1515 X_Node_State = {
1616 DESTROYED : 0,
17- EXIST : 1,
18- BELONG_TREE : 2,
19- DISPLAY_NONE : 4,
20- DISPLAY_BLOCK : 8,
21- DISPLAY_INLINE : 16,
17+ EXIST : 1, // XNODE_EXIDT, ELEMENT_EXIST
18+ BELONG_TREE : 2, // HAS_PARENT, BELONG_TREE_XNODE, BELONG_TREE_ELEMENT
19+ DISPLAY_NONE : 4, // VISIVILITY_HIDDEN & DISPALY_NONE
20+ DISPLAY_BLOCK : 8, // remove
21+ DISPLAY_INLINE : 16,// remove
2222 POSITION_ABSOLUTE : 32,
2323 OVERFLOW_HIDDEN : 64,
2424 HAS_WIDTH_LENGTH : 128,
@@ -26,7 +26,7 @@ var
2626 HAS_HEIGHT_LENGTH : 512,
2727 HAS_HEIGHT_PERCENT : 1024,
2828 IE4_ONLY_TEXT : 2048,
29- IE5_DISPLAY_NONE_FIX : !X.UA.MacIE && X.UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?
29+ IE5_DISPLAY_NONE_FIX : !X_UA.MacIE && X_UA.IE5 ? 4096 : 0 // filterがかかっていると不可? MacIE5.2- は ?
3030 },
3131
3232 X_Node_TYPE = {
@@ -42,9 +42,9 @@ var
4242 IMAGE : 10
4343 },
4444
45- X_Node_strictElmCreation = !X.UA.MacIE && X.UA.IE5678,// && !X.UA.MacIE;
45+ X_Node_strictElmCreation = !X_UA.MacIE && X_UA.IE5678,// && !X_UA.MacIE;
4646
47- X_Node_useDocumentFragment = document.createDocumentFragment && ( !X.UA.IE || 5.5 <= X.UA.IE ) && document.createDocumentFragment(),
47+ X_Node_useDocumentFragment = document.createDocumentFragment && ( !X_UA.IE || 5.5 <= X_UA.IE ) && document.createDocumentFragment(),
4848
4949 X_Node_newByTag = false,
5050
@@ -67,7 +67,7 @@ var
6767 _rawObject : null,
6868 _rect : null, //
6969
70- _root : null, // xnode が文書ツリーに属しているか?はこれを見る
70+ _root : null, // xnode が文書ツリーに属しているか?はこれを見る -> state
7171 parent : null, // remove された枝も親子構造は維持している。
7272 _xnodes : null,
7373
@@ -95,10 +95,10 @@ var
9595 var css, xnodes, xnode, parent, uid = X_Node_CHASHE.length;
9696
9797 if( X_Node_newByTag ){
98- X_Node_newByTag = false;
98+ X_Node_newByTag = false;
9999 this._tag = v.toUpperCase();
100100 this._xnodeType = 1;
101- this._state = X_Node_State.DISPLAY_INLINE; // todo
101+ this._state = X_Node_State.DISPLAY_INLINE; // TODO
102102 arguments[ 1 ] && this.attr( arguments[ 1 ] );
103103 css = arguments[ 2 ];
104104 css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css );
@@ -122,10 +122,10 @@ var
122122 if( xnode = X_Node_getXNode( v ) ) return xnode;
123123 // v.parentNode || v.parentElement : dom1 || dom0
124124 this.parent = ( parent = v.parentNode || v.parentElement ) && parent.tagName /* ie7- */ && X_Node_getXNode( parent );
125- this._root = this.parent ? this.parent._root : null;
125+ if( this.parent && this.parent._root ) this._root = this.parent._root;
126126 this._rawObject = v;
127127 this._xnodeType = 1;
128- this._state = X_Node_State.DISPLAY_BLOCK; // todo
128+ this._state = X_Node_State.DISPLAY_BLOCK; // TODO
129129 this._tag = v.tagName.toUpperCase();
130130 this._id = v.id;
131131 this._className = v.className;
@@ -143,7 +143,7 @@ var
143143 case X_Node_TYPE.RAW_TEXT :
144144 if( xnode = X_Node_getXNode( v ) ) return xnode;
145145 this.parent = X_Node_getXNode( v.parentNode );
146- this._root = this.parent ? this.parent._root : null;
146+ if( this.parent && this.parent._root ) this._root = this.parent._root;
147147 this._rawObject = v;
148148 this._xnodeType = 3;
149149 this._state = X_Node_State.DISPLAY_INLINE;
@@ -1114,7 +1114,7 @@ var X_Node__updateRawNode =
11141114 };
11151115 // className
11161116 if( that._dirty & X_Node_Dirty.CLASSNAME ){
1117- that._className ? ( elm.className = that._className ) : ( elm.className && elm.removeAttribute( X.UA.IE5678 ? 'className' : 'class' ) ); // className は ie7-?
1117+ that._className ? ( elm.className = that._className ) : ( elm.className && elm.removeAttribute( X_UA.IE5678 ? 'className' : 'class' ) ); // className は ie7-?
11181118
11191119 // ie5 only
11201120 if( X_Node_State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){
@@ -1127,7 +1127,7 @@ var X_Node__updateRawNode =
11271127 // TODO display:none の場合、更新をスキップ
11281128 if( that._dirty & X_Node_Dirty.CSS ){
11291129 if( that._cssText !== null || ( that._cssText = X_Node_CSS_objToCssText( that._css ) ) ){
1130- X.UA.Opera78 || X.UA.NN6 ?
1130+ X_UA.Opera78 || X_UA.NN6 ?
11311131 elm.setAttribute( 'style', that._cssText ) : // opera8用
11321132 ( elm.style.cssText = that._cssText );
11331133 } else {
@@ -1146,7 +1146,7 @@ var X_Node__updateRawNode =
11461146 if( that._dirty & X_Node_Dirty.ATTR && ( attrs = that._newAttrs || that._attrs ) ){
11471147 rename = X_Node_Attr_renameForDOM;
11481148 for( k in attrs ){
1149- if( !X.UA.MacIE && ( X.UA.IE5 || X.UA.IE55 ) ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので
1149+ if( !X_UA.MacIE && ( X_UA.IE5 || X_UA.IE55 ) ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので
11501150 if( that._tag === 'TEXTAREA' && k === 'value' ){
11511151 elm.firstChild ?
11521152 ( elm.firstChild.data = attrs[ k ] ) :
@@ -1400,7 +1400,7 @@ var X_Node__actualRemove =
14001400 if( !elm ) return;
14011401 that._xnodeType === 1 && X_EventDispatcher_toggleAllEvents( that, false );// イベントの退避
14021402 // elm.parentNode.tagName for ie7
1403- if( !X.UA.MacIE ){
1403+ if( !X_UA.MacIE ){
14041404 !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm );
14051405 } else {
14061406 !isChild && elm.parentNode && elm.parentNode.tagName && X_TEMP._fixed_remove( elm, that );
--- a/0.6.x/js/02_dom/03_XDomEvent.js
+++ b/0.6.x/js/02_dom/03_XDomEvent.js
@@ -18,7 +18,7 @@ var X_Dom_Event_devicePixelRatio = window.devicePixelRatio || ( window.screen.de
1818 '4' : 'mouse'
1919 }; */
2020
21-if( !X.UA.IE || 9 <= X.UA.IE ){
21+if( !X_UA.IE || 9 <= X_UA.IE ){
2222 X.Dom.Event = function( e, xnode ){
2323 var originalType = e.type,
2424 type, pointerType,
@@ -178,7 +178,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
178178
179179 // http://www.programming-magic.com/20090127231544/
180180 // Opera で button==2の場合、コンテキストメニューイベントを発火 「ツール」->「設定」->「詳細設定」->「コンテンツ」->「Javascriptオプション」で「右クリックを制御するスクリプトを許可する」
181- if( originalType === 'mousedown' && this.button === 2 && X.UA.Opera ){
181+ if( originalType === 'mousedown' && this.button === 2 && X_UA.Opera ){
182182 events = [ X.Object.clone( this ), X.Object.clone( this ) ];
183183 events[ 1 ].type = 'contextmenu';
184184 return events;
@@ -289,7 +289,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){
289289 //event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0));
290290 //};
291291
292- if( 5 <= X.UA.IE ){
292+ if( 5 <= X_UA.IE ){
293293 this.offsetX = e.offsetX; // イベントターゲット左上からの座標
294294 this.offsetY = e.offsetY;
295295 }// else
@@ -322,23 +322,24 @@ X.Dom.Event.ANIME_STOP = ++X_Event_last;
322322
323323
324324 // TODO load -> readystatechange this.readyState === "loaded" || this.readyState === "complete"
325+/*
325326 X.Dom.Event._LOAD_FIX_TAGS = {
326327 IFRAME : true,
327328 SCRIPT : true//,
328329 //LINK : true
329-};
330+}; */
330331
331332 // https://github.com/georgeadamson/jQuery.prefixfree-events/blob/master/jQuery.prefixfree-events.js
332333 // https://developer.mozilla.org/en-US/docs/Web/Events/wheel
333334 //
334335 if( document.onwheel === undefined ){
335336 // DOMMoseScroll
336- if( X.UA.Gecko && window.MouseScrollEvent ){
337- if( 2 <= X.UA.Gecko || ( 1.9 <= X.UA.Gecko && 1 <= X.UA.GeckoPatch ) ){ // Gecko 1.9.1+ (firefox3.5+)
337+ if( X_UA.Gecko && window.MouseScrollEvent ){
338+ if( 2 <= X_UA.Gecko || ( 1.9 <= X_UA.Gecko && 1 <= X_UA.GeckoPatch ) ){ // Gecko 1.9.1+ (firefox3.5+)
338339 console.log( 'wheel <= MozMousePixelScroll' );
339340 X_Event_Rename[ 'wheel' ] = 'MozMousePixelScroll';
340341 } else
341- if( 1 <= X.UA.Gecko || ( 0.9 <= X.UA.Gecko && 7 <= X.UA.GeckoPatch ) ){ // Gecko 0.9.7+ (NN6.2+?)
342+ if( 1 <= X_UA.Gecko || ( 0.9 <= X_UA.Gecko && 7 <= X_UA.GeckoPatch ) ){ // Gecko 0.9.7+ (NN6.2+?)
342343 console.log( 'wheel <= DOMMouseScroll' );
343344 X_Event_Rename[ 'wheel' ] = 'DOMMouseScroll';
344345 };
@@ -386,11 +387,11 @@ if( window.onwebkittransitionend !== undefined && window.ontransitionend === und
386387 X_Event_Rename[ 'transitionend' ] = 'webkitTransitionEnd';
387388 } else
388389 if( window.onotransitionend !== undefined && window.ontransitionend === undefined ){
389- if( X.UA.Opera < 12 ){
390- console.log( 'transitionend <= oTransitionEnd|ver.' + X.UA.Opera );
390+ if( X_UA.Opera < 12 ){
391+ console.log( 'transitionend <= oTransitionEnd|ver.' + X_UA.Opera );
391392 X_Event_Rename[ 'transitionend' ] = 'oTransitionEnd';
392393 } else {
393- console.log( 'transitionend <= otransitionEnd|ver.' + X.UA.Opera );
394+ console.log( 'transitionend <= otransitionEnd|ver.' + X_UA.Opera );
394395 X_Event_Rename[ 'transitionend' ] = 'otransitionEnd';
395396 };
396397 } else
@@ -409,11 +410,12 @@ if( !navigator.pointerEnabled ){
409410 // http://msdn.microsoft.com/ja-jp/library/ie/dn304886%28v=vs.85%29.aspx
410411 } else
411412 if( X_UA_HID.TOUCH ){
413+ // touch のみ(iOS でも脱獄したら?)、 touch と mouse(Android), mouse のみ
412414 X_Event_Rename[ 'pointerdown' ] = [ 'touchdown', 'mousedown' ];
413415 X_Event_Rename[ 'pointerup' ] = [ 'touchup', 'mouseup' ];
414416 X_Event_Rename[ 'pointermove' ] = [ 'touchmove', 'mousemove' ];
415417 X_Event_Rename[ 'pointercancel' ] = 'touchcancel';
416- // X_Event_Rename[ 'click' ] = [ 'click', 'tap' ]; // ループになってしまう!直した!
418+ // X_Event_Rename[ 'click' ] = [ 'touchdown', 'touchmove', 'touchup' ]; // ループになってしまう!直した!直ってない!
417419 } else {
418420 X_Event_Rename[ 'pointerdown' ] = 'mousedown';
419421 X_Event_Rename[ 'pointerup' ] = 'mouseup';
@@ -421,7 +423,11 @@ if( !navigator.pointerEnabled ){
421423 X_Event_Rename[ 'pointercancel' ] = 'mouseleave';//??
422424
423425 // Opera は ブラウザ設定から右クリックの通知を許可すると mousedown で e.button==2 が返る,キャンセルは可能??
424- X.UA.Opera && (
426+ X_UA.Opera && (
425427 X_Event_Rename[ 'contextmenu' ] = 'mousedown' );
428+
429+ /*
430+ * buttons の無いブラウザには mouseup, mousedown を監視して、buttons フラグを更新し続ける
431+ */
426432 };
427433 };
--- a/0.6.x/js/02_dom/05_XNodeAttr.js
+++ b/0.6.x/js/02_dom/05_XNodeAttr.js
@@ -126,9 +126,17 @@ Node.prototype.attr = function( nameOrObj /* v */ ){
126126 case 'style' :
127127 case 'cssText' :
128128 return this.cssText();
129+ case 'text' :
130+ return this.text();
131+ case 'html' :
132+ return this.html();
133+ case 'selected' :
134+ // kquery.js : safariのバグ対策
135+ // if ($.browser.safari && key === "selected" && tmp) tmp.selectedIndex;
136+ // 親ノードの selectedIndex の getter を呼んでおくと値が正しくなる、ということ?( by itozyun )
137+ if( X_UA.WebKit ) this._rawObject.parentNode.selectedIndex;
129138 case 'value' :
130139 case 'checked' :
131- case 'selected' :
132140 case 'disabled' :
133141 case 'selectedIndex' :
134142 if( X_Node_Attr_HAS_VALUE[ this._tag ] ){
@@ -164,6 +172,10 @@ function X_Node_Attr_setAttr( that, attrs, newAttrs, name, v ){
164172 case 'style' :
165173 case 'cssText' :
166174 return that.cssText( v );
175+ case 'text' :
176+ return that.text( v );
177+ case 'html' :
178+ return that.html( v );
167179 };
168180 // debug
169181 if( name.indexOf( 'on' ) === 0 ){
--- a/0.6.x/js/02_dom/06_XNodeCSS.js
+++ b/0.6.x/js/02_dom/06_XNodeCSS.js
@@ -133,12 +133,12 @@ X_Node_CSS_objToCssText = function( obj ){
133133 },
134134
135135 X_Node_CSS_IE_FILTER_FIX =
136- X.UA.IE && X.UA.IE < 9 && !X.UA.MacIE ?
136+ X_UA.IE && X_UA.IE < 9 && !X_UA.MacIE ?
137137 {
138138 opacity : 1,
139139 textShadow : 1
140140 } :
141- 9 <= X.UA.IE && X.UA.IE < 10 ? // == 9
141+ 9 <= X_UA.IE && X_UA.IE < 10 ? // == 9
142142 {} :
143143 {},
144144
@@ -332,7 +332,7 @@ X_Node_CSS_PARAMS = ( function(){
332332 return ret;
333333 })(),
334334
335-X_Node_CSS__CLIP_SEPARATOR = X.UA.IE && X.UA.IE < 8 ? ' ' : ',',
335+X_Node_CSS__CLIP_SEPARATOR = X_UA.IE && X_UA.IE < 8 ? ' ' : ',',
336336
337337 /*
338338 *
@@ -870,7 +870,7 @@ var X_Node_CSS__GET_VALUE_WITH_UNIT = {
870870
871871 var X_Node_CSS_SPECIAL_FIX =
872872 // ~IE8
873- X.UA.IE && X.UA.IE < 9 && !X.UA.MacIE?
873+ X_UA.IE && X_UA.IE < 9 && !X_UA.MacIE?
874874 (function( obj ){
875875 var test = X_Node_CSS_SPECIAL_FIX_PROP,
876876 filters = [],
@@ -909,7 +909,7 @@ var X_Node_CSS_SPECIAL_FIX =
909909 return filters.join( ' ' );
910910 }) :
911911 // IE9 textShadow に filter を使用
912- X.UA.IE && 9 <= X.UA.IE && X.UA.IE < 10 ?
912+ X_UA.IE && 9 <= X_UA.IE && X_UA.IE < 10 ?
913913 (function( obj ){
914914 var test = X_Node_CSS_SPECIAL_FIX_PROP,
915915 filters = [], p, id, v;
@@ -1085,7 +1085,7 @@ Node.prototype._getCharSize =
10851085 return this._fontSize = parseFloat( document.defaultView.getComputedStyle( this._rawObject, null ).fontSize );
10861086 }) :
10871087
1088- 5.5 <= X.UA.IE ?
1088+ 5.5 <= X_UA.IE ?
10891089 (function(){
10901090 var font, vu, v, u, _v;
10911091 X_Node_body._updateTimerID && X_Node_startUpdate();
@@ -1195,7 +1195,7 @@ X.CSS = {
11951195 var X_Node_CSS_Support, X_Node_CSS_SPECIAL_FIX_PROP;
11961196
11971197 ( function(){
1198- var testStyle = X.UA.IE4 ? {} : ( document.documentElement || document.createElement( 'div' ) ).style,
1198+ var testStyle = X_UA.IE4 ? {} : ( document.documentElement || document.createElement( 'div' ) ).style,
11991199 temp = testStyle.cssText,
12001200 prefix = X_Node_CSS_VENDER_PREFIX,
12011201 vendors = 'webkit,Webkit,Moz,moz,Ms,ms,O,o,khtml,Khtml'.split( ',' ),
@@ -1235,7 +1235,7 @@ var X_Node_CSS_Support, X_Node_CSS_SPECIAL_FIX_PROP;
12351235
12361236 X_Node_CSS_SPECIAL_FIX_PROP =
12371237 // ~IE8
1238- X.UA.IE < 9 && !X.UA.MacIE ?
1238+ X_UA.IE < 9 && !X_UA.MacIE ?
12391239 {
12401240 filter : 1,
12411241 opacity : 2//, uinode ChromeNode で行う
@@ -1244,7 +1244,7 @@ var X_Node_CSS_Support, X_Node_CSS_SPECIAL_FIX_PROP;
12441244 //backgroundImage : 5
12451245 } :
12461246 // IE9
1247- 9 <= X.UA.IE && X.UA.IE < 10 ?
1247+ 9 <= X_UA.IE && X_UA.IE < 10 ?
12481248 {
12491249 filter : 1//,
12501250 //textShadow : 1
--- a/0.6.x/js/02_dom/08_XNodeSelector.js
+++ b/0.6.x/js/02_dom/08_XNodeSelector.js
@@ -219,7 +219,7 @@ function X_Node_Selector__parse( query, last ){
219219 };
220220
221221 // セレクター
222- X.Doc.find = X._shortcut = Node.prototype.find = X_NodeList.prototype.find = function( queryString ){
222+ X.Doc.find = X_shortcutFunction = Node.prototype.find = X_NodeList.prototype.find = function ( queryString ){
223223 var HTML = X_Node_html,
224224 scope = this.constructor === X_NodeList && this.length ? this : [ this.constructor === Node ? this : X_Node_body ],
225225 parents = scope, // 探索元の親要素 XNodeList の場合あり
@@ -440,7 +440,7 @@ function X_Node_Selector__parse( query, last ){
440440 // 諦めて、funcAttrを呼ぶ
441441 // flag_call = ($.browser.safari && key === 'selected');
442442 // getAttributeを使わない
443- useName = X.UA.IE && key !== 'href' && key !== 'src';
443+ useName = X_UA.IE && key !== 'href' && key !== 'src';
444444 toLower = !!val && !isXML && noLower.indexOf( key ) === -1; //!noLower.test(key);
445445 if( toLower ) val = val.toLowerCase();
446446 if( op === 3 ) val = _ + val + _;
--- a/0.6.x/js/02_dom/22_XTreeBuilder.js
+++ b/0.6.x/js/02_dom/22_XTreeBuilder.js
@@ -8,7 +8,7 @@ X_TEMP._isCleanupTarget = function( elm ){
88 ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 );
99 };
1010
11-if( X.UA.MacIE ){
11+if( X_UA.MacIE ){
1212
1313 X_TEMP._fixed_remove = function( node, xnode ){
1414 var parent = node.parentNode, l;
@@ -86,7 +86,7 @@ if( X.UA.MacIE ){
8686 };
8787
8888 } else
89-if( X.UA.Opera7 ){
89+if( X_UA.Opera7 ){
9090
9191 X_TEMP._fixed_remove = function( node ){
9292 if( node.nodeType === 1 || node.nodeType === 3 ){
@@ -117,7 +117,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
117117
118118 // TODO
119119 // textarea の内容を控えて、消す。xnode tree 構築後に復帰。でないと、html パースでこける
120- //X.UA.MacIE && alert( body.innerHTML );
120+ //X_UA.MacIE && alert( body.innerHTML );
121121 // cleanup tree
122122 (function/*cleanUpTree*/( elm, skip, head ){
123123 var nodes = X_Object_cloneArray( elm.childNodes ),
@@ -157,7 +157,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
157157 // ブロック要素直下のスペースだけは削除??
158158 default :
159159 //console.log( 'Remove type: ' + node.nodeType + ' value: ' + node.nodeValue );
160- if( !X.UA.Opera7 /*&& !X.UA.MacIE */ ){
160+ if( !X_UA.Opera7 /*&& !X_UA.MacIE */ ){
161161 elm.removeChild( node );
162162 } else {
163163 X_TEMP._fixed_remove( node );
@@ -165,13 +165,13 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT,
165165 //++count;
166166 };
167167 };
168- })( X.UA.MacIE ? ( copy = body.cloneNode( true ) ) : body );
168+ })( X_UA.MacIE ? ( copy = body.cloneNode( true ) ) : body );
169169
170- if( X.UA.MacIE ){
170+ if( X_UA.MacIE ){
171171 document.write( html = copy.innerHTML );
172172 } else {
173173 // body の属性値の取得
174- if( X.UA.IE5678 ){
174+ if( X_UA.IE5678 ){
175175 html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る
176176 } else {
177177 html = body.innerHTML;
@@ -330,7 +330,7 @@ X_TEMP.bindElementToXnode =
330330 elm = elems[ current.j ];
331331 tag = elm.tagName && elm.tagName.toUpperCase();
332332 if( ( elm.nodeType !== 1 && elm.nodeType !== 3 ) || tag === '!' || ( tag && tag.charAt( 0 ) === '/' ) ){
333- if( !X.UA.Opera7 && !X.UA.MacIE ){
333+ if( !X_UA.Opera7 && !X_UA.MacIE ){
334334 elm.parentNode.removeChild( elm );
335335 } else {
336336 X_TEMP._fixed_remove( elm );
@@ -342,7 +342,7 @@ X_TEMP.bindElementToXnode =
342342 if( elm.nodeType === 3 ){
343343 if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){
344344 //alert( text.charCodeAt( 0 ) );
345- if( !X.UA.Opera7 && !X.UA.MacIE ){
345+ if( !X_UA.Opera7 && !X_UA.MacIE ){
346346 elm.parentNode.removeChild( elm );
347347 } else {
348348 X_TEMP._fixed_remove( elm );
--- a/0.6.x/js/03_plugin/00_XPlugin.js
+++ b/0.6.x/js/03_plugin/00_XPlugin.js
@@ -11,9 +11,9 @@
1111 * flash player 12, ie8+, ff17, opera11
1212 */
1313 var X_Pulgin_FLASH_VERSION =
14- !X.UA.IE && navigator.plugins[ 'Shockwave Flash' ] ?
14+ !X_UA.IE && navigator.plugins[ 'Shockwave Flash' ] ?
1515 parseFloat( navigator.plugins[ 'Shockwave Flash' ].version ) :
16- !X.UA.IE4 && !X.UA.IE5 && X.UA.ActiveX ? (function(){
16+ !X_UA.IE4 && !X_UA.IE5 && X_UA.ActiveX ? (function(){
1717 var obj = eval( 'var a;try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}a' ),
1818 ver = obj && obj.GetVariable( '$version' ).split( ' ' ).join( '.' );
1919 return parseFloat( ver ) || 0;
@@ -21,7 +21,7 @@ var X_Pulgin_FLASH_VERSION =
2121 0,
2222
2323 X_Pulgin_FLASH_ENABLED =
24- X.UA.ActiveX ? !!X_Pulgin_FLASH_VERSION :
24+ X_UA.ActiveX ? !!X_Pulgin_FLASH_VERSION :
2525 navigator.mimeTypes &&
2626 navigator.mimeTypes[ 'application/x-shockwave-flash' ] &&
2727 navigator.mimeTypes[ 'application/x-shockwave-flash' ].enabledPlugin,
@@ -30,31 +30,31 @@ var X_Pulgin_FLASH_VERSION =
3030 * ie11 の 互換モード(8,7)では、Silverlight が動作しない?
3131 */
3232 X_Pulgin_SILVER_LIGHT_VERSION =
33- !X.UA.IE && navigator.plugins[ 'Silverlight Plug-In' ] ?
33+ !X_UA.IE && navigator.plugins[ 'Silverlight Plug-In' ] ?
3434 parseFloat( navigator.plugins[ 'Silverlight Plug-In' ].version ) :
35- X.UA.ActiveX && 6 <= X.UA.IE && !X.UA.IECompat ? (function(){
35+ X_UA.ActiveX && 6 <= X_UA.IE && !X_UA.IECompat ? (function(){
3636 return eval( 'var a,i=0;try{a=new ActiveXObject("AgControl.AgControl");for(i=5;i;--i)if(a.IsVersionSupported(i+".0"))break;}catch(e){i=0}i' );
3737 })() :
3838 0,
3939
4040 X_Pulgin_SILVER_LIGHT_ENABLED =
41- X.UA.ActiveX ? !!X_Pulgin_SILVER_LIGHT_VERSION :
41+ X_UA.ActiveX ? !!X_Pulgin_SILVER_LIGHT_VERSION :
4242 navigator.mimeTypes &&
4343 navigator.mimeTypes[ 'application/x-silverlight' ] &&
4444 navigator.mimeTypes[ 'application/x-silverlight' ].enabledPlugin,
4545
4646 //http://docs.unity3d.ru/Manual/Detecting%20the%20Unity%20Web%20Player%20using%20browser%20scripting.html
4747 X_Pulgin_UNITY_VERSION =
48- !X.UA.IE && navigator.plugins[ 'Unity Player' ] ?
48+ !X_UA.IE && navigator.plugins[ 'Unity Player' ] ?
4949 parseFloat( navigator.plugins[ 'Unity Player' ].version ) :
50- !X.UA.IE4 && !X.UA.IE5 && X.UA.ActiveX ? (function(){
50+ !X_UA.IE4 && !X_UA.IE5 && X_UA.ActiveX ? (function(){
5151 var obj = eval( 'var a;try{a=new ActiveXObject("UnityWebPlayer.UnityWebPlayer.1")}catch(e){}a' );
5252 return obj ? parseFloat( obj.GetPluginVersion() ) : 0;
5353 })() :
5454 0,
5555
5656 X_Pulgin_UNITY_ENABLED =
57- X.UA.ActiveX ? !!X_Pulgin_UNITY_VERSION :
57+ X_UA.ActiveX ? !!X_Pulgin_UNITY_VERSION :
5858 navigator.mimeTypes &&
5959 navigator.mimeTypes[ 'application/vnd.unity' ] &&
6060 navigator.mimeTypes[ 'application/vnd.unity' ].enabledPlugin;
--- a/0.6.x/js/04_util/01_XNinjaIframe.js
+++ b/0.6.x/js/04_util/01_XNinjaIframe.js
@@ -37,11 +37,11 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
3737
3838 // http://nanto.asablo.jp/blog/2011/12/08/6237308
3939 // IE 6/7 で文書間通信を実現するための一案
40- if( X.UA.IE < 9 ){
40+ if( X_UA.IE < 9 ){
4141 this.xnodeIframe.attr( 'src', 'about:blank' );
4242 };
4343 // Safari 2.0.* bug: iframe's absolute position and src set.
44- if( !X.UA.Webkit ){
44+ if( !X_UA.Webkit ){
4545 this.xnodeIframe.css( { position : 'absolute' } );
4646 };
4747
@@ -56,9 +56,9 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
5656 case X.Event.AFTER_UPDATE :
5757 this._iwin = raw.contentWindow || raw.contentDocument && raw.contentDocument.parentWindow || window.frames[ this._name ];
5858
59- this.xnodeIframe.listen( X.UA.IE < 9 ? [ 'readystatechange', 'error' ] : [ 'load', 'error' ], this );
59+ this.xnodeIframe.listen( X_UA.IE < 9 ? [ 'readystatechange', 'error' ] : [ 'load', 'error' ], this );
6060
61- if( !( X.UA.IE < 9 ) ){
61+ if( !( X_UA.IE < 9 ) ){
6262 this._html && X_Util_NinjaIframe_writeToIframe( this );
6363 this._ready = true;
6464 return;
@@ -96,7 +96,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
9696 return this;
9797 };
9898
99- if( X.UA.IE5 || X.UA.IE55 ){
99+ if( X_UA.IE5 || X_UA.IE55 ){
100100 this._iwin.location.href = 'about:blank'; // reload() では、IE5.5(IETester)で2回目移行の操作でerrorが出る(doc取得やopen,writeで)
101101 } else {
102102 this._iwin.location.reload();
@@ -105,7 +105,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits(
105105 if( !opt_html ) return this;
106106
107107 this._html = opt_html;
108- X.UA.IE < 9 || X_Util_NinjaIframe_writeToIframe( this );
108+ X_UA.IE < 9 || X_Util_NinjaIframe_writeToIframe( this );
109109
110110 return this;
111111 },
--- a/0.6.x/js/04_util/03_XUtilImage.js
+++ b/0.6.x/js/04_util/03_XUtilImage.js
@@ -50,7 +50,7 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){
5050 // for Firefox, Safari, Google Chrome
5151 if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ];
5252
53- if( 5 <= X.UA.IE ){// for IE
53+ if( 5 <= X_UA.IE ){// for IE
5454 run = img.runtimeStyle;
5555 memW = run.width;
5656 memH = run.height;
--- a/0.6.x/js/05_net/00_XNet.js
+++ b/0.6.x/js/05_net/00_XNet.js
@@ -6,7 +6,7 @@ X.Net = {
66 return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'GET', url : url } );
77 },
88
9- xhrPost : function( url, data ){
9+ xhrPost : function( url, postbody ){
1010 return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'POST', url : url, postbody : postbody } );
1111 },
1212
@@ -106,19 +106,16 @@ function X_NET_proxyDispatch( e ){
106106 case X.Event.KILL_INSTANCE_CANCELED :
107107 break;
108108 case X.Event.PROGRESS :
109- console.log( 'q: ' + e.type );
110109 this.dispatch( e );
111110 break;
112111 case X.Event.SUCCESS :
113112 case X.Event.ERROR :
114113 case X.Event.TIMEOUT :
115114 case X.Event.CANCELED :
116- console.log( 'q: ' + e.type );
117115 this.dispatch( e );
118116 this.asyncDispatch( X.Event.COMPLETE );
119117 break;
120118 case X.Event.COMPLETE :
121- console.log( 'complete. then kill()' );
122119 this.kill();
123120 X_NET_shiftQueue();
124121 break;
--- a/0.6.x/js/05_net/01_XNetXHR.js
+++ b/0.6.x/js/05_net/01_XNetXHR.js
@@ -19,10 +19,10 @@ new ActiveXObject( 'Msxml2.XMLHTTP.4.0' ); // バージョン4.0 は bugfix が
1919 new ActiveXObject( 'Msxml2.XMLHTTP.5.0' ); // バージョン5.0 は bugfix が行われないので、3.0 か 6.0 を指定すべき
2020
2121 */
22-var X_Net_XHR_W3C = ( !X.UA.IE7 || !X_URL_IS_LOCAL ) && window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),
22+var X_Net_XHR_W3C = ( !X_UA.IE7 || !X_URL_IS_LOCAL ) && window[ 'XMLHttpRequest' ] && new XMLHttpRequest(),
2323 X_Net_XHR_X_DOMAIN = window[ 'XDomainRequest' ] && new XDomainRequest(),
2424 X_Net_XHR_VERSION = 0,
25- X_Net_XHR_ACTIVE_X = !X.UA.IE4 && X.UA.IE < 8 && X.UA.ActiveX && ( new Function( [
25+ X_Net_XHR_ACTIVE_X = !X_UA.IE4 && X_UA.IE < 8 && X_UA.ActiveX && ( new Function( [
2626 'var x=".XMLHTTP",',
2727 'm="MSXML2"+x,',
2828 'n=[m+".6.0",m+".3.0",m+".5.0",m+".4.0",m,"Microsoft"+x],',
@@ -217,7 +217,7 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
217217 ( 200 <= status && status < 300 ) ||
218218 status === 304 ||
219219 status === 1223 ||
220- ( X.UA.Webkit && status === undefined ) // safari: /webkit/.test(userAgent)
220+ ( X_UA.Webkit && status === undefined ) // safari: /webkit/.test(userAgent)
221221 ){
222222 /*
223223 * opera8, safari2, khtml3 で utf8 日本語文字列の文字化け
@@ -289,10 +289,10 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){
289289
290290
291291 // ie8 では timeout が有効, MSXML のバージョンは関係なさそう、、、
292- if( X.UA.IE8 ){
292+ if( X_UA.IE8 ){
293293 X_NET_XHRWrapper.listen( [ 'readystatechange', 'error', 'abort', 'timeout' ] );
294294 } else
295- if( X.UA.IE7 ){
295+ if( X_UA.IE7 ){
296296 if( X_URL_IS_LOCAL ){
297297 X_NET_XHRWrapper.listen( 'readystatechange' ); // ie7 ActiveX の場合、error は不可
298298 } else {
--- a/0.6.x/js/05_net/02_XNetJSONP.js
+++ b/0.6.x/js/05_net/02_XNetJSONP.js
@@ -49,7 +49,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){
4949
5050 // TODO '<scr'+'ipt> 化 恐らくアンチウイルスソフトが反応しないための対策
5151
52- if( X.UA.IE8 ){
52+ if( X_UA.IE8 ){
5353 html = [
5454 // http://blog.livedoor.jp/dankogai/archives/51503830.html
5555 // Ajax - IE8にもJSON入ってます。使えるとは限らないけど
@@ -68,7 +68,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){
6868 '</script>'
6969 ];
7070 } else
71- if( X.UA.IE9 ){
71+ if( X_UA.IE9 ){
7272 html = [
7373 '<script id="jp"></script>',
7474 '<script>',
@@ -87,7 +87,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){
8787 '<script src="', url, '"></script>'
8888 ];
8989 } else
90- if( X.UA.IE4 || X.UA.MacIE ){
90+ if( X_UA.IE4 || X_UA.MacIE ){
9191 html = [
9292 '<script id="jn"></script>',
9393 '<script id="jp"></script>',
@@ -99,7 +99,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){
9999 '</script>'
100100 ];
101101 } else
102- if( X.UA.IE < 8 ){ // ie5-7
102+ if( X_UA.IE < 8 ){ // ie5-7
103103 html = [
104104 '<script id="jn"></script>',
105105 '<script id="jp"></script>',
@@ -192,4 +192,4 @@ function X_NET_JSONP_operaImageHandleEvent( e ){
192192 break;
193193 };
194194 };
195-if( !X.UA.Opera ) X_NET_JSONP_operaImageHandleEvent = null;
\ No newline at end of file
195+if( !X_UA.Opera ) X_NET_JSONP_operaImageHandleEvent = null;
\ No newline at end of file
--- a/0.6.x/js/05_net/04_XNetImage.js
+++ b/0.6.x/js/05_net/04_XNetImage.js
@@ -9,7 +9,7 @@
99 var X_Net_Image_hasImage = !!window[ 'Image' ],
1010 X_Net_Image_image = X_Net_Image_hasImage && new Image(),
1111 // IE では厳密には HTMLImageElement ではなく、appendChild してもサイズが取れず、removeChild に失敗する
12- X_Net_Image_isElement = !( X.UA.IE < 9 ) && X.Type.isHTMLElement( X_Net_Image_image );
12+ X_Net_Image_isElement = !( X_UA.IE < 9 ) && X.Type.isHTMLElement( X_Net_Image_image );
1313
1414
1515 if( !X_Net_Image_hasImage ){
@@ -47,7 +47,7 @@ X_NET_ImageWrapper = X_Class_override(
4747
4848 //X_Net_Image_hasImage ? ( this._rawObject.src = this.abspath ) : this.attr( 'src', this.abspath );
4949 /*
50- if( X.UA.Opera7 ){
50+ if( X_UA.Opera7 ){
5151 X_EventDispatcher_toggleAllEvents( this, false );
5252 this._rawObject = new Image();
5353 X_EventDispatcher_toggleAllEvents( this, true );
@@ -55,7 +55,7 @@ X_NET_ImageWrapper = X_Class_override(
5555
5656 this._rawObject.src = this.abspath;
5757 //alert( this._rawObject.src + ' ' + this._rawObject.complete );
58- if( X.UA.Opera7 && this._rawObject.complete ){
58+ if( X_UA.Opera7 && this._rawObject.complete ){
5959 this.asyncDispatch( 'load' );
6060 } else {
6161 this.timerID = X.Timer.add( this.delay, 0, this, this._detect );
@@ -80,7 +80,7 @@ X_NET_ImageWrapper = X_Class_override(
8080 this._busy = false;
8181 this.finish = true;
8282 this.timerID && X.Timer.remove( this.timerID );
83- if( X.UA.Opera && !this._rawObject.complete ){
83+ if( X_UA.Opera && !this._rawObject.complete ){
8484 this.timerID = this.asyncDispatch( X.Event.ERROR );
8585 return;
8686 };
--- a/0.6.x/js/20_ui/05_XUI_Gesture.js
+++ b/0.6.x/js/20_ui/05_XUI_Gesture.js
@@ -329,7 +329,7 @@
329329 /*
330330 * "Android version < 2.2" return ev.touches.length === 1 when touchend, others return ev.touches.length === 0
331331 */
332- Hammer.DO_TOUCHES_FIX = Hammer.HAS_TOUCHEVENTS && ( X.UA.Android < 2.2 || X.UA.Blink || X.UA.Opera );
332+ Hammer.DO_TOUCHES_FIX = Hammer.HAS_TOUCHEVENTS && ( X_UA.Android < 2.2 || X_UA.Blink || X_UA.Opera );
333333
334334 // detect touchevents
335335 Hammer.HAS_POINTEREVENTS = true; // navigator.pointerEnabled || navigator.msPointerEnabled;
--- a/0.6.x/js/20_ui/15_ScrollBox.js
+++ b/0.6.x/js/20_ui/15_ScrollBox.js
@@ -24,9 +24,9 @@ var m = Math,
2424 // Scrollbar
2525 hScrollbar : true,
2626 vScrollbar : true,
27- fixedScrollbar : X.UA.Android,
28- hideScrollbar : X.UA.iOS,
29- fadeScrollbar : X.UA.iOS, //&& has3d,
27+ fixedScrollbar : X_UA.Android,
28+ hideScrollbar : X_UA.iOS,
29+ fadeScrollbar : X_UA.iOS, //&& has3d,
3030 scrollbarClass : '',
3131
3232 // Zoom
@@ -196,7 +196,7 @@ var m = Math,
196196 // Helpers FIX ANDROID BUG!
197197 // translate3d and scale doesn't work together!
198198 // Ignoring 3d ONLY WHEN YOU SET this.options.zoom
199- //if ( this.options.zoom && X.UA.isAndroid ){
199+ //if ( this.options.zoom && X_UA.isAndroid ){
200200 // translateZ = '';
201201 //}
202202
@@ -300,7 +300,7 @@ X_Class_override( iScroll.prototype, {
300300 },
301301
302302 _resize: function () {
303- X.Timer.once( X.UA.Android ? 200 : 0, this, this.refresh );
303+ X.Timer.once( X_UA.Android ? 200 : 0, this, this.refresh );
304304 // setTimeout( this.refresh(), isAndroid ? 200 : 0);
305305 },
306306
旧リポジトリブラウザで表示