Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[BUG] 在各个浏览器里测试关于图片上传页的情况,都有图了,对比一下

[复制链接]
looon 发表于 2009-7-24 12:53:27 | 显示全部楼层 |阅读模式
先看看我们之前修改过的这个解决方案:

  1. var aid = 1;
  2. var attachexts = new Array();
  3. var attachwh = new Array();
  4. var insertType = 1;
  5. var thumbwidth = parseInt(60);
  6. var thumbheight = parseInt(60);
  7. var extensions = 'jpg,gif,png';
  8. var forms;
  9. var nowUid = 0;
  10. var albumid = 0;
  11. var uploadStat = 0;
  12. var picid = 0;
  13. var upid = 0;
  14. var mainForm;
  15. var successState = false;
  16. var lang = new Array();
  17. var ieVersion = userAgent.substr(userAgent.indexOf('msie') + 5, 3);
  18. lang['post_attachment_ext_notallowed']        = '对不起,不支持上传此类扩展名的文件。';
  19. lang['post_attachment_deletelink']        = '删除';
  20. lang['post_attachment_insert']                = '点击这里插入内容中当前光标的位置';
  21. lang['post_attachment_insertlink']        = '插入';
  22. lang['need_ie'] = '对不起,请在IE浏览器下面使用本功能';
  23. lang['post_size_nofix_width'] = '对不起,图片的宽度不能小于200像素';
  24. lang['post_size_nofix_height'] = '对不起,图片的高度不能小于200像素';

  25. function delAttach(id) {
  26.         $('attachbody').removeChild($('attach_' + id).parentNode.parentNode.parentNode);
  27.         if($('attachbody').innerHTML == '') {
  28.                 addAttach();
  29.         }
  30.         $('localimgpreview_' + id + '_menu') ? document.body.removeChild($('localimgpreview_' + id + '_menu')) : null;
  31. }

  32. function addAttach() {
  33.         newnode = $('attachbodyhidden').rows[0].cloneNode(true);
  34.         var id = aid;
  35.         var tags;
  36.         tags = newnode.getElementsByTagName('form');
  37.         for(i in tags) {
  38.                 if(tags.id == 'upload') {
  39.                         tags.id = 'upload_' + id;
  40.                 }
  41.         }
  42.         tags = newnode.getElementsByTagName('input');
  43.         for(i in tags) {
  44.                 if(tags.name == 'attach') {
  45.                         tags.id = 'attach_' + id;
  46.                         tags.name = 'attach';
  47.                         tags.onchange = function() {insertAttach(id),picshow(this,id)};
  48.                         tags.unselectable = 'on';
  49.                 }
  50.                 if(tags.id == 'albumid') {
  51.                         tags.id = 'albumid_' + id;
  52.                 }
  53.         }
  54.         tags = newnode.getElementsByTagName('span');
  55.         for(i in tags) {
  56.                 if(tags.id == 'localfile') {
  57.                         tags.id = 'localfile_' + id;
  58.                 }
  59.         }
  60.         aid++;
  61.         $('attachbody').appendChild(newnode);
  62. }

  63. addAttach();

  64. function prepice(s){
  65.         $('img_hidden').filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = s;
  66.         imgwidth = $('img_hidden').offsetWidth;
  67.         imgheight = $('img_hidden').offsetHeight;
  68.         if(imgwidth < 200) {
  69.                 alert(lang['post_size_nofix_width']);
  70.                 retur;
  71.         }else if(imgheight < 200){
  72.                 alert(lang['post_size_nofix_height']);
  73.                 die();
  74.         }
  75. }

  76. function picshow(imgFile,id)
  77. {
  78.         //新的预览代码,支持 IE6、IE7。
  79.     var newPreview = document.getElementById("newPreview"+id);
  80.     newPreview.filters.item("DXImageTransform.Microsoft.AlphaImageLoader").src = imgFile.value;
  81.     newPreview.style.width = "85px";
  82.     newPreview.style.height = "74px";
  83.     newPreview.style.border = "2px solid green";
  84. }

  85. function insertAttach(id) {
  86.         var localimgpreview = '';
  87.         var path = $('attach_' + id).value;
  88.         var ext = getExt(path);
  89.         var re = new RegExp("(^|\\s|,)" + ext + "($|\\s|,)", "ig");
  90.         var localfile = $('attach_' + id).value.substr($('attach_' + id).value.replace(/\\/g, '/').lastIndexOf('/') + 1);
  91.         if(path == '') {
  92.                 return;
  93.         }
  94.         prepice(path);
  95. //        alert('012eedddee');
  96.         var extensionss = 'jpg,gif,png';
  97.         if(extensionss != '' && (re.exec(extensionss) == null || ext == '')) {
  98.                 alert(lang['post_attachment_ext_notallowed']);
  99.                 return;
  100.         }

  101.         attachexts[id] = inArray(ext, ['gif', 'jpg', 'png']) ? 2 : 1;

  102.         var $inhtml = '<table cellspacing="2" cellpadding="2">';
  103.         if(is_ie && ieVersion < 7.0) {
  104.                 $inhtml += '<tr><td><img src="' + $('attach_' + id).value+'" style="border:2px solid green" width="85" height="74"></td>';
  105.         } else {
  106.                 $inhtml += '<tr><td><div id="newPreview'+ id +'" style="width:60px;height:80px;filter:progidXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale);"></div></td>';
  107.         }
  108.         $inhtml += '<td><span id="showmsg'+ id +'" style="float:right;"><a href="javascript:;" onclick="delAttach('+ id +')">[' + lang['post_attachment_deletelink'] + ']</a></span>图片描述:<br/><textarea name="pic_title" id="pic_title" cols="40" style="width:365px;" rows="3"></textarea><br><input '+ hiddsa +' id="ptypea'+ id +'" name="ptype" value="48"><font '+ hidda +'><label for="ptypea'+ id +'">房型图 </label></font><input '+ hiddsb +' id="ptypeb'+ id +'" name="ptype" value="59"><font '+ hiddb +'><label for="ptypeb'+ id +'">室内照片 </label></font><input '+ hiddsc +' id="ptypec'+ id +'" name="ptype" value="11" checked><font '+ hiddc +'><label for="ptypec'+ id +'">外观景观 </label></font><input '+ hiddsd +' id="ptyped'+ id +'" name="ptype" value="10"><font '+ hiddd +'><label for="ptyped'+ id +'">会所照片 </label></font><input '+ hiddse +' id="ptypee'+ id +'" name="ptype" value="49"><font '+ hidde +'><label for="ptypee'+ id +'">样板房 </label></font>'+ hiddsf + hiddsg;
  109.         $inhtml += '</td><td><input type="hidden" name="allowpic" value="1"></td></tr></table>';
  110.         
  111.         $('localfile_' + id).innerHTML = $inhtml;
  112.         $('attach_' + id).style.display = 'none';
  113.         
  114.         addAttach();
  115.         $('postbox').scrollTop = $('postbox').scrollHeight;  
  116. }

  117. function inArray(needle, haystack) {
  118.         if(typeof needle == 'string') {
  119.                 for(var i in haystack) {
  120.                         if(haystack == needle) {
  121.                                         return true;
  122.                         }
  123.                 }
  124.         }
  125.         return false;
  126. }

  127. function insertAttachimgTag(id) {
  128.         if(insertType == 0) {
  129.                 insertImage(id);
  130.         } else if(is_ie) {
  131.                 edit_insert('<img id="_uchome_localimg_' + id + '" src="' + $('attach_' + id).value + '">');
  132.         } else {
  133.                 alert(lang['need_ie']);
  134.         }
  135. }

  136. function uploadSubmit(obj) {
  137.         obj.disabled = true;
  138.         mainForm = obj.form;
  139.         forms = $('attachbody').getElementsByTagName("FORM");
  140.         albumid = $('uploadalbum').value;
  141.         upload();
  142. }

  143. //上传页面
  144. function start_upload() {
  145.         $('btnupload').disabled = true;
  146.         mainForm = $('albumresultform');
  147.         forms = $('attachbody').getElementsByTagName("FORM");
  148.         upload();
  149. }

  150. function upload() {
  151.         if(typeof(forms[nowUid]) == 'undefined') return false;
  152.         var nid = forms[nowUid].id.split('_');
  153.         nid = nid[1];
  154.         if(nowUid>0) {
  155.                 var upobj = $('showmsg'+upid);
  156.                 //alert(nowUid);
  157.                 if(uploadStat==1) {
  158.                         upobj.innerHTML = '<font color="green">上传成功</font>';
  159.                         successState = true;
  160.                         var InputNode;
  161.                         //两种生成方式,解决浏览器之间的兼容性问题
  162.                         try {
  163.                                 //IE模式下的创建方式,解决常规setAttribute设置属性带来的一些未知的错误
  164.                                 var InputNode = document.createElement("<input type="hidden" id="picid_" + picid + "" value=""+ upid +"" name="picids["+picid+"]">");
  165.                         } catch(e) {
  166.                                 //非IE模式则须要用下列的常规setAttribute设置属性,否则生成的结果不能正常初始化
  167.                                 var InputNode = document.createElement("input");
  168.                                 InputNode.setAttribute("name", "picids["+picid+"]");
  169.                                 InputNode.setAttribute("type", "hidden");
  170.                                 InputNode.setAttribute("id", "picid_" + picid);
  171.                                 InputNode.setAttribute("value", upid);
  172.                         }
  173.                         mainForm.appendChild(InputNode);

  174.                 } else {
  175.                         upobj.style.color = "#f00";
  176.                         upobj.style.fontweight = "bold";
  177.                         upobj.innerHTML = '上传失败:'+uploadStat;
  178.                 }
  179.         }

  180.         if($('showmsg'+nid) != null) {
  181.                 $('showmsg'+nid).innerHTML = '上传中,请等待...';
  182.                 $('albumid_'+nid).value = albumid;
  183.                 forms[nowUid].submit();
  184.         } else if(nowUid+1 == forms.length) {
  185.                 if(typeof (no_insert) != 'undefined') {
  186.                         var albumidcheck = parseInt(parent.albumid);
  187.                         $('opalbumid').value = isNaN(albumidcheck)? 0 : albumid;
  188.                         if(!successState) return false;
  189.                 }
  190.                 showstopic();
  191.         }
  192.         
  193.         upid = nid;
  194.         nowUid++;
  195.         uploadStat = 0;
  196. }

  197. /**
  198.          * 无刷新定义
  199.          * author Minko
  200.         */
  201.         function Get_AJAX(){var ajax=false;try{ajax=new ActiveXObject("Msxml2.XMLHTTP");}catch(e){try{ajax=new ActiveXObject("Microsoft.XMLHTTP");}catch(E){ajax=false;}}if(!ajax && typeof XMLHttpRequest != 'undefined'){ajax=new XMLHttpRequest();}return ajax;}function loadXMLDoc(data){var xmlDoc;if(window.ActiveXObject){xmlDoc=new ActiveXObject("Microsoft.XMLDOM");}else if (document.implementation && document.implementation.createDocument){xmlDoc=document.implementation.createDocument("","",null);}else{alert('Your browser cannot handle this script');}xmlDoc.async=false;xmlDoc.preserveWhiteSpace= true;xmlDoc.load(data)||xmlDoc.loadXML(data);return xmlDoc;}
  202.         
  203.         var minko=null;
  204.         var ajax = Get_AJAX(); //  定义无刷新
  205.         function showstopic(){
  206.                 ajax.open("GET","storeselect_ajax.php?uid="+uidm+'&hotmid=' + mid + '&maxtime=' + maxtime,true);
  207.                 ajax.onreadystatechange =function(){doResponsee () };
  208.                 ajax.send(null);
  209.         }

  210.         function doResponsee(){
  211.                 if(ajax.readyState == 4){
  212.                         if(ajax.status == 200){               
  213.                                 var ResponseDOM = ajax.responseText;                                
  214.                                 minko = ResponseDOM;
  215.                                 $(showpicsid).innerHTML = minko;
  216.                         }
  217.                 }
  218.         }
复制代码



在各个浏览器里测试关于图片上传页的情况,都有图了,对比一下
这个页面里的(左侧的上传链接) http://u.discuz.net/home/cp.php?ac=upload

IE6 图片上传页,完全正常                                      


IE7 图片上传页,没有图片预览,两张图片以上浏览按钮循环出现                                                      


IE8 图片上传页,没有图片预览,两张图片以上浏览按钮没有循环出现                                                



火狐3.5 图片上传页,没有图片预览,两张图片以上浏览按钮没有循环出现                              


谷歌 图片上传页,没有图片预览,两张图片以上浏览按钮没有循环出现,但是跟其他浏览器有点不一样                                   


safari 图片上传页,没有图片预览,两张图片以上浏览按钮没有循环出现,但是跟其他浏览器有点不一样                          


opera 图片上传页,没有图片预览,两张图片以上浏览按钮没有循环出现
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-16 13:52 , Processed in 0.034376 second(s), 3 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表