\r
X_HTMLAudio_need1stTouch = X_UA[ 'iOS' ] || 4.2 <= X_UA[ 'AOSP' ] || X_UA[ 'ChromeWV' ] || X_UA[ 'WinPhone' ] || ( X_UA[ 'Blink' ] && X_UA[ 'Android' ] ),\r
\r
- X_HTMLAudio_playTrigger = ( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ) ? 'canplay' : X_UA[ 'iOS' ] ? 'suspend' : X_UA[ 'Blink' ] ? 'stalled' : 'canplaythrough',\r
+ X_HTMLAudio_playTrigger = ( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ) ? 'canplay' : X_UA[ 'iOS' ] ? 'suspend' : X_UA[ 'Blink' ] < 32 ? 'stalled' : 'canplaythrough',\r
\r
X_HTMLAudio_durationFix = X_UA[ 'iOS' ] || X_UA[ 'ChromeWV' ] || ( X_UA[ 'WinPhone' ] && X_UA[ 'IE9' ] ) ||\r
- ( X_UA[ 'Windows' ] && 12 <= X_UA[ 'Opera' ] ) || ( X_UA[ 'Blink' ] && X_UA[ 'Android' ] ),\r
+ ( X_UA[ 'Windows' ] && 12 <= X_UA[ 'Opera' ] ) || ( X_UA[ 'Blink' ] < 36 && X_UA[ 'Android' ] ),\r
\r
- X_HTMLAudio_shortPlayFix = X_UA[ 'AOSP' ]; // Android 4.1.1 でも遭遇\r
+ X_HTMLAudio_shortPlayFix = X_UA[ 'AOSP' ],\r
+ \r
+ X_HTMLAudio_progressEnabled = !( X_UA[ 'Opera' ] && X_UA[ 'Android' ] ) && !( X_UA[ 'WinPhones' ] && X_UA[ 'IE9' ] ); // Android 4.1.1 でも遭遇\r
\r
if( X_Audio_constructor ){\r
\r
{\r
// 1: canplaythrought|timeupdateに達している、またはdurationFixが終了している\r
// 2: READY イベント発火済\r
+ // 3: 1, 2 が済\r
_readyState : 0,\r
_src : '',\r
\r
// console.log( e.loaded + ' ' + e.total * 100 + '%' );\r
// iem9 で常に0 raw.networkState;\r
// opera Android 12 で buffered.end() へのアクセスはエラー try catch も無効、iem9 は常に end(0) = 0\r
- if( !( X_UA[ 'Opera' ] && X_UA[ 'Android' ] ) && !( X_UA[ 'WinPhones' ] && X_UA[ 'IE9' ] ) && this.duration ){\r
+ if( X_HTMLAudio_progressEnabled && this.duration && this._readyState < 3 ){\r
buf = raw.buffered;\r
time = 0;\r
for( i = 0, l = buf.length; i < l; ++i ){\r
};\r
} else\r
if( this._readyState === 1 && this.duration ){\r
- this._readyState = 2;\r
+ this._readyState |= 2;\r
this.disatcher[ 'asyncDispatch' ]( X_EVENT_READY );\r
console.log( '> Audio Loaded!! ' + e.type + ' d:' + ( this.duration | 0 ) );\r
} else\r
};\r
this._touchState = 3;\r
} else\r
- if( this._readyState !== 2 && this._durationFixPhase < 2 ){\r
+ if( this._readyState !== 3 && this._durationFixPhase < 2 ){\r
return;\r
};\r
\r