OSDN Git Service

fix X.Type.isHTMLElement for NetFront.
[pettanr/clientJs.git] / 0.6.x / js / 01_core / 15_XSystem.js
index 0331531..3345d1b 100644 (file)
@@ -1,16 +1,50 @@
 \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