用户反馈在IE 8下无法正常显示Web Uploader控件,并已安装了Flash插件。调试发现在内部抛出了Runtime Error的错误,关键代码如下:
Runtime.create = function( opts, orders ) {
var type, runtime; orders = orders || Runtime.orders;
$.each( orders.split( /\s*,\s*/g ), function() {
if ( factories[ this ] ) {
type = this;
return false;
}
}); type = type || getFirstKey( factories ); if ( !type ) {
throw new Error('Runtime Error');
} runtime = new factories[ type ]( opts );
return runtime;
};
可以发现是对应的FlashRuntime并未找到。查看源代码发现在注册FlashRuntime时候有一个版本判断,如果没有符合最低版本要求则不注册。查看用户安装的Flash版本确实低于该要求。
FlashRuntime.register = function( name, component ) {
component = components[ name ] = Base.inherits( CompBase, $.extend({ // @todo fix this later
flashExec: function() {
var owner = this.owner,
runtime = this.getRuntime(); return runtime.flashExec.apply( owner, arguments );
}
}, component ) ); return component;
}; if ( getFlashVersion() >= 11.4 ) {
Runtime.addRuntime( type, FlashRuntime );
}