OSDN Git Service

Fix the bug of X.NodeAnime.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 20_XSystem.js
1 \r
2 var \r
3         X_System_postMessageAccessKey = window.postMessage ? Math.random() * 10000 | 0 : 0,\r
4         \r
5         X_System_MESSAGE_RECIVERS = X_System_postMessageAccessKey && {},\r
6 \r
7         X_System = X_Class_override(\r
8                 X_EventDispatcher(),\r
9                 {\r
10                         monitor : function(){\r
11                                 \r
12                         },\r
13                         \r
14                         gc : function(){\r
15                                 \r
16                         },\r
17                         \r
18                         message : function( name, callback ){\r
19                                 var key = Math.random() * 10000 | 0;\r
20                                 if( !X_System_postMessageAccessKey ) return;\r
21                                 // name にスペースは含まない\r
22                                 X_System_MESSAGE_RECIVERS[ name + key ] = callback;\r
23                                 X_ViewPort[ 'listen' ]( 'message', X_System );\r
24                                 \r
25                                 return X_System_postMessageAccessKey + '-' + name + key;\r
26                         },\r
27                         \r
28                         handleEvent : function( e ){\r
29                                 var i, _i, name;\r
30                                 switch( e ){\r
31                                         case 'message' :\r
32                                                 if( e.origin === X.URL.BASE_URL ){\r
33                                                         i = e.data.indexOf( '-' );\r
34                                                         console.log( 'msg ||| ' + e.data.substr( 0, i ) );\r
35                                                         if( e.data.substr( 0, i ) == X_System_postMessageAccessKey ){\r
36                                                                 name = e.data.substr( i, _i = e.data.indexOf( ' ' ) );\r
37                                                                 if( X_System_MESSAGE_RECIVERS[ name ] ){\r
38                                                                         X_System_MESSAGE_RECIVERS[ name ]( e.data.substr( _i + name.length ) );\r
39                                                                 };\r
40                                                         };\r
41                                                 };\r
42                                                 console.log( e.origin + ' ' + X.URL.BASE_URL );\r
43                                                 \r
44                                                 return X_CALLBACK_PREVENT_DEFAULT | X_CALLBACK_STOP_PROPAGATION;\r
45                                 };\r
46                         }\r
47                 }\r
48 ),\r
49 \r
50 X_System_javascriptScore;\r
51 \r
52 // beforeunload\r
53 // unload\r
54 \r
55 X_TEMP.onRearchEndOfScript = function(){\r
56         var callbacks = X_TEMP.onSystemReady,\r
57                 i     = callbacks.length,\r
58                 now   = X_Timer_now(),\r
59                 speed = now - X[ 'bootTime' ];\r
60         \r
61         X[ 'bootSpeed' ] = X_System_javascriptScore = speed;\r
62         console.log( 'js score ' + speed );\r
63         \r
64         delete X_TEMP.onRearchEndOfScript;\r
65         delete X_TEMP.onSystemReady;\r
66         \r
67         for( ; i; ){\r
68                 callbacks[ --i ]( X_System );\r
69         };\r
70 };