我已经开发了在asp.net web应用程序,还有在这个项目中的网页,其中用户应该选择以图片格式(JPEG,JPG,BMP,...)的文件,我想在预览页面图像,但我不“T要发布文件到服务器我要处理它在客户端我已经通过文件API的Java脚本函数完成它,但它只能在IE9,但大多数的costumers使用IE8的原因是,IE8不支持文件API有没有什么办法让IE8升级或一些补丁在后面的代码我的意思是检查,如果浏览器是IE,而不是支持文件API调用的自动升级到IE8 IE9的功能。
我不想让用户做到这一点的消息我想以编程方式做到这一点!
即使是可以安装所需的文件API,因为客户认为这是一个错误在我的应用程序和自己的电脑知识是低那我应该与此做了专门的补丁?
我也使用异步文件上传阿贾克斯控制,但它的文件任何方式与Ajax解决方案和HTTP处理程序,但Java脚本上传到服务器完成所有的客户端浏览器!
下面的脚本检查浏览器支持的API或不
<script>
if (window.File && window.FileReader && window.FileList && window.Blob)
document.write("<b>File API supported.</b>");
else
document.write('<i>File API not supported by this browser.</i>');
</script>
以下脚本执行读取和加载图像
function readfile(e1)
{
var filename = e1.target.files[0];
var fr = new FileReader();
fr.onload = readerHandler;
fr.readAsText(filename);
}
HTML代码:
<input type="file" id="getimage">
<fieldset><legend>Your image here</legend>
<div id="imgstore"></div>
</fieldset>
JavaScript代码:
<script>
function imageHandler(e2)
{
var store = document.getElementById('imgstore');
store.innerHTML='<img src="' + e2.target.result +'">';
}
function loadimage(e1)
{
var filename = e1.target.files[0];
var fr = new FileReader();
fr.onload = imageHandler;
fr.readAsDataURL(filename);
}
window.onload=function()
{
var x = document.getElementById("filebrowsed");
x.addEventListener('change', readfile, false);
var y = document.getElementById("getimage");
y.addEventListener('change', loadimage, false);
}
</script>
您不能安装任何特殊的添加在IE8文件API的支持。 你可以做的是为了在本身不支持它的浏览器来实现这个功能使用填充工具 。 看看这个名单HTML5跨浏览器Polyfills (你会发现在文件API /拖放部分适合你的东西)。
这在预IE10对我的作品,我使用https://github.com/eligrey/FileSaver.js对于其他浏览器,不过要注意这个作品它并不完美,因为它的IE浏览器和好,你知道我的意思
希望这可以帮助
/**
* saves File, pops up a built in javascript file as a download
* @param {String} filename, eg doc.csv
* @param {String} filecontent eg "this","is","csv"
* @param {String} mimetype eg "text/plain"
*/
function saveAs (filename, filecontent, mimetype) {
var w = window.open();
var doc = w.document;
doc.open( mimetype,'replace');
doc.charset = "utf-8";
doc.write(filecontent);
doc.close();
doc.execCommand("SaveAs", null, filename);
}
一些研究我有后,有没有办法启用IE8文件API,但我得到了想要与你分享一些东西.....
不是直接的,HTML 5不支持IE8。 有插件的画布,也有谷歌浏览器内嵌框架,一个插件添加HTML 5到IE年纪比9。
我的理解,谷歌Chrome Frame是使用HTML5完美的方式。
它增加了IE浏览器速度的10倍,也它的用法很简单,我形容它为你所有成员...
谷歌浏览器内嵌框架
用于Internet Explorer的插件添加到微软的浏览器,完整支持HTML 5和Chrome的JavaScript编译器! 一个稳定版本发布于2010年9月22日,和很多网站已在其网页中添加的代码。
这个插件可以在Internet Explorer 6,7,进一步版本。 谷歌希望打破防止网络演进的障碍:最常用的浏览器,它与新的标准缺乏兼容性。
当它被认可,Internet Explorer将在WebKit的运行,Chrome和Safari浏览器的渲染引擎,并且将使用超快速的JavaScript编译器替换如果IE解释。
这个插件的优点是非常适合的Web应用程序的兼容性,将成为支持WebGL集成的Webkit,其中让我们的应用程序在3D上的浏览器更加有用:一个非常不同的Web! WebGL是也火狐,因为3.7版的支持。
自2011年5月,该插件可以在没有管理员权限进行安装,因此在IE浏览器的老版本被合并到一台服务器,不能被更新。
在网页的代码的标签将显示一条消息,提示用户下载该插件。 一旦它被安装,运行IE浏览器作为浏览器,并支持HTML 5。
框架的特点
离线模式。 在和标签。 微软还计划实现它们在IE中。 帆布。 WebGL的。 CSS 3,JavaScript编译器。 在酸性3级兼容性。 看视频。
从微软的反应
我们预期,微软还没有真正认识到这一举措促进HTML 5到自己的解决方案,Silverlight的不利。 该公司强调了安全问题:
由于与一般的插件和谷歌浏览器,特别是安全问题,谷歌Chrome Frame的运行作为一个插件增加了一倍的恶意软件和恶意脚本的攻击区域。
**
浏览器内嵌框架。 自动安装。 - > http://www.google.com/chromeframe/?quickenable=true
谷歌Chrome Frame的代码。 - > https://developers.google.com/chrome/chrome-frame/
Chrome Frame的:开发人员指南。 - > http://www.chromium.org/developers/how-tos/chrome-frame-getting-started
**