1.IE内核的部分,IE10 没问题,别的没试:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="jquery-1.8.3.min.js"></script> <script type="text/javascript"> var imgurl = ""; function getImgURL(node) { var imgURL = ""; var file = null; if(node.files && node.files[0] ){ file = node.files[0]; }else if(node.files && node.files.item(0)) { file = node.files.item(0); } //这种获取方式支持IE10 node.select(); imgURL = document.selection.createRange().text; alert(imgURL); var textHtml = "<img src='"+imgURL+"'/>"; //创建img标签用于显示图片 alert(textHtml); $(".mark").after(textHtml); return imgURL; } var imgurl = ""; function getImgURL(node) { var imgURL = ""; var file = null; if(node.files && node.files[0] ){ file = node.files[0]; }else if(node.files && node.files.item(0)) { file = node.files.item(0); } //这种获取方式支持IE10 node.select(); imgURL = document.selection.createRange().text; alert(imgURL); var textHtml = "<img src='"+imgURL+"'/>"; //创建img标签用于显示图片 alert(textHtml); $(".mark").after(textHtml); return imgURL; } </script> </head> <body> <div style="width:200px; height:210px; border:1px solid red;" id="show"> <div class="mark"></div> </div> <br> <input type="file" value="上传文件" onchange="getImgURL(this)"> </body> </html>
2.火狐和chrome浏览器,其实这个获得的文件路径不是我们能看懂的,它是一个对象,不过浏览器能解析,可能出于浏览器的安全考虑吧,本来不能显示文件路径:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title></title> <script type="text/javascript" src="jquery-1.8.3.min.js"></script> <script type="text/javascript"> var imgurl = ""; function getImgURL(node) { var imgURL = ""; try{ var file = null; if(node.files && node.files[0] ){ file = node.files[0]; }else if(node.files && node.files.item(0)) { file = node.files.item(0); } //Firefox 因安全性问题已无法直接通过input[file].value 获取完整的文件路径 try{ //Firefox7.0 imgURL = file.getAsDataURL(); //alert("//Firefox7.0"+imgRUL); }catch(e){ //Firefox8.0以上 imgRUL = window.URL.createObjectURL(file); //alert("//Firefox8.0以上"+imgRUL); } }catch(e){ //这里不知道怎么处理了,如果是遨游的话会报这个异常 //支持html5的浏览器,比如高版本的firefox、chrome、ie10 if (node.files && node.files[0]) { var reader = new FileReader(); reader.onload = function (e) { imgURL = e.target.result; }; reader.readAsDataURL(node.files[0]); } } //imgurl = imgURL; creatImg(imgRUL); return imgURL; } function creatImg(imgRUL){ //根据指定URL创建一个Img对象 var textHtml = "<img src='"+imgRUL+"'/>"; $(".mark").after(textHtml); } </script> </head> <body> <div style="width:90px; height:110px; overflow:hidden; border:1px solid red;" id="show"> <div class="mark"></div> </div> <br> <input type="file" value="上传文件" onchange="getImgURL(this)"> </body> </html>
3.其余的浏览器。我没有测试,不过国内的其他如360和遨游,等都有两种模式,一种是IE内核,这(1)中可以运行,第二种内核没找到好方法