chrome浏览器对HTML5支持的较好,使用HTML5的File相关的api,能够实现前台页面在选定图片后,不上传便可预览。代码以下:web
一、前台代码,使用<input type="file">标签进行文件的选择,其 accept 属性用于过滤文件类型,此处选择几种图片格式的文件。chrome
1 <div class="row"> 2 <label for="fileToUpload">请选择一个文件:</label> 3 <br> 4 <input type="file" name="fileToUpload" id="fileToUpload" accept="image/gif,image/jpeg,image/x-png,image/tiff,image/x-ms-bmp" /> 5 </div>
二、绑定点击选择文件以后的函数:api
1 $('#fileToUpload').change(function() { 2 var div = document.createElement('div'); 3 var img = document.createElement('img');//建立 img 对象 4 5 window.URL = window.URL || window.webkitURL; 6 var imgFile=document.getElementById('fileToUpload'); 7 if(window.URL){ 8 //File API 9 img.src = window.URL.createObjectURL(imgFile.files[0]); //建立一个object URL,并非你的本地路径 10 11 img.onload = function(e) { 12 window.URL.revokeObjectURL(this.src); //图片加载后,释放object URL 13 } 14 15 } 16 div.appendChild(img); 17 }
上述代码先建立了一个 div 元素,而后又建立了一个 img ,并将 img 的 src 属性设置为所选文件(注意是一个 object URL,若是直接使用相似 “file:///c:/a.jpg” 的格式是不行的),而后将 img 添加到 div 中。浏览器
以上仅为示例代码。app
经过 js 来绑定 img 的 src ,也可使用另一种方式:函数
1 $('#fileToUpload').change(function() { 2 var div = document.createElement('div'); 3 var img = document.createElement('img');//建立 img 对象 4 5 var imgFile=document.getElementById('fileToUpload'); 6 var reader = new FileReader(); 7 reader.readAsDataURL(imgFile.files[0]); 8 reader.onload = function(e){ 9 img.src = e.target.result; 10 }; 11 div.appendChild(img); 12 }
即便用 FileReader 的 readAsDataURL 方法,为 img 设置其 src.this
值得注意的是,第二种方法所读取的 reader.result 能够用于方法或消息的发送,好比在 chrome 的一个 tab 中,经过 chrome.tabs.sendMessage 方法发送出去,在另外一个 tab 中经过 chrome.extension.onMessage.addListener(function(msg)) 接收,接收到的 msg 中的相关数据,依然能够用于所在 tab 中的一个 img 元素的 src 设定,而第一种方法貌似不能够,须要的同窗能够注意一下!spa