\r
+var \r
+ X_System_postMessageAccessKey = window.postMessage ? Math.random() * 10000 | 0 : 0,\r
+ \r
+ X_System_MESSAGE_RECIVERS = X_System_postMessageAccessKey && {},\r
\r
-var X_System = X_Class_override(\r
- new X.EventDispatcher(),\r
- {\r
- monitor : function(){\r
+ X_System = X_Class_override(\r
+ new X.EventDispatcher(),\r
+ {\r
+ monitor : function(){\r
+ \r
+ },\r
+ \r
+ gc : function(){\r
+ \r
+ },\r
\r
- },\r
- \r
- gc : function(){\r
+ message : function( name, callback ){\r
+ var key = Math.random() * 10000 | 0;\r
+ if( !X_System_postMessageAccessKey ) return;\r
+ // name にスペースは含まない\r
+ X_System_MESSAGE_RECIVERS[ name + key ] = callback;\r
+ X_ViewPort.listen( 'message', X_System );\r
+ \r
+ return X_System_postMessageAccessKey + '-' + name + key;\r
+ },\r
\r
+ handleEvent : function( e ){\r
+ var i, _i, name;\r
+ switch( e ){\r
+ case 'message' :\r
+ if( e.origin === X.URL.BASE_URL ){\r
+ i = e.data.indexOf( '-' );\r
+ console.log( 'msg ||| ' + e.data.substr( 0, i ) );\r
+ if( e.data.substr( 0, i ) == X_System_postMessageAccessKey ){\r
+ name = e.data.substr( i, _i = e.data.indexOf( ' ' ) );\r
+ if( X_System_MESSAGE_RECIVERS[ name ] ){\r
+ X_System_MESSAGE_RECIVERS[ name ]( e.data.substr( _i + name.length ) );\r
+ };\r
+ };\r
+ };\r
+ console.log( e.origin + ' ' + X.URL.BASE_URL );\r
+ \r
+ return X_Callback_PREVENT_DEFAULT | X_Callback_STOP_PROPAGATION;\r
+ };\r
+ }\r
}\r
- }\r
),\r
\r
X_System_javascriptScore;\r