OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 01_X.js
1 \r
2 /**\r
3  * <p>API ドキュメントと併せて、その意図や背景を綴っていく副読本もご覧ください。\r
4  * <a href="http://outcloud.blogspot.jp/p/pettanr-api-docs-supplementary-reader.html">クラウド番外地 &gt; ぺったんR API文書の副読本</a>\r
5  * \r
6  * @example // ライブラリは X という名前空間を使用します。\r
7  * //ショートハンド\r
8  * X( func ) == X.ViewPort[ 'listenOnce' ](X.Event.XDOM_READY, func);\r
9  * X('#mydiv') == X.Doc.find('#mydiv');\r
10  * @namespace X\r
11  */\r
12 function X( v ){\r
13         if( X_Type_isFunction( v ) ){\r
14                 X[ 'ViewPort' ][ 'listenOnce' ]( X_EVENT_XDOM_READY, v );\r
15         } else\r
16         if( X_shortcutFunction ){\r
17                 return X_shortcutFunction.apply( X_shortcutContext || X, arguments );\r
18         };\r
19 };\r
20 \r
21 //{+DEV\r
22 if( !window['console'] || ( window.parent && window.parent.log ) ){\r
23         console = {\r
24                 log : function(a){\r
25                                 var elm;\r
26                                 //alert(a);\r
27                                 if( window.parent ){\r
28                                         elm = parent.document.all ? parent.document.all.log : parent.log || parent.document.getElementById( 'log' );\r
29                                         elm && ( elm.innerHTML = a + '<br>' + elm.innerHTML );\r
30                                 };\r
31                         }\r
32         };      \r
33 };\r
34 \r
35 if( !console.dir ) console.dir = function(){};\r
36 //+DEV}\r
37 \r
38 //{-AUDIO\r
39 //-AUDIO}\r
40 \r
41 var undefined,\r
42         X_EMPTY_OBJECT = {},\r
43         X_TEMP = { onSystemReady : [] },\r
44         X_emptyFunction = new Function,\r
45         X_shortcutFunction,\r
46         X_shortcutContext;\r
47 \r
48 /**\r
49  * バージョン文字列:"0.6.xxx"\r
50  * @type {string} */\r
51 X[ 'VERSION' ] = '0.6.181';\r
52 \r
53 /**\r
54  * ブートタイム ms\r
55  * @type {number} */\r
56 X[ 'bootTime' ] = + new Date;\r
57 \r
58 /**\r
59  * 空の関数\r
60  * @type {Function} */\r
61 X[ 'emptyFunction' ] = X_emptyFunction;\r
62 \r
63 /**\r
64  * このscriptはheadタグの中にあるか?\r
65  *  @type {boolean} */\r
66 // TODO defer の場合もあるので、document.readyState を見る\r
67 // TODO body の有無を見ればOKではないか?\r
68 // MacIE で false\r
69 X[ 'inHead' ] = (function( s ){\r
70         if( !s ) return false;\r
71         if( !s.length ) return false; // Safari1.3 312.8 でerror\r
72         s = s[ s.length - 1 ];\r
73         // Dom0 || Dom1\r
74         s = s.parentElement || s.parentNode || s;// s is for opera7.11\r
75         return s.tagName.toLowerCase() === 'head';// opera7.23 s.tagName is 'HTML'\r
76 })( document.scripts || document.getElementsByTagName && document.getElementsByTagName( 'script' ) || document.all && document.all.tags( 'script' ) );\r
77 \r