IE8,没想到一个网站里面的上传图片时用JavaScript预览本地图片的功能失效了,图片总是显示错误,用alert()看了下图片的路径居然变成了C:\fakepath\*.jpg,真实的路径被C:\fakepath\取代了,于是在网上开始找解决方案。原来是因为IE8增加了安全选项,默认情况下不显示上传文件的真实路径,进入internet选项,修改下设置即可显示真实的文件路径。
工具 -> Internet选项 -> 安全 -> 自定义级别 -> 找到“其他”中的“将本地文件上载至服务器时包含本地目录路径”,选中“启用”即可。
附带不用修改浏览器安全配置的javascript代码,兼容ie, firefox全系列
- function getPath(obj)
- {
- if(obj)
- {
- if (window.navigator.userAgent.indexOf("MSIE")>=1)
- {
- obj.select();
- return document.selection.createRange().text;
- }
- else if(window.navigator.userAgent.indexOf("Firefox")>=1)
- {
- if(obj.files)
- {
- return obj.files.item(0).getAsDataURL();
- }
- return obj.value;
- }
- return obj.value;
- }
- }
参数obj为input file对象
实例:js部分
function SeePic(img,f){
if ( f.value != "" ) { img.src = f.value; }
}
var onecount;
onecount=0;
<{counter start=-1 skip=1 print=false}>
subcat = new Array();
<{section name=list loop=$categorys}>
<{section name=list2 loop=$categorys[list].list}>
subcat[<{counter}>] = new Array("<{$categorys[list].list[list2].name}>","<{$categorys[list].id}>","<{$categorys[list].list[list2].id}>");
<{/section}>
<{/section}>
onecount=<{counter}>;
<{literal}>
function changelocation(locationid)
{
document.form1.category_id2.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.form1.category_id2.options[document.form1.category_id2.length] = new Option(subcat[i][0], subcat[i][2]);
}
}
}
<{/literal}>
Html部分:
<div><input name="litimg" type="file" onChange="SeePic(document.picview,document.form1.litimg);" /><br>首页615*321<br><img src="style/img/pview.gif" id="picview" name="picview"></div>
修改后JS部分:
function getPath(obj) { if(obj) { if (window.navigator.userAgent.indexOf("MSIE")>=1) { obj.select(); return document.selection.createRange().text; } else if(window.navigator.userAgent.indexOf("Firefox")>=1) { if(obj.files) { return obj.files.item(0).getAsDataURL(); } return obj.value; } return obj.value; } }
function SeePic(img,f){
if ( f.value != "" ) { img.src = getPath(f); }
}
var onecount;
onecount=0;
<{counter start=-1 skip=1 print=false}>
subcat = new Array();
<{section name=list loop=$categorys}>
<{section name=list2 loop=$categorys[list].list}>
subcat[<{counter}>] = new Array("<{$categorys[list].list[list2].name}>","<{$categorys[list].id}>","<{$categorys[list].list[list2].id}>");
<{/section}>
<{/section}>
onecount=<{counter}>;
<{literal}>
function changelocation(locationid)
{
document.form1.category_id2.length = 0;
var locationid=locationid;
var i;
for (i=0;i < onecount; i++)
{
if (subcat[i][1] == locationid)
{
document.form1.category_id2.options[document.form1.category_id2.length] = new Option(subcat[i][0], subcat[i][2]);
}
}
}
<{/literal}>
</script>