• R/O
  • HTTP
  • SSH
  • HTTPS

clientJs: コミット

クライアント側 js 開発用


コミットメタ情報

リビジョンbfca1aa94da405643253af65c421f6665d6e6262 (tree)
日時2016-03-09 09:59:26
作者itozyun <itozyun@user...>
コミッターitozyun

ログメッセージ

Version 0.6.215, bug fixes X.Net.Image & X.HTMLAudio.

変更サマリ

差分

--- a/0.6.x/js/01_core/07_XString.js
+++ b/0.6.x/js/01_core/07_XString.js
@@ -158,7 +158,7 @@ function X_String_whiteSpaceToTag( text ){
158158 * @return {string} html文字列
159159 */
160160 function X_String_chrReferanceTo( str ){
161- var refs, i, l, ref;
161+ var refs, i, l, ref, k;
162162
163163 if( str == null || str === '' ) return '';
164164 if( str.indexOf( '&' ) === -1 ) return str;
--- a/0.6.x/js/01_core/13_XClass.js
+++ b/0.6.x/js/01_core/13_XClass.js
@@ -15,7 +15,7 @@ var
1515 * クラス名
1616 * @type {string}
1717 */
18- name : ''
18+ NAME : ''
1919 },
2020
2121 X_Class_CLASS_LIST = [],
@@ -481,7 +481,7 @@ X[ 'Class' ] = /** @lends X.Class */ {
481481 klass.prototype.constructor = klass;
482482 };
483483
484- klass[ 'name' ] = displayName;
484+ klass[ 'NAME' ] = displayName;
485485
486486 if( opt_abstract ){
487487 classDef.isAbstract = true;
--- a/0.6.x/js/02_dom/06_XNodeCSS.js
+++ b/0.6.x/js/02_dom/06_XNodeCSS.js
@@ -277,9 +277,10 @@ function X_Node_CSS_objToCssText( that, skipFilter ){
277277 };
278278
279279 if( filterFix ){
280- v = X_Node_CSS_objToIEFilterText( that, filterFix /* , css */ );
280+ v = X_Node_CSS_objToIEFilterText( that, filterFix, css );
281+ n = css.length; /* css が変更されている場合あり */
281282 if( v ){
282- css[ ++n /* css.length */ ] = 'filter:' + v;
283+ css[ ++n ] = 'filter:' + v;
283284 };
284285 skipFilter = skipFilter && v;
285286 } else {
@@ -289,6 +290,7 @@ function X_Node_CSS_objToCssText( that, skipFilter ){
289290 if( 0 <= n ){
290291 // cssText には完全なものを控えるが、戻すのは filter を抜いたもの
291292 that[ '_cssText' ] = css.join( ';' );
293+ //console.log( that[ '_cssText' ] );
292294 if( skipFilter ){
293295 --css.length;
294296 return css.join( ';' );
@@ -334,9 +336,10 @@ function X_Node_CSS_objToIEFilterText( that, opt_css, opt_cssList ){
334336 filters[ ++n ] = v;
335337 break;
336338 case 2 : //'opacity' :
337- //if( v === 0 ){
338- // opt_cssList && ( opt_cssList[ opt_cssList.length ] = 'visibility:hidden' );
339- //} else
339+ if( v === 0 ){
340+ console.log( '@opacity:0 ' + !!opt_cssList );
341+ opt_cssList && ( opt_cssList[ opt_cssList.length ] = 'visibility:hidden' );
342+ } else
340343 if( v < 1 ) filters[ ++n ] = 'alpha(opacity=' + ( v * 100 | 0 ) +')';
341344 break;
342345 case 3 : //'boxShadow' :
@@ -422,7 +425,7 @@ function X_Node_CSS_objToIEFilterText( that, opt_css, opt_cssList ){
422425 break;
423426 };
424427 };
425- return filters.join( ' ' );
428+ return filters.join( ' ' );//n !== -1 ? filters.join( ' ' ) : '';
426429 };
427430
428431
--- a/0.6.x/js/02_dom/20_XNode.js
+++ b/0.6.x/js/02_dom/20_XNode.js
@@ -291,7 +291,7 @@ var Node = X[ 'Node' ] = X_EventDispatcher[ 'inherits' ](
291291 'toggleClass' : X_Node_toggleClass,
292292 'hasClass' : X_Node_hasClass,
293293
294- 'html' : X_Node_html,
294+ 'html' : X_Node__html,
295295 'text' : X_Node_text,
296296 'call' : X_Node_call,
297297 'each' : X_Node_each
@@ -1114,7 +1114,7 @@ function X_Node_hasClass( v ){
11141114 * @return {string|Node}
11151115 * @example node.html( '<img>' );
11161116 */
1117-function X_Node_html( html ){
1117+function X_Node__html( html ){
11181118 var _ = '', q = '"', xnodes, n, i, l;
11191119 // setter
11201120 if( html !== undefined ){ // String 以外に Number や false null なども許可
@@ -1419,7 +1419,7 @@ function X_Node_startUpdate( time ){
14191419 removal.length = 0;
14201420 };
14211421
1422-
1422+ //
14231423 X_UA[ 'IE5' ] && ( X_elmBody.style.visibility = 'hidden' );
14241424
14251425 if( X_Node_html[ '_flags' ] & X_Node_BitMask_IS_DIRTY ){
@@ -1816,7 +1816,7 @@ var X_Node__updateRawNode =
18161816 elm.setAttribute( 'class', that[ '_className' ] ) :
18171817 ( elm.className = that[ '_className' ] )
18181818 ) :
1819- ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className は ie7-
1819+ ( elm.className && elm.removeAttribute( X_UA[ 'IE' ] < 8 ? 'className' : 'class' ) ); // className は ie7-
18201820 };
18211821
18221822 // attr
--- a/0.6.x/js/06_net/04_XNetImage.js
+++ b/0.6.x/js/06_net/04_XNetImage.js
@@ -67,7 +67,7 @@ X_TEMP.X_ImgLoader_params = {
6767 //console.log( '/ X.Net.Image:reset ' + this.abspath + ' timerID:' + this.timerID );
6868
6969 this.timerID && X_Timer_remove( this.timerID );
70- this.timerID = 0;
70+ this.timerID = this.tick = 0;
7171
7272 this.finish = false;
7373 this.abspath = '';
@@ -111,7 +111,7 @@ function X_ImgLoader_handleEvent( e ){
111111 // ie11(10,9 開発モード)で mineType 不正の場合、画像取得に成功してもエラーイベントが起こるのを無視する。
112112 if( X_ImgLoader_0forError && raw.width ) return;
113113 if( this.finish ) return;
114- this.finish = true;
114+ this.finish = true;
115115 this.timerID && X_Timer_remove( this.timerID );
116116 //console.log( '* X.Net.Image:ERROR @handle ' + this.abspath + X.Timer.now() );
117117 //console.dir( raw );
--- a/0.6.x/js/07_audio/02_XHTMLAudio.js
+++ b/0.6.x/js/07_audio/02_XHTMLAudio.js
@@ -54,6 +54,8 @@ var
5454
5555 // Opera Mobile 12 は 2回目以降の currentTime へのセットで currentTime が更新されなくなるため、タイマーを使用する
5656 X_HTMLAudio_currentTimeFix = !!X_UA[ 'OperaMobile' ] || !!X_UA[ 'OperaTablet' ],
57+ // Firefox44.0.2 で音声の再生開始に難あり...
58+ X_HTMLAudio_playStartFix = X_UA[ 'Windows' ] && X_UA[ 'Gecko' ] === 44,
5759
5860 X_HTMLAudio_volumeFix = X_UA[ 'Chrome' ],
5961 /*
@@ -107,7 +109,7 @@ if( X_Audio_constructor ){
107109 // 8:duration 取得済
108110 // :timeupdate イベントで durationFixは完了
109111 _durationFixPhase : X_HTMLAudio_durationFix ? 1 : 0,
110- _lastCurrentTime : 0,
112+ _lastCurrentTime : 0, // ms
111113
112114 _shortPlayFixON : false,
113115 _shortPlayFixTime : 0,
@@ -203,7 +205,7 @@ if( X_Audio_constructor ){
203205
204206 if( !raw ) return;
205207
206- //e.type !== 'timeupdate' && console.log( ' > ' + e.type );
208+ // e.type !== 'timeupdate' && console.log( ' > ' + e.type );
207209
208210 switch( e.type ){
209211
@@ -278,11 +280,18 @@ if( X_Audio_constructor ){
278280 if( ( now = this.getActualCurrentTime() ) === this._lastCurrentTime ){
279281 eventType = X_EVENT_MEDIA_WAITING;
280282 } else
283+ if( X_HTMLAudio_playStartFix && ( now < this._lastCurrentTime ) ){
284+ eventType = X_EVENT_MEDIA_WAITING;
285+ //console.log( '@Firefox44.0.2 !! ' + now + ' / ' + this._lastCurrentTime );
286+ // Firefox44.0.2 で音声の再生開始に難あり...
287+ // 20回程度 currentTime の更新に失敗する....
288+ this.actualPlay();
289+ } else
281290 if( this.playing ){
282291 end = X_Audio_getEndTime( this ) + this._shortPlayFixTime;
283-
284- console.log( now + ' / ' + end );// Firefox44.0.2 で音声の再生開始に難あり...
285-
292+
293+ //console.log( '@ ' + now + ' / ' + this._lastCurrentTime + ' / ' + end );// Firefox44.0.2 で音声の再生開始に難あり...
294+
286295 if( ( 0 + end <= 0 + now ) || // 0+ なぜか iem9 で必要,,,
287296 ( now < this._lastCurrentTime && now < 2000 ) ){
288297 //( ( X_HTMLAudio_endedFixAOSP2 || X_HTMLAudio_endedFixAOSP4 ) && ( now < this._lastCurrentTime && now < 1000 ) ) ){
@@ -438,7 +447,7 @@ if( X_Audio_constructor ){
438447 end = X_Audio_getEndTime( this );
439448 begin = X_Audio_getStartTime( this, end, true );
440449
441- this._lastCurrentTime = begin / 1000;
450+ this._lastCurrentTime = begin;
442451
443452 if( this._shortPlayFixON ){
444453 this._shortPlayFixTime = ( 1000 < end - begin ) ? 200 : 400;
@@ -469,7 +478,7 @@ if( X_Audio_constructor ){
469478
470479 // iOS で duration が 0 の時に触ると error
471480 // 0 or 8
472- if( !( this._durationFixPhase % 8 ) && this.duration ) raw.currentTime = this._lastCurrentTime;
481+ if( !( this._durationFixPhase % 8 ) && this.duration ) raw.currentTime = this._lastCurrentTime / 1000;
473482
474483 console.log( '[HTMLAudio] play ' + begin + ' -> ' + end + ' crt:' + ( raw.currentTime | 0 ) + ' last:' + this._lastCurrentTime );
475484
@@ -509,7 +518,7 @@ if( X_Audio_constructor ){
509518 getActualCurrentTime : function(){
510519 return ( X_HTMLAudio_currentTimeFix ?
511520 X_Timer_now() - this._currentFixStart + this._currentFixBegin :
512- this._seekingFixON ? this._lastCurrentTime * 1000 :
521+ this._seekingFixON ? this._lastCurrentTime :
513522 this[ '_rawObject' ].currentTime * 1000 | 0 );
514523 },
515524 /*
旧リポジトリブラウザで表示