OSDN Git Service

Version 0.6.171, fix X.KB & fix X.Node for SVG & VML.
[pettanr/clientJs.git] / 0.6.x / js / 05_util / 01_XNinjaIframe.js
index e16f550..9964d58 100644 (file)
@@ -1,13 +1,17 @@
-/*\r
+/**\r
  * http://msdn.microsoft.com/ja-jp/library/ie/hh180174%28v=vs.85%29.aspx\r
  * 孤立するとウィンドウ オブジェクトのプロパティが消去される\r
  * \r
  * http://qiita.com/sou/items/3380d4fa9b08b27bb387\r
  * モバイルブラウザでの iframe の挙動(Mobile Safari, Chrome for Android)\r
+ * \r
+ * @alias X.Util.NinjaIframe\r
+ * @class 隠し iframe 機能を提供します。\r
+ * @constructor \r
+ * @constructs NinjaIframe\r
+ * @extends {Node}\r
  */\r
-\r
-// TODO Node.inherits\r
-X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
+var X_NinjaIframe = X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](\r
        'NinjaIframe',\r
        {\r
                autoRefresh  : 0,\r
@@ -50,7 +54,8 @@ X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](
                        \r
                        if( html ) this._contentHTML = html;                    \r
                        \r
-                       this[ 'appendTo' ]( X_Node_body /* X_Node_systemNode */ );\r
+                       this[ 'appendTo' ]( X_Node_body /* X_Node_systemNode */ )\r
+                               [ 'listenOnce' ]( X_EVENT_KILL_INSTANCE, X_Util_NinjaIframe_handleEvent );\r
                        \r
                        X_ViewPort[ 'listenOnce' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
                },\r
@@ -82,13 +87,6 @@ X[ 'Util' ][ 'NinjaIframe' ] = Node[ 'inherits' ](
                        };\r
                        \r
                        return this;\r
-               },\r
-               \r
-               // TODO close -> kill\r
-               'close' : function(){\r
-                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
-                       this.call( 'close' );\r
-                       this[ 'kill' ]();\r
                }\r
                \r
        }\r
@@ -131,9 +129,14 @@ function X_Util_NinjaIframe_handleEvent( e ){
                case 'error' :\r
                        this[ 'asyncDispatch' ]( 'ninjaerror' );\r
                        break;\r
+               \r
+               case X_EVENT_KILL_INSTANCE :\r
+                       X_ViewPort[ 'unlisten' ]( X_EVENT_AFTER_UPDATE, this, X_Util_NinjaIframe_handleEvent );\r
+                       this._iwin && this._iwin.close();\r
+                       break;\r
        };\r
        \r
-       return X_Callback_STOP_PROPAGATION;\r
+       return X_CALLBACK_STOP_PROPAGATION;\r
 };\r
 \r
 function X_Util_NinjaIframe_writeToIframe( that ){\r