標籤:key false 使用者 低版本 get div 版本判斷 err each
使用者反饋在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 );}
Web Uploader在低版本IE下無法顯示Flash的一種情況