如果在正常情況下,代碼要在alert之后才執行,解決辦法:將要執行的代碼用setTimeout延遲執行即可(原因:頁面未加載完畢)
首先,先說明問題情況:
如下JS代碼,不能正常執行,只有在最前面加上alert("")后才能執行,
其實是DOM渲染時間太長,alert起到了延時作用,所以alert后才能看到代碼執行效果
原始代碼:
<script type="text/javascript">
var ctx='${ctx}'+'/static/js/'; var files = []; var errors = []; var type = 'file'; var max_file_size = '10mb'; var filters = {title : "文檔", extensions : "xml"}; $("#uploader").pluploadQueue($.extend({ runtimes : 'flash,html4', url : 'localUpLoadProgram', max_file_size : max_file_size, file_data_name:'file', unique_names:true, filters : [filters], flash_swf_url : ctx+'plupload/plupload.flash.swf', init:{ FileUploaded:function(uploader,file,response){ if(response.response){ var rs = $.parseJSON(response.response); if(rs.status){ files.push(file.name); }else{ errors.push(file.name); } } }, UploadComplete:function(uploader,fs){ //var e= errors.length ? ",失敗"+errors.length+"個("+errors.join("、")+")。" : "。"; // alert("上傳完成!共"+fs.length+"個。成功"+files.length+e); } } },(true ? {chunk_size:'1mb'} : {})));
</script>
解決后代碼:
延時執行該函數,就ok了,就達到了alert延時的效果了
<script type="text/javascript"> setTimeout(loaderLocal,1); function loaderLocal(){ var ctx='${ctx}'+'/static/js/'; var files = []; var errors = []; var type = 'file'; var max_file_size = '10mb'; var filters = {title : "文檔", extensions : "xml"}; $("#uploader").pluploadQueue($.extend({ runtimes : 'flash,html4', url : 'localUpLoadProgram', max_file_size : max_file_size, file_data_name:'file', unique_names:true, filters : [filters], flash_swf_url : ctx+'plupload/plupload.flash.swf', init:{ FileUploaded:function(uploader,file,response){ if(response.response){ var rs = $.parseJSON(response.response); if(rs.status){ files.push(file.name); }else{ errors.push(file.name); } } }, UploadComplete:function(uploader,fs){ //var e= errors.length ? ",失敗"+errors.length+"個("+errors.join("、")+")。" : "。"; // alert("上傳完成!共"+fs.length+"個。成功"+files.length+e); } } },(true ? {chunk_size:'1mb'} : {}))); } </script>