リビジョン | db532e067114718c69d226d08979d236416ae73d (tree) |
---|---|
日時 | 2014-10-14 05:04:54 |
作者 | itozyun <itozyun@user...> |
コミッター | itozyun |
Version 0.6.104, fix X_shortcut & etc.
@@ -1,26 +1,36 @@ | ||
1 | 1 | |
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 | + } }; | |
10 | 11 | |
11 | 12 | var undefined, |
12 | - X = new Function( 'return X._shortcut && X._shortcut.apply( X._shortcut, arguments )' ), | |
13 | 13 | X_TEMP = { onSystemReady : [] }, |
14 | 14 | X_shortcutFunction, |
15 | 15 | X_shortcutContext; |
16 | 16 | |
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'; | |
18 | 27 | |
19 | 28 | X.bootTime = + new Date; |
20 | 29 | |
21 | 30 | X.emptyFunction = new Function; |
22 | 31 | |
23 | - // defer の場合もあるので、document.readyState を見る MacIE で false | |
32 | +// TODO defer の場合もあるので、document.readyState を見る | |
33 | +// MacIE で false | |
24 | 34 | X.inHead = (function( s ){ |
25 | 35 | if( !s ) return false; |
26 | 36 | if( !s.length ) return false; // Safari1.3 312.8 でerror |
@@ -226,15 +226,15 @@ var X_UA = (function( n, undefined ){ | ||
226 | 226 | }; |
227 | 227 | |
228 | 228 | //http://www.useragentstring.com/pages/Iris/ |
229 | - acme.Iris = dua.toLowerCase().indexOf( 'iris' ) !== -1; | |
229 | + if( dua.toLowerCase().indexOf( 'iris' ) !== -1 ) acme.Iris = true; | |
230 | 230 | |
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) | |
233 | 232 | dua.indexOf( 'Kobo' ) !== -1 || |
234 | 233 | // 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+ |
235 | 234 | dua.indexOf( 'Kindle' ) !== -1 || |
236 | 235 | // 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; | |
238 | 238 | |
239 | 239 | return acme; |
240 | 240 | })( navigator ), |
@@ -242,13 +242,12 @@ var X_UA = (function( n, undefined ){ | ||
242 | 242 | X_UA_DOM = {}, |
243 | 243 | X_UA_EVENT = {}, |
244 | 244 | 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 ); | |
246 | 246 | |
247 | 247 | /* |
248 | 248 | * http://d.hatena.ne.jp/t-uchima/20051003/p1 |
249 | 249 | * MacIEにはattachEventが一応あるけどwindow.attachEventとdocument.attachEventしかなく他の要素にはattachEventはない。 |
250 | 250 | */ |
251 | - | |
252 | 251 | if( X_UA.IE4 && X_UA.IE < 5 ){ // ie4 & iemobi4 & macie4.x |
253 | 252 | X_UA_DOM.IE4 = true; |
254 | 253 | X_UA_EVENT.IE4 = true; |
@@ -300,7 +299,7 @@ X.UA = X_UA; | ||
300 | 299 | if( X_UA.IE < 7 ){ // error @ NN7.2 |
301 | 300 | // bonus: hotfix for IE6 SP1 (bug KB823727) |
302 | 301 | // multipleIEs IE6 standalone 版では不可, IE5.5 は可,,, |
303 | - X_UA.IE4 || X.UA.MacIE ? | |
302 | + X_UA.IE4 || X_UA.MacIE ? | |
304 | 303 | document.execCommand && document.execCommand( 'BackgroundImageCache', false, true ) : |
305 | 304 | (function(){ |
306 | 305 | X_UA.IE_EXECOM_ERROR = eval( 'var a=1;try{document.execCommand&&document.execCommand("BackgroundImageCache",!1,!0)}catch(e){a=0}!a' ); |
@@ -19,9 +19,9 @@ X.Type = { | ||
19 | 19 | |
20 | 20 | isArray : |
21 | 21 | new Function( 'v', |
22 | - X.UA.IE < 5.5 ? | |
22 | + X_UA.IE < 5.5 ? | |
23 | 23 | 'return v&&v.push===Array.prototype.push' : // win ie5-, MacIE5.2 |
24 | - X.UA.IE ? | |
24 | + X_UA.IE ? | |
25 | 25 | 'return v&&Object.prototype.toString.call(v)==="[object Array]"' : |
26 | 26 | 'return v instanceof Array' |
27 | 27 | ), |
@@ -48,7 +48,7 @@ X.Type = { | ||
48 | 48 | |
49 | 49 | isHTMLElement : |
50 | 50 | new Function( 'v', |
51 | - ( X.UA.IE4 || X.UA.MacIE ) ? | |
51 | + ( X_UA.IE4 || X_UA.MacIE ) ? | |
52 | 52 | 'return v&&v.tagName&&v.insertAdjacentHTML&&true' : // ie4 or MacIE5.23, v.all <- error |
53 | 53 | window[ 'HTMLElement' ] ? |
54 | 54 | 'return v instanceof HTMLElement' : |
@@ -64,7 +64,7 @@ X.Type = { | ||
64 | 64 | function( v ){ |
65 | 65 | if( v && v.constructor === window.Image ) return true; |
66 | 66 | 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- | |
68 | 68 | if( v && v.src !== undefined && v.onload !== undefined && X.Type.isNumber( v.height ) && X.Type.isNumber( v.width ) && X.Type.isBoolean( v.complete ) ){ |
69 | 69 | return true; |
70 | 70 | }; |
@@ -1,5 +1,5 @@ | ||
1 | 1 | |
2 | -var X_Object_inObject = X.UA.IE < 5.5 ? // TODO JScript で判定 | |
2 | +var X_Object_inObject = X_UA.IE < 5.5 ? // TODO JScript で判定 | |
3 | 3 | (function( name, obj ){ |
4 | 4 | var p; |
5 | 5 | if( obj[ name ] ) return true; |
@@ -207,15 +207,14 @@ X.EventDispatcher = | ||
207 | 207 | /** |
208 | 208 | * delay(ミリ秒)後にイベントを dispatch する。戻り値は uid = X.Timer.add() のタイマーID(数値)。X.Timer.remove(uid) でタイマーを解除して dispatch を中止できる。 |
209 | 209 | * @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() の戻り値 | |
213 | 213 | */ |
214 | 214 | asyncDispatch : function( delay, e ){ |
215 | 215 | if( delay && e === undefined ){ |
216 | 216 | e = delay; |
217 | 217 | delay = 0; |
218 | - console.log( 'lazy : ' + e ); | |
219 | 218 | }; |
220 | 219 | return X.Timer.add( delay, 1, this, this.dispatch, [ e ] ); |
221 | 220 | } |
@@ -483,9 +482,9 @@ var X_EventDispatcher_actualAddEvent = | ||
483 | 482 | // Days on the Moon DOM Events とブラウザの実装 |
484 | 483 | // http://nanto.asablo.jp/blog/2007/03/23/1339502 |
485 | 484 | // 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- | |
487 | 486 | (function( that, type, raw, list ){ |
488 | - if( that._isXHR && X.UA.Opera < 12 ){ | |
487 | + if( that._isXHR && X_UA.Opera < 12 ){ | |
489 | 488 | // Opera11- の XHR は event オブジェクトが返らないため, eventType 毎に callback を指定する addEventListener もない |
490 | 489 | raw[ 'on' + type ] = X_Callback_create( that, X_EventDispatcher_dispatch, [ type ] ); |
491 | 490 | } else |
@@ -558,9 +557,9 @@ function X_EventDispatcher_removeEvent( that, type, raw, list, skip ){ | ||
558 | 557 | }; |
559 | 558 | |
560 | 559 | 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- | |
562 | 561 | (function( that, type, raw, list, skip ){ |
563 | - if( that._isXHR && X.UA.Opera < 12 ){ | |
562 | + if( that._isXHR && X_UA.Opera < 12 ){ | |
564 | 563 | X_Callback_correct( raw[ 'on' + type ] ); |
565 | 564 | raw[ 'on' + type ] = ''; |
566 | 565 | } else |
@@ -679,7 +678,7 @@ var X_EventDispatcher_actualHandleEvent = | ||
679 | 678 | if( ret & X.Callback.PREVENT_DEFAULT ){ |
680 | 679 | this._tag === 'A' && this._rawObject.blur(); |
681 | 680 | e.preventDefault(); |
682 | - if( X.UA.WebKit < 525.13 ){ // Safari3- | |
681 | + if( X_UA.WebKit < 525.13 ){ // Safari3- | |
683 | 682 | if( e.type === 'click' || e.type === 'dbclick' ){ |
684 | 683 | X_EventDispatcher_safariPreventDefault = true; |
685 | 684 | }; |
@@ -688,7 +687,7 @@ var X_EventDispatcher_actualHandleEvent = | ||
688 | 687 | }; |
689 | 688 | }); |
690 | 689 | |
691 | -if( X.UA.WebKit < 525.13 ){ // Safari3- | |
690 | +if( X_UA.WebKit < 525.13 ){ // Safari3- | |
692 | 691 | document.documentElement.onclick = |
693 | 692 | document.documentElement.ondbclick = function( e ){ |
694 | 693 | if( X_EventDispatcher_safariPreventDefault ){ |
@@ -190,7 +190,7 @@ X.Timer = { | ||
190 | 190 | // --- implements ---------------------------------------------------------- // |
191 | 191 | // ------------------------------------------------------------------------- // |
192 | 192 | |
193 | -if( X.UA.IE4 || X.UA.MacIE ){ | |
193 | +if( X_UA.IE4 || X_UA.MacIE ){ | |
194 | 194 | X.Timer[ '_' ] = X_Timer_onTimeout; |
195 | 195 | X_Timer_onTimeout = 'X.Timer._()'; |
196 | 196 | }; |
@@ -295,7 +295,7 @@ function X_Timer_compareQueue( a, b ){ | ||
295 | 295 | |
296 | 296 | // http://havelog.ayumusato.com/develop/javascript/e528-ios6_scrolling_timer_notcall.html |
297 | 297 | // iOS6 スクロール中のタイマー発火絡みのバグ備忘 |
298 | -if( X.UA.iOS ){ | |
298 | +if( X_UA.iOS ){ | |
299 | 299 | window.addEventListener( 'scroll', function(){ |
300 | 300 | var last, now; |
301 | 301 | if( X_Timer_timerId ){ |
@@ -11,14 +11,22 @@ var X_System = X_Class_override( | ||
11 | 11 | |
12 | 12 | } |
13 | 13 | } |
14 | -); | |
14 | +), | |
15 | + | |
16 | +X_System_javascriptScore; | |
15 | 17 | |
16 | 18 | // beforeunload |
17 | 19 | // unload |
18 | 20 | |
19 | 21 | X_TEMP.onRearchEndOfScript = function(){ |
20 | 22 | 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 | + | |
22 | 30 | delete X_TEMP.onRearchEndOfScript; |
23 | 31 | delete X_TEMP.onSystemReady; |
24 | 32 |
@@ -9,7 +9,7 @@ var X_ViewPort_readyState, | ||
9 | 9 | X_ViewPort_vScrollbarSize, |
10 | 10 | X_ViewPort_hScrollbarSize, |
11 | 11 | |
12 | - X_Dom_detectFontSize = !( X.UA.IE < 9 || X.UA.iOS ) && function(){ | |
12 | + X_Dom_detectFontSize = !( X_UA.IE < 9 || X_UA.iOS ) && function(){ | |
13 | 13 | var size = X_Node_fontSizeNode._rawObject.offsetHeight; |
14 | 14 | if( X_ViewPort_baseFontSize !== size ){ |
15 | 15 | 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, | ||
20 | 20 | X_ViewPort_orientationFlag, |
21 | 21 | X_Dom_orientationchange = window[ 'orientation' ] !== undefined && function( e ){ |
22 | 22 | X_ViewPort_orientationFlag = true; |
23 | - !X.UA.Android && X_ViewPort_resize(); | |
23 | + !X_UA.Android && X_ViewPort_resize(); | |
24 | 24 | //console.log( '-- orientationchange : ' + X.ViewPort.getSize[ 0 ] + ' ' + X.ViewPort.getSize[ 1 ] ); |
25 | 25 | }, |
26 | 26 |
@@ -133,7 +133,7 @@ X.ViewPort = { | ||
133 | 133 | // Safari2.0.4では標準・互換どちらも document.body |
134 | 134 | |
135 | 135 | X_Node_body._updateTimerID && X_Node_startUpdate(); |
136 | - /*X.UA.Opera ? | |
136 | + /*X_UA.Opera ? | |
137 | 137 | ( document.documentElement && document.documentElement.clientWidth ? |
138 | 138 | new Function( 'return[document.documentElement.clientWidth,document.documentElement.clientHeight]' ) : |
139 | 139 | new Function( 'return[document.body.clientWidth,document.body.clientHeight]' ) |
@@ -204,7 +204,7 @@ X.ViewPort = { | ||
204 | 204 | */ |
205 | 205 | var X_ViewPort_resize = |
206 | 206 | // iOS もループで回す,,,iOS3.1.3, iOS6 で確認 |
207 | - X.UA.IE < 9 || X.UA.iOS ? | |
207 | + X_UA.IE < 9 || X_UA.iOS ? | |
208 | 208 | (function(){ |
209 | 209 | var size; |
210 | 210 | if( !X_ViewPort_lock ){ |
@@ -297,7 +297,7 @@ X.ViewPort = { | ||
297 | 297 | |
298 | 298 | X_ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_XTREE, function(){ |
299 | 299 | X_ViewPort_readyState = X_TEMP.SYSTEM_EVENT_INIT; |
300 | - //X.UA.Opera7 && alert( 'bc' ); | |
300 | + //X_UA.Opera7 && alert( 'bc' ); | |
301 | 301 | X_Node_body.appendAt( 0, |
302 | 302 | X_Node_systemNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ), |
303 | 303 | X_Node_fontSizeNode = Node.create( 'div', { 'class' : 'hidden-system-node' } ).cssText( 'line-height:1;height:1em;' ).text( 'X' ) |
@@ -367,7 +367,7 @@ X.ViewPort = { | ||
367 | 367 | if( document[ 'webkitHidden' ] !== undefined ) { |
368 | 368 | X_ViewPort_document.listen( 'webkitvisibilitychange', X_ViewPort ); |
369 | 369 | } else |
370 | - if( X.UA.iOS && window[ 'onpageshow' ] !== undefined ) { | |
370 | + if( X_UA.iOS && window[ 'onpageshow' ] !== undefined ) { | |
371 | 371 | X_ViewPort.listen( 'pageshow', X_ViewPort ) |
372 | 372 | .listen( 'pagehide', X_ViewPort ); |
373 | 373 | } else { |
@@ -379,7 +379,7 @@ X.ViewPort = { | ||
379 | 379 | }; |
380 | 380 | |
381 | 381 | function X_ViewPort_getWindowSize(){ |
382 | - return X.UA.IE ? | |
382 | + return X_UA.IE ? | |
383 | 383 | [ X_ViewPort_rootElement.clientWidth, X_ViewPort_rootElement.clientHeight ] : |
384 | 384 | [ window.innerWidth, window.innerHeight ]; |
385 | 385 | }; |
@@ -400,7 +400,7 @@ console.log( 'X.Dom dom:w3c=' + X_UA_DOM.W3C + ' ev:w3c=' + X_UA_EVENT.W3C ); | ||
400 | 400 | if( X_UA_EVENT.W3C ){ |
401 | 401 | X_ViewPort_document.listenOnce( 'DOMContentLoaded', X_TEMP.onDomContentLoaded ); |
402 | 402 | } else |
403 | -if( 6 <= X.UA.IE && X.inHead ){ | |
403 | +if( 6 <= X_UA.IE && X.inHead ){ | |
404 | 404 | // if this script in Head |
405 | 405 | document.write( "<script id=__ie_onload defer src=javascript:void(0)><\/script>" ); |
406 | 406 | X_TEMP._script = document.getElementById( "__ie_onload" ); |
@@ -417,7 +417,7 @@ if( 6 <= X.UA.IE && X.inHead ){ | ||
417 | 417 | }; |
418 | 418 | // Re: onLoad doesn't work with Safari? |
419 | 419 | // 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 | |
421 | 421 | X.Timer.add( 16, function(){ |
422 | 422 | if( !X_TEMP.onDomContentLoaded ) return X_Callback_UN_LISTEN; |
423 | 423 | if( document.readyState === 'loaded' || document.readyState === 'complete' ) return X_TEMP.onDomContentLoaded(); |
@@ -32,4 +32,9 @@ X.Doc = { | ||
32 | 32 | listening : function( type, arg1, arg2, arg3 ){ |
33 | 33 | return X_ViewPort_document.listening( type, arg1, arg2, arg3 ); |
34 | 34 | } |
35 | + | |
36 | + // html | |
37 | + // head | |
38 | + // body | |
39 | + // find | |
35 | 40 | }; |
@@ -7,18 +7,18 @@ var | ||
7 | 7 | CLASSNAME : 8, // _getCharSize, width, height, x, y |
8 | 8 | ATTR : 16, // _getCharSize, width, height, x, y |
9 | 9 | 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, | |
11 | 11 | UNKNOWN_TAG_FIX : 128, |
12 | 12 | IE4_TEXTNODE_FIX : 256 |
13 | 13 | }, |
14 | 14 | |
15 | 15 | X_Node_State = { |
16 | 16 | 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 | |
22 | 22 | POSITION_ABSOLUTE : 32, |
23 | 23 | OVERFLOW_HIDDEN : 64, |
24 | 24 | HAS_WIDTH_LENGTH : 128, |
@@ -26,7 +26,7 @@ var | ||
26 | 26 | HAS_HEIGHT_LENGTH : 512, |
27 | 27 | HAS_HEIGHT_PERCENT : 1024, |
28 | 28 | 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- は ? | |
30 | 30 | }, |
31 | 31 | |
32 | 32 | X_Node_TYPE = { |
@@ -42,9 +42,9 @@ var | ||
42 | 42 | IMAGE : 10 |
43 | 43 | }, |
44 | 44 | |
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; | |
46 | 46 | |
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(), | |
48 | 48 | |
49 | 49 | X_Node_newByTag = false, |
50 | 50 |
@@ -67,7 +67,7 @@ var | ||
67 | 67 | _rawObject : null, |
68 | 68 | _rect : null, // |
69 | 69 | |
70 | - _root : null, // xnode が文書ツリーに属しているか?はこれを見る | |
70 | + _root : null, // xnode が文書ツリーに属しているか?はこれを見る -> state | |
71 | 71 | parent : null, // remove された枝も親子構造は維持している。 |
72 | 72 | _xnodes : null, |
73 | 73 |
@@ -95,10 +95,10 @@ var | ||
95 | 95 | var css, xnodes, xnode, parent, uid = X_Node_CHASHE.length; |
96 | 96 | |
97 | 97 | if( X_Node_newByTag ){ |
98 | - X_Node_newByTag = false; | |
98 | + X_Node_newByTag = false; | |
99 | 99 | this._tag = v.toUpperCase(); |
100 | 100 | this._xnodeType = 1; |
101 | - this._state = X_Node_State.DISPLAY_INLINE; // todo | |
101 | + this._state = X_Node_State.DISPLAY_INLINE; // TODO | |
102 | 102 | arguments[ 1 ] && this.attr( arguments[ 1 ] ); |
103 | 103 | css = arguments[ 2 ]; |
104 | 104 | css && this[ X.Type.isString( css ) ? 'cssText' : 'css' ]( css ); |
@@ -122,10 +122,10 @@ var | ||
122 | 122 | if( xnode = X_Node_getXNode( v ) ) return xnode; |
123 | 123 | // v.parentNode || v.parentElement : dom1 || dom0 |
124 | 124 | 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; | |
126 | 126 | this._rawObject = v; |
127 | 127 | this._xnodeType = 1; |
128 | - this._state = X_Node_State.DISPLAY_BLOCK; // todo | |
128 | + this._state = X_Node_State.DISPLAY_BLOCK; // TODO | |
129 | 129 | this._tag = v.tagName.toUpperCase(); |
130 | 130 | this._id = v.id; |
131 | 131 | this._className = v.className; |
@@ -143,7 +143,7 @@ var | ||
143 | 143 | case X_Node_TYPE.RAW_TEXT : |
144 | 144 | if( xnode = X_Node_getXNode( v ) ) return xnode; |
145 | 145 | 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; | |
147 | 147 | this._rawObject = v; |
148 | 148 | this._xnodeType = 3; |
149 | 149 | this._state = X_Node_State.DISPLAY_INLINE; |
@@ -1114,7 +1114,7 @@ var X_Node__updateRawNode = | ||
1114 | 1114 | }; |
1115 | 1115 | // className |
1116 | 1116 | 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-? | |
1118 | 1118 | |
1119 | 1119 | // ie5 only |
1120 | 1120 | if( X_Node_State.IE5_DISPLAY_NONE_FIX && elm.currentStyle.display === 'none' ){ |
@@ -1127,7 +1127,7 @@ var X_Node__updateRawNode = | ||
1127 | 1127 | // TODO display:none の場合、更新をスキップ |
1128 | 1128 | if( that._dirty & X_Node_Dirty.CSS ){ |
1129 | 1129 | 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 ? | |
1131 | 1131 | elm.setAttribute( 'style', that._cssText ) : // opera8用 |
1132 | 1132 | ( elm.style.cssText = that._cssText ); |
1133 | 1133 | } else { |
@@ -1146,7 +1146,7 @@ var X_Node__updateRawNode = | ||
1146 | 1146 | if( that._dirty & X_Node_Dirty.ATTR && ( attrs = that._newAttrs || that._attrs ) ){ |
1147 | 1147 | rename = X_Node_Attr_renameForDOM; |
1148 | 1148 | 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 ではエラーが出たので | |
1150 | 1150 | if( that._tag === 'TEXTAREA' && k === 'value' ){ |
1151 | 1151 | elm.firstChild ? |
1152 | 1152 | ( elm.firstChild.data = attrs[ k ] ) : |
@@ -1400,7 +1400,7 @@ var X_Node__actualRemove = | ||
1400 | 1400 | if( !elm ) return; |
1401 | 1401 | that._xnodeType === 1 && X_EventDispatcher_toggleAllEvents( that, false );// イベントの退避 |
1402 | 1402 | // elm.parentNode.tagName for ie7 |
1403 | - if( !X.UA.MacIE ){ | |
1403 | + if( !X_UA.MacIE ){ | |
1404 | 1404 | !isChild && elm.parentNode && elm.parentNode.tagName && elm.parentNode.removeChild( elm ); |
1405 | 1405 | } else { |
1406 | 1406 | !isChild && elm.parentNode && elm.parentNode.tagName && X_TEMP._fixed_remove( elm, that ); |
@@ -18,7 +18,7 @@ var X_Dom_Event_devicePixelRatio = window.devicePixelRatio || ( window.screen.de | ||
18 | 18 | '4' : 'mouse' |
19 | 19 | }; */ |
20 | 20 | |
21 | -if( !X.UA.IE || 9 <= X.UA.IE ){ | |
21 | +if( !X_UA.IE || 9 <= X_UA.IE ){ | |
22 | 22 | X.Dom.Event = function( e, xnode ){ |
23 | 23 | var originalType = e.type, |
24 | 24 | type, pointerType, |
@@ -178,7 +178,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){ | ||
178 | 178 | |
179 | 179 | // http://www.programming-magic.com/20090127231544/ |
180 | 180 | // Opera で button==2の場合、コンテキストメニューイベントを発火 「ツール」->「設定」->「詳細設定」->「コンテンツ」->「Javascriptオプション」で「右クリックを制御するスクリプトを許可する」 |
181 | - if( originalType === 'mousedown' && this.button === 2 && X.UA.Opera ){ | |
181 | + if( originalType === 'mousedown' && this.button === 2 && X_UA.Opera ){ | |
182 | 182 | events = [ X.Object.clone( this ), X.Object.clone( this ) ]; |
183 | 183 | events[ 1 ].type = 'contextmenu'; |
184 | 184 | return events; |
@@ -289,7 +289,7 @@ if( !X.UA.IE || 9 <= X.UA.IE ){ | ||
289 | 289 | //event.pageY = DOMAssistant.def(e.pageY)? e.pageY : (event.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0)); |
290 | 290 | //}; |
291 | 291 | |
292 | - if( 5 <= X.UA.IE ){ | |
292 | + if( 5 <= X_UA.IE ){ | |
293 | 293 | this.offsetX = e.offsetX; // イベントターゲット左上からの座標 |
294 | 294 | this.offsetY = e.offsetY; |
295 | 295 | }// else |
@@ -322,23 +322,24 @@ X.Dom.Event.ANIME_STOP = ++X_Event_last; | ||
322 | 322 | |
323 | 323 | |
324 | 324 | // TODO load -> readystatechange this.readyState === "loaded" || this.readyState === "complete" |
325 | +/* | |
325 | 326 | X.Dom.Event._LOAD_FIX_TAGS = { |
326 | 327 | IFRAME : true, |
327 | 328 | SCRIPT : true//, |
328 | 329 | //LINK : true |
329 | -}; | |
330 | +}; */ | |
330 | 331 | |
331 | 332 | // https://github.com/georgeadamson/jQuery.prefixfree-events/blob/master/jQuery.prefixfree-events.js |
332 | 333 | // https://developer.mozilla.org/en-US/docs/Web/Events/wheel |
333 | 334 | // |
334 | 335 | if( document.onwheel === undefined ){ |
335 | 336 | // 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+) | |
338 | 339 | console.log( 'wheel <= MozMousePixelScroll' ); |
339 | 340 | X_Event_Rename[ 'wheel' ] = 'MozMousePixelScroll'; |
340 | 341 | } 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+?) | |
342 | 343 | console.log( 'wheel <= DOMMouseScroll' ); |
343 | 344 | X_Event_Rename[ 'wheel' ] = 'DOMMouseScroll'; |
344 | 345 | }; |
@@ -386,11 +387,11 @@ if( window.onwebkittransitionend !== undefined && window.ontransitionend === und | ||
386 | 387 | X_Event_Rename[ 'transitionend' ] = 'webkitTransitionEnd'; |
387 | 388 | } else |
388 | 389 | 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 ); | |
391 | 392 | X_Event_Rename[ 'transitionend' ] = 'oTransitionEnd'; |
392 | 393 | } else { |
393 | - console.log( 'transitionend <= otransitionEnd|ver.' + X.UA.Opera ); | |
394 | + console.log( 'transitionend <= otransitionEnd|ver.' + X_UA.Opera ); | |
394 | 395 | X_Event_Rename[ 'transitionend' ] = 'otransitionEnd'; |
395 | 396 | }; |
396 | 397 | } else |
@@ -409,11 +410,12 @@ if( !navigator.pointerEnabled ){ | ||
409 | 410 | // http://msdn.microsoft.com/ja-jp/library/ie/dn304886%28v=vs.85%29.aspx |
410 | 411 | } else |
411 | 412 | if( X_UA_HID.TOUCH ){ |
413 | + // touch のみ(iOS でも脱獄したら?)、 touch と mouse(Android), mouse のみ | |
412 | 414 | X_Event_Rename[ 'pointerdown' ] = [ 'touchdown', 'mousedown' ]; |
413 | 415 | X_Event_Rename[ 'pointerup' ] = [ 'touchup', 'mouseup' ]; |
414 | 416 | X_Event_Rename[ 'pointermove' ] = [ 'touchmove', 'mousemove' ]; |
415 | 417 | X_Event_Rename[ 'pointercancel' ] = 'touchcancel'; |
416 | - // X_Event_Rename[ 'click' ] = [ 'click', 'tap' ]; // ループになってしまう!直した! | |
418 | + // X_Event_Rename[ 'click' ] = [ 'touchdown', 'touchmove', 'touchup' ]; // ループになってしまう!直した!直ってない! | |
417 | 419 | } else { |
418 | 420 | X_Event_Rename[ 'pointerdown' ] = 'mousedown'; |
419 | 421 | X_Event_Rename[ 'pointerup' ] = 'mouseup'; |
@@ -421,7 +423,11 @@ if( !navigator.pointerEnabled ){ | ||
421 | 423 | X_Event_Rename[ 'pointercancel' ] = 'mouseleave';//?? |
422 | 424 | |
423 | 425 | // Opera は ブラウザ設定から右クリックの通知を許可すると mousedown で e.button==2 が返る,キャンセルは可能?? |
424 | - X.UA.Opera && ( | |
426 | + X_UA.Opera && ( | |
425 | 427 | X_Event_Rename[ 'contextmenu' ] = 'mousedown' ); |
428 | + | |
429 | + /* | |
430 | + * buttons の無いブラウザには mouseup, mousedown を監視して、buttons フラグを更新し続ける | |
431 | + */ | |
426 | 432 | }; |
427 | 433 | }; |
@@ -126,9 +126,17 @@ Node.prototype.attr = function( nameOrObj /* v */ ){ | ||
126 | 126 | case 'style' : |
127 | 127 | case 'cssText' : |
128 | 128 | 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; | |
129 | 138 | case 'value' : |
130 | 139 | case 'checked' : |
131 | - case 'selected' : | |
132 | 140 | case 'disabled' : |
133 | 141 | case 'selectedIndex' : |
134 | 142 | if( X_Node_Attr_HAS_VALUE[ this._tag ] ){ |
@@ -164,6 +172,10 @@ function X_Node_Attr_setAttr( that, attrs, newAttrs, name, v ){ | ||
164 | 172 | case 'style' : |
165 | 173 | case 'cssText' : |
166 | 174 | return that.cssText( v ); |
175 | + case 'text' : | |
176 | + return that.text( v ); | |
177 | + case 'html' : | |
178 | + return that.html( v ); | |
167 | 179 | }; |
168 | 180 | // debug |
169 | 181 | if( name.indexOf( 'on' ) === 0 ){ |
@@ -133,12 +133,12 @@ X_Node_CSS_objToCssText = function( obj ){ | ||
133 | 133 | }, |
134 | 134 | |
135 | 135 | 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 ? | |
137 | 137 | { |
138 | 138 | opacity : 1, |
139 | 139 | textShadow : 1 |
140 | 140 | } : |
141 | - 9 <= X.UA.IE && X.UA.IE < 10 ? // == 9 | |
141 | + 9 <= X_UA.IE && X_UA.IE < 10 ? // == 9 | |
142 | 142 | {} : |
143 | 143 | {}, |
144 | 144 |
@@ -332,7 +332,7 @@ X_Node_CSS_PARAMS = ( function(){ | ||
332 | 332 | return ret; |
333 | 333 | })(), |
334 | 334 | |
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 ? ' ' : ',', | |
336 | 336 | |
337 | 337 | /* |
338 | 338 | * |
@@ -870,7 +870,7 @@ var X_Node_CSS__GET_VALUE_WITH_UNIT = { | ||
870 | 870 | |
871 | 871 | var X_Node_CSS_SPECIAL_FIX = |
872 | 872 | // ~IE8 |
873 | - X.UA.IE && X.UA.IE < 9 && !X.UA.MacIE? | |
873 | + X_UA.IE && X_UA.IE < 9 && !X_UA.MacIE? | |
874 | 874 | (function( obj ){ |
875 | 875 | var test = X_Node_CSS_SPECIAL_FIX_PROP, |
876 | 876 | filters = [], |
@@ -909,7 +909,7 @@ var X_Node_CSS_SPECIAL_FIX = | ||
909 | 909 | return filters.join( ' ' ); |
910 | 910 | }) : |
911 | 911 | // 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 ? | |
913 | 913 | (function( obj ){ |
914 | 914 | var test = X_Node_CSS_SPECIAL_FIX_PROP, |
915 | 915 | filters = [], p, id, v; |
@@ -1085,7 +1085,7 @@ Node.prototype._getCharSize = | ||
1085 | 1085 | return this._fontSize = parseFloat( document.defaultView.getComputedStyle( this._rawObject, null ).fontSize ); |
1086 | 1086 | }) : |
1087 | 1087 | |
1088 | - 5.5 <= X.UA.IE ? | |
1088 | + 5.5 <= X_UA.IE ? | |
1089 | 1089 | (function(){ |
1090 | 1090 | var font, vu, v, u, _v; |
1091 | 1091 | X_Node_body._updateTimerID && X_Node_startUpdate(); |
@@ -1195,7 +1195,7 @@ X.CSS = { | ||
1195 | 1195 | var X_Node_CSS_Support, X_Node_CSS_SPECIAL_FIX_PROP; |
1196 | 1196 | |
1197 | 1197 | ( 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, | |
1199 | 1199 | temp = testStyle.cssText, |
1200 | 1200 | prefix = X_Node_CSS_VENDER_PREFIX, |
1201 | 1201 | 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; | ||
1235 | 1235 | |
1236 | 1236 | X_Node_CSS_SPECIAL_FIX_PROP = |
1237 | 1237 | // ~IE8 |
1238 | - X.UA.IE < 9 && !X.UA.MacIE ? | |
1238 | + X_UA.IE < 9 && !X_UA.MacIE ? | |
1239 | 1239 | { |
1240 | 1240 | filter : 1, |
1241 | 1241 | opacity : 2//, uinode ChromeNode で行う |
@@ -1244,7 +1244,7 @@ var X_Node_CSS_Support, X_Node_CSS_SPECIAL_FIX_PROP; | ||
1244 | 1244 | //backgroundImage : 5 |
1245 | 1245 | } : |
1246 | 1246 | // IE9 |
1247 | - 9 <= X.UA.IE && X.UA.IE < 10 ? | |
1247 | + 9 <= X_UA.IE && X_UA.IE < 10 ? | |
1248 | 1248 | { |
1249 | 1249 | filter : 1//, |
1250 | 1250 | //textShadow : 1 |
@@ -219,7 +219,7 @@ function X_Node_Selector__parse( query, last ){ | ||
219 | 219 | }; |
220 | 220 | |
221 | 221 | // セレクター |
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 ){ | |
223 | 223 | var HTML = X_Node_html, |
224 | 224 | scope = this.constructor === X_NodeList && this.length ? this : [ this.constructor === Node ? this : X_Node_body ], |
225 | 225 | parents = scope, // 探索元の親要素 XNodeList の場合あり |
@@ -440,7 +440,7 @@ function X_Node_Selector__parse( query, last ){ | ||
440 | 440 | // 諦めて、funcAttrを呼ぶ |
441 | 441 | // flag_call = ($.browser.safari && key === 'selected'); |
442 | 442 | // getAttributeを使わない |
443 | - useName = X.UA.IE && key !== 'href' && key !== 'src'; | |
443 | + useName = X_UA.IE && key !== 'href' && key !== 'src'; | |
444 | 444 | toLower = !!val && !isXML && noLower.indexOf( key ) === -1; //!noLower.test(key); |
445 | 445 | if( toLower ) val = val.toLowerCase(); |
446 | 446 | if( op === 3 ) val = _ + val + _; |
@@ -8,7 +8,7 @@ X_TEMP._isCleanupTarget = function( elm ){ | ||
8 | 8 | ( X_Dom_DTD_CLEANUP_TAGS[ tag ] || cname.indexOf( ' cleanup-target ' ) !== -1 ); |
9 | 9 | }; |
10 | 10 | |
11 | -if( X.UA.MacIE ){ | |
11 | +if( X_UA.MacIE ){ | |
12 | 12 | |
13 | 13 | X_TEMP._fixed_remove = function( node, xnode ){ |
14 | 14 | var parent = node.parentNode, l; |
@@ -86,7 +86,7 @@ if( X.UA.MacIE ){ | ||
86 | 86 | }; |
87 | 87 | |
88 | 88 | } else |
89 | -if( X.UA.Opera7 ){ | |
89 | +if( X_UA.Opera7 ){ | |
90 | 90 | |
91 | 91 | X_TEMP._fixed_remove = function( node ){ |
92 | 92 | if( node.nodeType === 1 || node.nodeType === 3 ){ |
@@ -117,7 +117,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, | ||
117 | 117 | |
118 | 118 | // TODO |
119 | 119 | // textarea の内容を控えて、消す。xnode tree 構築後に復帰。でないと、html パースでこける |
120 | - //X.UA.MacIE && alert( body.innerHTML ); | |
120 | + //X_UA.MacIE && alert( body.innerHTML ); | |
121 | 121 | // cleanup tree |
122 | 122 | (function/*cleanUpTree*/( elm, skip, head ){ |
123 | 123 | var nodes = X_Object_cloneArray( elm.childNodes ), |
@@ -157,7 +157,7 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, | ||
157 | 157 | // ブロック要素直下のスペースだけは削除?? |
158 | 158 | default : |
159 | 159 | //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 */ ){ | |
161 | 161 | elm.removeChild( node ); |
162 | 162 | } else { |
163 | 163 | X_TEMP._fixed_remove( node ); |
@@ -165,13 +165,13 @@ X.ViewPort.listenOnce( X_TEMP.SYSTEM_EVENT_PRE_INIT, | ||
165 | 165 | //++count; |
166 | 166 | }; |
167 | 167 | }; |
168 | - })( X.UA.MacIE ? ( copy = body.cloneNode( true ) ) : body ); | |
168 | + })( X_UA.MacIE ? ( copy = body.cloneNode( true ) ) : body ); | |
169 | 169 | |
170 | - if( X.UA.MacIE ){ | |
170 | + if( X_UA.MacIE ){ | |
171 | 171 | document.write( html = copy.innerHTML ); |
172 | 172 | } else { |
173 | 173 | // body の属性値の取得 |
174 | - if( X.UA.IE5678 ){ | |
174 | + if( X_UA.IE5678 ){ | |
175 | 175 | html = body.innerHTML.split( X_String_CRLF ).join( '' ); // 不要な改行が入る |
176 | 176 | } else { |
177 | 177 | html = body.innerHTML; |
@@ -330,7 +330,7 @@ X_TEMP.bindElementToXnode = | ||
330 | 330 | elm = elems[ current.j ]; |
331 | 331 | tag = elm.tagName && elm.tagName.toUpperCase(); |
332 | 332 | 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 ){ | |
334 | 334 | elm.parentNode.removeChild( elm ); |
335 | 335 | } else { |
336 | 336 | X_TEMP._fixed_remove( elm ); |
@@ -342,7 +342,7 @@ X_TEMP.bindElementToXnode = | ||
342 | 342 | if( elm.nodeType === 3 ){ |
343 | 343 | if( !( text = elm.data ) || ( text = X_String_cleanupWhiteSpace( text ) ) === ' ' ){ |
344 | 344 | //alert( text.charCodeAt( 0 ) ); |
345 | - if( !X.UA.Opera7 && !X.UA.MacIE ){ | |
345 | + if( !X_UA.Opera7 && !X_UA.MacIE ){ | |
346 | 346 | elm.parentNode.removeChild( elm ); |
347 | 347 | } else { |
348 | 348 | X_TEMP._fixed_remove( elm ); |
@@ -11,9 +11,9 @@ | ||
11 | 11 | * flash player 12, ie8+, ff17, opera11 |
12 | 12 | */ |
13 | 13 | var X_Pulgin_FLASH_VERSION = |
14 | - !X.UA.IE && navigator.plugins[ 'Shockwave Flash' ] ? | |
14 | + !X_UA.IE && navigator.plugins[ 'Shockwave Flash' ] ? | |
15 | 15 | 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(){ | |
17 | 17 | var obj = eval( 'var a;try{a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")}catch(e){}a' ), |
18 | 18 | ver = obj && obj.GetVariable( '$version' ).split( ' ' ).join( '.' ); |
19 | 19 | return parseFloat( ver ) || 0; |
@@ -21,7 +21,7 @@ var X_Pulgin_FLASH_VERSION = | ||
21 | 21 | 0, |
22 | 22 | |
23 | 23 | X_Pulgin_FLASH_ENABLED = |
24 | - X.UA.ActiveX ? !!X_Pulgin_FLASH_VERSION : | |
24 | + X_UA.ActiveX ? !!X_Pulgin_FLASH_VERSION : | |
25 | 25 | navigator.mimeTypes && |
26 | 26 | navigator.mimeTypes[ 'application/x-shockwave-flash' ] && |
27 | 27 | navigator.mimeTypes[ 'application/x-shockwave-flash' ].enabledPlugin, |
@@ -30,31 +30,31 @@ var X_Pulgin_FLASH_VERSION = | ||
30 | 30 | * ie11 の 互換モード(8,7)では、Silverlight が動作しない? |
31 | 31 | */ |
32 | 32 | X_Pulgin_SILVER_LIGHT_VERSION = |
33 | - !X.UA.IE && navigator.plugins[ 'Silverlight Plug-In' ] ? | |
33 | + !X_UA.IE && navigator.plugins[ 'Silverlight Plug-In' ] ? | |
34 | 34 | 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(){ | |
36 | 36 | 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' ); |
37 | 37 | })() : |
38 | 38 | 0, |
39 | 39 | |
40 | 40 | X_Pulgin_SILVER_LIGHT_ENABLED = |
41 | - X.UA.ActiveX ? !!X_Pulgin_SILVER_LIGHT_VERSION : | |
41 | + X_UA.ActiveX ? !!X_Pulgin_SILVER_LIGHT_VERSION : | |
42 | 42 | navigator.mimeTypes && |
43 | 43 | navigator.mimeTypes[ 'application/x-silverlight' ] && |
44 | 44 | navigator.mimeTypes[ 'application/x-silverlight' ].enabledPlugin, |
45 | 45 | |
46 | 46 | //http://docs.unity3d.ru/Manual/Detecting%20the%20Unity%20Web%20Player%20using%20browser%20scripting.html |
47 | 47 | X_Pulgin_UNITY_VERSION = |
48 | - !X.UA.IE && navigator.plugins[ 'Unity Player' ] ? | |
48 | + !X_UA.IE && navigator.plugins[ 'Unity Player' ] ? | |
49 | 49 | 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(){ | |
51 | 51 | var obj = eval( 'var a;try{a=new ActiveXObject("UnityWebPlayer.UnityWebPlayer.1")}catch(e){}a' ); |
52 | 52 | return obj ? parseFloat( obj.GetPluginVersion() ) : 0; |
53 | 53 | })() : |
54 | 54 | 0, |
55 | 55 | |
56 | 56 | X_Pulgin_UNITY_ENABLED = |
57 | - X.UA.ActiveX ? !!X_Pulgin_UNITY_VERSION : | |
57 | + X_UA.ActiveX ? !!X_Pulgin_UNITY_VERSION : | |
58 | 58 | navigator.mimeTypes && |
59 | 59 | navigator.mimeTypes[ 'application/vnd.unity' ] && |
60 | 60 | navigator.mimeTypes[ 'application/vnd.unity' ].enabledPlugin; |
@@ -37,11 +37,11 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits( | ||
37 | 37 | |
38 | 38 | // http://nanto.asablo.jp/blog/2011/12/08/6237308 |
39 | 39 | // IE 6/7 で文書間通信を実現するための一案 |
40 | - if( X.UA.IE < 9 ){ | |
40 | + if( X_UA.IE < 9 ){ | |
41 | 41 | this.xnodeIframe.attr( 'src', 'about:blank' ); |
42 | 42 | }; |
43 | 43 | // Safari 2.0.* bug: iframe's absolute position and src set. |
44 | - if( !X.UA.Webkit ){ | |
44 | + if( !X_UA.Webkit ){ | |
45 | 45 | this.xnodeIframe.css( { position : 'absolute' } ); |
46 | 46 | }; |
47 | 47 |
@@ -56,9 +56,9 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits( | ||
56 | 56 | case X.Event.AFTER_UPDATE : |
57 | 57 | this._iwin = raw.contentWindow || raw.contentDocument && raw.contentDocument.parentWindow || window.frames[ this._name ]; |
58 | 58 | |
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 ); | |
60 | 60 | |
61 | - if( !( X.UA.IE < 9 ) ){ | |
61 | + if( !( X_UA.IE < 9 ) ){ | |
62 | 62 | this._html && X_Util_NinjaIframe_writeToIframe( this ); |
63 | 63 | this._ready = true; |
64 | 64 | return; |
@@ -96,7 +96,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits( | ||
96 | 96 | return this; |
97 | 97 | }; |
98 | 98 | |
99 | - if( X.UA.IE5 || X.UA.IE55 ){ | |
99 | + if( X_UA.IE5 || X_UA.IE55 ){ | |
100 | 100 | this._iwin.location.href = 'about:blank'; // reload() では、IE5.5(IETester)で2回目移行の操作でerrorが出る(doc取得やopen,writeで) |
101 | 101 | } else { |
102 | 102 | this._iwin.location.reload(); |
@@ -105,7 +105,7 @@ X.Util.NinjaIframe = X.EventDispatcher.inherits( | ||
105 | 105 | if( !opt_html ) return this; |
106 | 106 | |
107 | 107 | this._html = opt_html; |
108 | - X.UA.IE < 9 || X_Util_NinjaIframe_writeToIframe( this ); | |
108 | + X_UA.IE < 9 || X_Util_NinjaIframe_writeToIframe( this ); | |
109 | 109 | |
110 | 110 | return this; |
111 | 111 | }, |
@@ -50,7 +50,7 @@ function X_Util_Image_getActualDimension( XnodeOrImageElemOrSrc ){ | ||
50 | 50 | // for Firefox, Safari, Google Chrome |
51 | 51 | if( img.naturalWidth ) return [ img.naturalWidth, img.naturalHeight ]; |
52 | 52 | |
53 | - if( 5 <= X.UA.IE ){// for IE | |
53 | + if( 5 <= X_UA.IE ){// for IE | |
54 | 54 | run = img.runtimeStyle; |
55 | 55 | memW = run.width; |
56 | 56 | memH = run.height; |
@@ -6,7 +6,7 @@ X.Net = { | ||
6 | 6 | return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'GET', url : url } ); |
7 | 7 | }, |
8 | 8 | |
9 | - xhrPost : function( url, data ){ | |
9 | + xhrPost : function( url, postbody ){ | |
10 | 10 | return new X_NET_Queue( X_NET_TYPE_XHR, { method : 'POST', url : url, postbody : postbody } ); |
11 | 11 | }, |
12 | 12 |
@@ -106,19 +106,16 @@ function X_NET_proxyDispatch( e ){ | ||
106 | 106 | case X.Event.KILL_INSTANCE_CANCELED : |
107 | 107 | break; |
108 | 108 | case X.Event.PROGRESS : |
109 | - console.log( 'q: ' + e.type ); | |
110 | 109 | this.dispatch( e ); |
111 | 110 | break; |
112 | 111 | case X.Event.SUCCESS : |
113 | 112 | case X.Event.ERROR : |
114 | 113 | case X.Event.TIMEOUT : |
115 | 114 | case X.Event.CANCELED : |
116 | - console.log( 'q: ' + e.type ); | |
117 | 115 | this.dispatch( e ); |
118 | 116 | this.asyncDispatch( X.Event.COMPLETE ); |
119 | 117 | break; |
120 | 118 | case X.Event.COMPLETE : |
121 | - console.log( 'complete. then kill()' ); | |
122 | 119 | this.kill(); |
123 | 120 | X_NET_shiftQueue(); |
124 | 121 | break; |
@@ -19,10 +19,10 @@ new ActiveXObject( 'Msxml2.XMLHTTP.4.0' ); // バージョン4.0 は bugfix が | ||
19 | 19 | new ActiveXObject( 'Msxml2.XMLHTTP.5.0' ); // バージョン5.0 は bugfix が行われないので、3.0 か 6.0 を指定すべき |
20 | 20 | |
21 | 21 | */ |
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(), | |
23 | 23 | X_Net_XHR_X_DOMAIN = window[ 'XDomainRequest' ] && new XDomainRequest(), |
24 | 24 | 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( [ | |
26 | 26 | 'var x=".XMLHTTP",', |
27 | 27 | 'm="MSXML2"+x,', |
28 | 28 | '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 ){ | ||
217 | 217 | ( 200 <= status && status < 300 ) || |
218 | 218 | status === 304 || |
219 | 219 | status === 1223 || |
220 | - ( X.UA.Webkit && status === undefined ) // safari: /webkit/.test(userAgent) | |
220 | + ( X_UA.Webkit && status === undefined ) // safari: /webkit/.test(userAgent) | |
221 | 221 | ){ |
222 | 222 | /* |
223 | 223 | * opera8, safari2, khtml3 で utf8 日本語文字列の文字化け |
@@ -289,10 +289,10 @@ if( X_Net_XHR_W3C || X_Net_XHR_ACTIVE_X ){ | ||
289 | 289 | |
290 | 290 | |
291 | 291 | // ie8 では timeout が有効, MSXML のバージョンは関係なさそう、、、 |
292 | - if( X.UA.IE8 ){ | |
292 | + if( X_UA.IE8 ){ | |
293 | 293 | X_NET_XHRWrapper.listen( [ 'readystatechange', 'error', 'abort', 'timeout' ] ); |
294 | 294 | } else |
295 | - if( X.UA.IE7 ){ | |
295 | + if( X_UA.IE7 ){ | |
296 | 296 | if( X_URL_IS_LOCAL ){ |
297 | 297 | X_NET_XHRWrapper.listen( 'readystatechange' ); // ie7 ActiveX の場合、error は不可 |
298 | 298 | } else { |
@@ -49,7 +49,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){ | ||
49 | 49 | |
50 | 50 | // TODO '<scr'+'ipt> 化 恐らくアンチウイルスソフトが反応しないための対策 |
51 | 51 | |
52 | - if( X.UA.IE8 ){ | |
52 | + if( X_UA.IE8 ){ | |
53 | 53 | html = [ |
54 | 54 | // http://blog.livedoor.jp/dankogai/archives/51503830.html |
55 | 55 | // Ajax - IE8にもJSON入ってます。使えるとは限らないけど |
@@ -68,7 +68,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){ | ||
68 | 68 | '</script>' |
69 | 69 | ]; |
70 | 70 | } else |
71 | - if( X.UA.IE9 ){ | |
71 | + if( X_UA.IE9 ){ | |
72 | 72 | html = [ |
73 | 73 | '<script id="jp"></script>', |
74 | 74 | '<script>', |
@@ -87,7 +87,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){ | ||
87 | 87 | '<script src="', url, '"></script>' |
88 | 88 | ]; |
89 | 89 | } else |
90 | - if( X.UA.IE4 || X.UA.MacIE ){ | |
90 | + if( X_UA.IE4 || X_UA.MacIE ){ | |
91 | 91 | html = [ |
92 | 92 | '<script id="jn"></script>', |
93 | 93 | '<script id="jp"></script>', |
@@ -99,7 +99,7 @@ function X_NET_JSONP_loadScriptInNinjaIframe( url ){ | ||
99 | 99 | '</script>' |
100 | 100 | ]; |
101 | 101 | } else |
102 | - if( X.UA.IE < 8 ){ // ie5-7 | |
102 | + if( X_UA.IE < 8 ){ // ie5-7 | |
103 | 103 | html = [ |
104 | 104 | '<script id="jn"></script>', |
105 | 105 | '<script id="jp"></script>', |
@@ -192,4 +192,4 @@ function X_NET_JSONP_operaImageHandleEvent( e ){ | ||
192 | 192 | break; |
193 | 193 | }; |
194 | 194 | }; |
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 |
@@ -9,7 +9,7 @@ | ||
9 | 9 | var X_Net_Image_hasImage = !!window[ 'Image' ], |
10 | 10 | X_Net_Image_image = X_Net_Image_hasImage && new Image(), |
11 | 11 | // 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 ); | |
13 | 13 | |
14 | 14 | |
15 | 15 | if( !X_Net_Image_hasImage ){ |
@@ -47,7 +47,7 @@ X_NET_ImageWrapper = X_Class_override( | ||
47 | 47 | |
48 | 48 | //X_Net_Image_hasImage ? ( this._rawObject.src = this.abspath ) : this.attr( 'src', this.abspath ); |
49 | 49 | /* |
50 | - if( X.UA.Opera7 ){ | |
50 | + if( X_UA.Opera7 ){ | |
51 | 51 | X_EventDispatcher_toggleAllEvents( this, false ); |
52 | 52 | this._rawObject = new Image(); |
53 | 53 | X_EventDispatcher_toggleAllEvents( this, true ); |
@@ -55,7 +55,7 @@ X_NET_ImageWrapper = X_Class_override( | ||
55 | 55 | |
56 | 56 | this._rawObject.src = this.abspath; |
57 | 57 | //alert( this._rawObject.src + ' ' + this._rawObject.complete ); |
58 | - if( X.UA.Opera7 && this._rawObject.complete ){ | |
58 | + if( X_UA.Opera7 && this._rawObject.complete ){ | |
59 | 59 | this.asyncDispatch( 'load' ); |
60 | 60 | } else { |
61 | 61 | this.timerID = X.Timer.add( this.delay, 0, this, this._detect ); |
@@ -80,7 +80,7 @@ X_NET_ImageWrapper = X_Class_override( | ||
80 | 80 | this._busy = false; |
81 | 81 | this.finish = true; |
82 | 82 | this.timerID && X.Timer.remove( this.timerID ); |
83 | - if( X.UA.Opera && !this._rawObject.complete ){ | |
83 | + if( X_UA.Opera && !this._rawObject.complete ){ | |
84 | 84 | this.timerID = this.asyncDispatch( X.Event.ERROR ); |
85 | 85 | return; |
86 | 86 | }; |
@@ -329,7 +329,7 @@ | ||
329 | 329 | /* |
330 | 330 | * "Android version < 2.2" return ev.touches.length === 1 when touchend, others return ev.touches.length === 0 |
331 | 331 | */ |
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 ); | |
333 | 333 | |
334 | 334 | // detect touchevents |
335 | 335 | Hammer.HAS_POINTEREVENTS = true; // navigator.pointerEnabled || navigator.msPointerEnabled; |
@@ -24,9 +24,9 @@ var m = Math, | ||
24 | 24 | // Scrollbar |
25 | 25 | hScrollbar : true, |
26 | 26 | 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, | |
30 | 30 | scrollbarClass : '', |
31 | 31 | |
32 | 32 | // Zoom |
@@ -196,7 +196,7 @@ var m = Math, | ||
196 | 196 | // Helpers FIX ANDROID BUG! |
197 | 197 | // translate3d and scale doesn't work together! |
198 | 198 | // 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 ){ | |
200 | 200 | // translateZ = ''; |
201 | 201 | //} |
202 | 202 |
@@ -300,7 +300,7 @@ X_Class_override( iScroll.prototype, { | ||
300 | 300 | }, |
301 | 301 | |
302 | 302 | _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 ); | |
304 | 304 | // setTimeout( this.refresh(), isAndroid ? 200 : 0); |
305 | 305 | }, |
306 | 306 |