OSDN Git Service

Version 0.6.92, bugfix for ie.
authoritozyun <itozyun@user.sourceforge.jp>
Mon, 6 Oct 2014 11:24:32 +0000 (20:24 +0900)
committeritozyun <itozyun@user.sourceforge.jp>
Mon, 6 Oct 2014 11:24:32 +0000 (20:24 +0900)
12 files changed:
0.6.x/js/01_core/01_X.js
0.6.x/js/01_core/03_XType.js
0.6.x/js/01_core/05_XClass.js
0.6.x/js/01_core/06_XEvent.js
0.6.x/js/01_core/07_XEventDispatcher.js
0.6.x/js/01_core/10_XLogger.js
0.6.x/js/02_dom/12_XDomNode.js
0.6.x/js/02_dom/15_XDomAttr.js
0.6.x/js/02_dom/19_XDomParser.js
0.6.x/js/06_audio/00_XAudio.js
0.6.x/js/06_audio/01_XHTML5Audio.js
0.6.x/js/06_audio/02_XSilverlightAudio.js

index 035cfae..e53d43e 100644 (file)
@@ -1,3 +1,4 @@
+\r
 if( !window['console'] || ( window.parent && window.parent.log ) ) console = { log : function(a){\r
        var win, elm;\r
        //alert(a);\r
index b30d82d..d896389 100644 (file)
@@ -31,7 +31,7 @@ X.Type = {
        },\r
        \r
        isString : function( v ){\r
-               return typeof v === 'string';\r
+               return typeof v === 'string'; // v === v + '';\r
        },\r
        \r
        isNumber : function( v ){\r
@@ -39,11 +39,11 @@ X.Type = {
        },\r
        \r
        isFinite : function( v ){\r
-               return typeof v === 'number' && isFinite( v ); // isFinite( '123' ) とかに対策\r
+               return typeof v === 'number' && isFinite( v ); // isFinite( '123' ) === true に対策\r
        },\r
        \r
        isNaN : function( v ){\r
-               return v !== v; // isNaN( 'NaN' ) になってしまう\r
+               return v !== v; // isNaN( 'NaN' ) === true      に対策\r
        },\r
        \r
        isHTMLElement :\r
index ae07f5e..db37581 100644 (file)
@@ -59,7 +59,7 @@ X.Class = {
                        opt_final    = !!( classSetting & X.Class.FINAL        );\r
                        opt_private  = !!( classSetting & X.Class.PRIVATE_DATA );\r
                        if( opt_final && opt_abstract ){\r
-                               X.Notification.critical( 'final & Abstract!' );\r
+                               X.Logger.critical( 'final & Abstract!' );\r
                                return;\r
                        };      \r
                        args.shift();\r
@@ -71,11 +71,11 @@ X.Class = {
                if( X_Class_PRIVATE_CLASS_LIST.indexOf( args[ 0 ] ) !== -1 ){\r
                        privateDef = X_Class_getClassDef( args[ 0 ] );\r
                        if( privateDef.isPrivate !== true ){\r
-                               X.Notification.critical( 'PrivateClass not found! please, X.Class.create( X.Class.PRIVATE, {...} ).' );\r
+                               X.Logger.critical( 'PrivateClass not found! please, X.Class.create( X.Class.PRIVATE, {...} ).' );\r
                                return;\r
                        } else\r
                        if( privateDef.Abstract === true ){\r
-                               X.Notification.critical( 'PrivateClass is Abstract!' );\r
+                               X.Logger.critical( 'PrivateClass is Abstract!' );\r
                                return;\r
                        };\r
                        classDef.privateClass = args.shift();\r
@@ -87,7 +87,7 @@ X.Class = {
                        // サブクラスの場合、クラス定義の上書きがなくても作成可能\r
                        // サブクラスでなくても、クラスメンバ用オブジェクトが無しでも作成可能\r
                        //if( !X_Class_traits ){\r
-                       //      X.Notification.critical( 'No Class Def!' );\r
+                       //      X.Logger.critical( 'No Class Def!' );\r
                        //      return;\r
                        //};\r
                        props = {};\r
@@ -133,7 +133,7 @@ X.Class = {
                };                      \r
                if( opt_private === true ){\r
                        if( classDef.privateClass ){\r
-                               X.Notification.critical( 'Private Data Class has no PrivateClass!' );\r
+                               X.Logger.critical( 'Private Data Class has no PrivateClass!' );\r
                                return;\r
                        };\r
                        classDef.isPrivate = true;\r
@@ -207,11 +207,11 @@ function X_Class_newPrivate( /* instance, args */ ){
                def.dataList = [];\r
        };\r
        if( i !== -1 ){\r
-               X.Notification.critical( 'PrivateData already exist!' );\r
+               X.Logger.critical( 'PrivateData already exist!' );\r
                return;\r
        };\r
        if( privateDef._tempUser ){\r
-               X.Notification.critical( 'newPrivate を連続呼び出しされたところ破綻' );\r
+               X.Logger.critical( 'newPrivate を連続呼び出しされたところ破綻' );\r
                return;\r
        };\r
        privateDef._tempUser = user;\r
@@ -229,7 +229,7 @@ function X_Class_override( target, src, force ){
        var p;\r
        for( p in src ){\r
                if( p === 'Super' || p === 'SuperConstructor' || p === '__proto__' || p === 'prototype' || p === 'constructor' ){\r
-                       X.Notification.critical( 'Super & SuperConstructor is reserved!' );\r
+                       X.Logger.critical( 'Super & SuperConstructor is reserved!' );\r
                        return;\r
                };\r
                if( force || target[ p ] === void 0 ){\r
@@ -270,7 +270,7 @@ function X_Class_inherits( /* displayName, classSetting, opt_PrivateClass, props
                classSetting,\r
                opt_super,\r
                klass, def;\r
-       if( superDef.Final ) X.Notification.critical( 'X.Class inherits, Class is final!' );\r
+       if( superDef.Final ) X.Logger.critical( 'X.Class inherits, Class is final!' );\r
        \r
        // サブクラス名\r
        if( X.Type.isString( displayName ) ){\r
@@ -340,7 +340,7 @@ var X_Class_CommonProps = {
                        def      = X_Class_getClassDef( klass ),\r
                        data, p, i;\r
                if( def.isPrivate && !X_Class_killPrivateFlag ){\r
-                       X.Notification.critical( 'PrivateInstance.kill() work in PrivateUser.kill().' );\r
+                       X.Logger.critical( 'PrivateInstance.kill() work in PrivateUser.kill().' );\r
                        return;\r
                };\r
                X_Class_killPrivateFlag = false; // onKill 内で PrivateInstance.kill() を防ぐため\r
@@ -364,6 +364,7 @@ var X_Class_CommonProps = {
                        } else {\r
                                this.dispatch( X.Event.BEFORE_KILL_INSTANCE );  \r
                        };\r
+                       console.log('kill ' + this._dispatching);\r
                        this.dispatch( X.Event.KILL_INSTANCE );\r
                        this._listeners && this.unlisten();\r
                } else\r
@@ -371,8 +372,6 @@ var X_Class_CommonProps = {
                        return;\r
                };\r
                \r
-               console.log('kill ' + this._dispatching);\r
-               \r
                for( p in instance ){\r
                        if( instance.hasOwnProperty && !instance.hasOwnProperty( p ) ) continue;\r
                        delete instance[ p ];\r
@@ -421,11 +420,11 @@ function X_Class_actualConstructor( args ){
                instance, obj,\r
                userDef;\r
        if( def.Abstract ){\r
-               X.Notification.critical( 'AbstractClass!' );\r
+               X.Logger.critical( 'AbstractClass!' );\r
                return;\r
        };\r
        if( def.isPrivate && !dataUser ){\r
-               X.Notification.critical( 'use myClass.newPrivate( instance, ...args )!' );\r
+               X.Logger.critical( 'use myClass.newPrivate( instance, ...args )!' );\r
                return;\r
        };\r
        klass.__new = null;\r
index e69de29..87f02e7 100644 (file)
@@ -0,0 +1,14 @@
+X.Event = {\r
+       COMPLETE               :  1,\r
+       READY                  :  2,\r
+       SUCCESS                :  3,\r
+       ERROR                  :  4,\r
+       PROGRESS               :  5,\r
+       BEFORE_CANCEL          :  6,\r
+       CANCELED               :  7,\r
+       TIMEOUT                :  8,\r
+       BEFORE_KILL_INSTANCE   :  9,\r
+       KILL_INSTANCE          : 10,\r
+       KILL_INSTANCE_CANCELED : 11,\r
+       _LAST_EVENT            : 11\r
+};
\ No newline at end of file
index e533736..426a05d 100644 (file)
  * イベントターゲット上にある現在のどのイベントリスナーも指定していない引数付きの removeEventListener は、何の効果もありません。\r
  */\r
 \r
-X.Event = {\r
-       COMPLETE               :  1,\r
-       READY                  :  2,\r
-       SUCCESS                :  3,\r
-       ERROR                  :  4,\r
-       PROGRESS               :  5,\r
-       BEFORE_CANCEL          :  6,\r
-       CANCELED               :  7,\r
-       TIMEOUT                :  8,\r
-       BEFORE_KILL_INSTANCE   :  9,\r
-       KILL_INSTANCE          : 10,\r
-       KILL_INSTANCE_CANCELED : 11,\r
-       _LAST_EVENT            : 11\r
-};\r
-\r
 // ------------------------------------------------------------------------- //\r
 // ------------ local variables -------------------------------------------- //\r
 // ------------------------------------------------------------------------- //\r
@@ -464,7 +449,7 @@ function X_EventDispatcher_unlisten( opt_type, opt_arg1, opt_arg2, opt_arg3 ){
                        raw  = this._rawObject || this._ie4getRawNode && this._ie4getRawNode();\r
                        delete list[ opt_type ];\r
                        if( empty = X.isEmptyObject( list ) ) delete this._listeners;\r
-                       if( raw && '' + parseFloat( opt_type ) !== opt_type ){ // 数字イベントの除外\r
+                       if( raw && '' + parseFloat( opt_type ) !== '' + opt_type ){ // 数字イベントの除外\r
                                X_EventDispatcher_actualRemoveEvent( this, opt_type, raw, _list, !empty );\r
                        };\r
                };\r
@@ -490,7 +475,7 @@ var X_EventDispatcher_actualAddEvent =
                        } else {\r
                                that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                \r
-                               if( that._isSilverLight ){\r
+                               if( that._isSilverlight ){\r
                                        list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                        list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
                                } else\r
@@ -521,7 +506,7 @@ var X_EventDispatcher_actualAddEvent =
                                } else{\r
                                        that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                        \r
-                                       if( that._isSilverLight ){\r
+                                       if( that._isSilverlight ){\r
                                                list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                                list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
                                        } else\r
@@ -544,7 +529,7 @@ var X_EventDispatcher_actualAddEvent =
                        } else {\r
                                that._handleEvent || ( that._handleEvent = X.Callback.create( that, X_EventDispatcher_actualHandleEvent ) );\r
                                \r
-                               if( that._isSilverLight ){\r
+                               if( that._isSilverlight ){\r
                                        list.slcallback = X.Callback.create( that, X_EventDispatcher_sliverLightDispatch, [ type ] );\r
                                        list.sltoken    = raw.AddEventListener( type, list.slcallback );\r
                                } else {\r
@@ -572,7 +557,7 @@ var X_EventDispatcher_actualRemoveEvent =
                                };\r
                        } else {\r
                                \r
-                               if( that._isSilverLight ){\r
+                               if( that._isSilverlight ){\r
                                        raw.RemoveEventListener( type, list.sltoken ); // token\r
                                        X.Callback._correct( list.slcallback );\r
                                        delete list.sltoken;\r
@@ -609,7 +594,7 @@ var X_EventDispatcher_actualRemoveEvent =
                                        };\r
                                } else {\r
                                        \r
-                                       if( that._isSilverLight ){\r
+                                       if( that._isSilverlight ){\r
                                                raw.RemoveEventListener( type, list.sltoken ); // token\r
                                                X.Callback._correct( list.slcallback );\r
                                                delete list.sltoken;\r
@@ -639,7 +624,7 @@ var X_EventDispatcher_actualRemoveEvent =
                                };\r
                        } else {\r
                                \r
-                               if( that._isSilverLight ){\r
+                               if( that._isSilverlight ){\r
                                        raw.RemoveEventListener( type, list.sltoken ); // token\r
                                        X.Callback._correct( list.slcallback );\r
                                        delete list.sltoken;\r
index e566f95..2540040 100644 (file)
@@ -1,30 +1,30 @@
-X.Notification = {\r
+X.Logger = {\r
        _$LogArea : null,\r
        debug : function( msg ){\r
-               X.Notification._output( msg, 0 );\r
+               X.Logger._output( msg, 0 );\r
        },\r
        info : function( msg ){\r
-               X.Notification._output( msg, 1 );\r
+               X.Logger._output( msg, 1 );\r
        },\r
        warn : function( msg ){\r
-               X.Notification._output( msg, 2 );\r
+               X.Logger._output( msg, 2 );\r
        },\r
        critical : function( msg ){\r
-               X.Notification._output( msg, 3 );\r
+               X.Logger._output( msg, 3 );\r
        },\r
        _output : function( msg, level ){\r
                var body, $Area;\r
                if( X.Dom && X.Dom.ready === true ){\r
-                       if( $Area = X.Notification._$LogArea ){\r
+                       if( $Area = X.Logger._$LogArea ){\r
                                $Area.remove();\r
-                               delete X.Notification._$LogArea;\r
+                               delete X.Logger._$LogArea;\r
                        };\r
                        \r
                        \r
                } else\r
                if( X.Dom && X.Dom.ready === true ){\r
-                       if( !( $Area = X.Notification._$LogArea ) ){\r
-                               $Area = X.Notification._$LogArea = X.Dom.Node( 'div' ).addToRoot( 0 );\r
+                       if( !( $Area = X.Logger._$LogArea ) ){\r
+                               $Area = X.Logger._$LogArea = X.Dom.Node( 'div' ).addToRoot( 0 );\r
                        };\r
                        $Area.add( '<p>' + msg + '</p>' );\r
                } else          \r
@@ -49,4 +49,4 @@ info  サーバ情報
 debug  デバック用の情報\r
 */\r
 \r
-console.log( 'X.Core.Notification' );\r
+console.log( 'X.Core.Log' );\r
index 79e67aa..34a41c8 100644 (file)
@@ -1089,7 +1089,7 @@ Node.prototype._updateRawNode =
                        if( this._dirty & X.Dom.Dirty.ATTR && ( attrs = this._newAttrs || this._attrs ) ){\r
                                rename = X.Dom.Attr.renameForDOM;\r
                                for( k in attrs ){\r
-                                       if( !X.UA.MacIE && 5 <= X.UA.IE && X.UA.IE < 6 ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
+                                       if( !X.UA.MacIE && ( X.UA.IE5 || X.UA.IE55 ) ){ // IETester 5.5 ではエラーが出なかった.MultipulIE5.5 ではエラーが出たので\r
                                                if( this._tag === 'TEXTAREA' && k === 'value' ){\r
                                                        elm.firstChild ?\r
                                                                ( elm.firstChild.data = attrs[ k ] ) :\r
@@ -1097,7 +1097,7 @@ Node.prototype._updateRawNode =
                                                        continue;\r
                                                };\r
                                        };\r
-                                       // TODO IE では input, なぜか buttonも、type の変更が出来ない、k === 'type' && alert( this._dirty + ' ' + elm.outerHTML );\r
+                                       // TODO IE では input, なぜか buttonも、type の変更が出来ない、object も 同値で置き換えようとしても不可\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
                                                ( elm[ rename[ k ] || k ] = X.Dom.Attr.noValue[ k ] ? k : v );                          \r
@@ -1151,7 +1151,7 @@ Node.prototype._updateRawNode =
                                for( k in attrs ){\r
                                        ( v = attrs[ k ] ) === undefined ?\r
                                                elm.removeAttribute( rename[ k ] || k ) :\r
-                                               elm.setAttribute( rename[ k ] || k, v ); // TODO X.Dom.Attr.noValue\r
+                                               elm.setAttribute( rename[ k ] || k, v ); // TODO X.Dom.Attr.noValue[ k ] ? k : v\r
                                };\r
                                delete this._newAttrs;\r
                        };\r
@@ -1281,15 +1281,16 @@ Node.prototype._afterActualCreate =
                                        elm.appendChild( xnodes[ i ]._actualCreate( true ) );\r
                                };\r
                        };\r
-                       if( !X.Dom._strictElmCreation ){\r
+                       if( X.Dom._strictElmCreation ){\r
+                               if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
+                                       elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
+                               };\r
+                               delete this._dirty;\r
+                       } else {\r
                                elm.UID = this._uid;\r
                                this._newAttrs = this._attrs;\r
                                this._dirty = X.Dom.Dirty.ID | X.Dom.Dirty.CLASSNAME | X.Dom.Dirty.CSS | X.Dom.Dirty.ATTR | X.Dom.Dirty.IE_FILTER;\r
                                this._updateRawNode( elm );\r
-                       } else\r
-                       if( this._dirty & X.Dom.Dirty.IE_FILTER ){\r
-                               elm.style.filter = X.Dom.Style.SPECIAL_FIX( this._css );\r
-                               delete this._dirty;\r
                        };\r
                        \r
                        delete this._isNew;\r
@@ -1297,10 +1298,8 @@ Node.prototype._afterActualCreate =
                        this._dirty && this._updateRawNode( elm );\r
                };\r
                \r
-               if( l ){\r
-                       for( i = 0; i < l; ++i ){\r
-                               xnodes[ i ]._afterActualCreate();\r
-                       };\r
+               for( i = 0; i < l; ++i ){\r
+                       xnodes[ i ]._afterActualCreate();\r
                };\r
                // src の onload があるので先ではないか?\r
                // ie の str から要素を作る場合、srcだけ イベント設定後ではないか?\r
index 3fd0ed2..9a43170 100644 (file)
@@ -147,7 +147,7 @@ X.Dom.Node.prototype.attr = function( nameOrObj /* v */ ){
 };\r
 X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){\r
        switch( name ){\r
-               // case 'type' : TODO IE は input, button に対して type の再設定が出来ない _state が要素生成済なら不可\r
+               // case 'type' : TODO IE は input, button, object に対して type の再設定が出来ない _state が要素生成済なら不可\r
                case 'UID' :\r
                case 'tag' :\r
                case 'tagName' :\r
@@ -169,7 +169,7 @@ X.Dom.Node.prototype._setAttr = function( attrs, newAttrs, name, v ){
        };\r
        // debug\r
        if( name.indexOf( 'on' ) === 0 ){\r
-               X.Notification.warn( 'xnode.attr("' + name + '") is wrong, xnode.listen() & xnode.unlisten().' );\r
+               X.Logger.warn( 'xnode.attr("' + name + '") is wrong, xnode.listen() & xnode.unlisten().' );\r
                return;\r
        };\r
        \r
index 51e9cdb..648de81 100644 (file)
@@ -310,7 +310,7 @@ X.Dom._htmlStringToXNode = {
        nest : [],\r
        err : function( html ){\r
                X.Dom._htmlStringToXNode.flat.length = 0;\r
-               X.Dom._htmlStringToXNode.ignoreError !== true && X.Notification.warn( 'X_Dom_Parser() error ' + html );\r
+               X.Dom._htmlStringToXNode.ignoreError !== true && X.Logger.warn( 'X_Dom_Parser() error ' + html );\r
        },\r
        start : function( tagName, attrs, noChild, length ){\r
                var xnode,\r
index 3727959..4b94da4 100644 (file)
@@ -1,4 +1,4 @@
-X.Audio = {\r
+X.Audio = {\r
        HTML5       : 1,\r
        Flash       : 2,\r
        Silverlight : 3,\r
@@ -14,6 +14,10 @@ X.Audio = {
 \r
 var X_Audio_BACKENDS = [];\r
 \r
+/*\r
+ * TODO preplayerror play してみたら error が出た、backend の変更。\r
+ */\r
+\r
 function X_Audio_detectBackend( proxy, sourceList, option ){\r
        var source = sourceList.shift() || '', \r
                parts  = source.split( '?' )[ 0 ].split( '#' )[ 0 ].split( '.' ),\r
index 5bea55f..827bed8 100644 (file)
@@ -1,4 +1,4 @@
-/*\r
+/*\r
  * original : uupaa-js HTML5Audio.js\r
  * https://code.google.com/p/uupaa-js/source/browse/trunk/0.8/src/Audio/HTML5Audio.js?r=568\r
  */\r
@@ -317,3 +317,10 @@ if( window.HTMLAudioElement ){
        \r
 };\r
 \r
+\r
+\r
+\r
+\r
+\r
+\r
+\r
index ca199d3..2faf847 100644 (file)
@@ -1,14 +1,13 @@
-/*\r
+/*\r
  * original : uupaa-js SilverlightAudio.js\r
  * https://code.google.com/p/uupaa-js/source/browse/trunk/0.8/src/Audio/SilverlightAudio.js?r=568\r
- */\r
-\r
-/*\r
+ *\r
  * Silverlight 4 → 5における不具合の状況\r
  * http://www.slideshare.net/wakabayashiy/silverlight-4-5 \r
  *\r
  * SilverlLight5 ie6&7(ietester,winxp), ie8(winxp) で動作確認。firefox32 では動作しない。(4以下の方がよい?)\r
  */\r
+\r
 var X_Audio_SLAudio, X_Audio_SLAudioWrapper,\r
        X_Audio_SLAudio_uid = 0,\r
        X_Audio_SLAudio_LIVE_LIST = [],\r
@@ -192,7 +191,7 @@ if( X.Pulgin.SilverlightEnabled ){
                                        case 'MediaOpened' :\r
                                                // http://msdn.microsoft.com/ja-jp/library/bb979710(VS.95).aspx\r
                                                this._duration = this._rawObject.NaturalDuration.Seconds;\r
-                               \r
+                               // TODO 'canplaythrough'\r
                                                this.proxy.dispatch( 'canplay' );\r
                                                break;\r
                                        case 'MediaEnded' :\r
@@ -392,3 +391,6 @@ if( X.Pulgin.SilverlightEnabled ){
        );\r
        \r
 };\r
+\r
+\r
+\r