var Img=new Image()
Img.onload = function () {
//
}
Img.src = imgSrc;Img.onreadystatechange = function ()
{
//
}
我在IE下想判断上传图片的大小,用了上面的方法,也在网上找了一些资料都没有解决,我遇到的问题的,上面的方法,我在运行的时候部分图片是有效的,部分是无效的。有一些图片根本不执行onload,我用readyState看也一直是未初始化的状态,求各位大神解决。ieimagefunction
Img.onload = function () {
//
}
Img.src = imgSrc;Img.onreadystatechange = function ()
{
//
}
我在IE下想判断上传图片的大小,用了上面的方法,也在网上找了一些资料都没有解决,我遇到的问题的,上面的方法,我在运行的时候部分图片是有效的,部分是无效的。有一些图片根本不执行onload,我用readyState看也一直是未初始化的状态,求各位大神解决。ieimagefunction
获取文件大小你上传后在服务端获取就行了,直接把文件大小返回到客户端,无需像你那样写
我的确把事件绑定放在img.src = url之前了,网上类似的文章我也看过了,没有解决我的问题,我在三楼也说了,我清了缓存,而且奇怪的就是有的图片可以有的图片不可以
只能上传后在服务端判断
flash或者activex文件上传能在客户端判断
恩,判断大小这个姑且放下,我现在最想搞明白的是为什么会出现我遇到的问题,有的图片onload怎么都没问题,而有的图片就是不行,而且这些图片本身都是正常的,没有错误的。
{
//
Img.src = imgSrc;
}
var Img=new Image()
Img.onreadystatechange = function () {
}
Img.src = imgSrc;
这样。。IE下用了readystatechange就别用onload了。
<HTML>
<HEAD>
<TITLE>兼容IE678的图片上传验证大小及格式并预览</TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
<script language=javascript>
var ImgObj = new Image(); //建立一个图像对象
var AllImgExt = ".jpg|.jpeg|.gif|.bmp|.png|"//全部图片格式类型
var FileObj, ImgFileSize, ImgWidth, ImgHeight, FileExt, ErrMsg, FileMsg, HasCheked, IsImg//全局变量 图片相关属性
//以下为限制变量
var AllowExt = ".jpg|.jpeg|.gif|.bmp|.png|" //允许上传的文件类型 ?为无限制 每个扩展名后边要加一个"|" 小写字母表示
//var AllowExt=0
var AllowImgFileSize = 500; //允许上传图片文件的大小 0为无限制 单位:KB
var AllowImgWidth = 1200; //允许上传的图片的宽度 ?为无限制 单位:px(像素)
var AllowImgHeight = 1600; //允许上传的图片的高度 ?为无限制 单位:px(像素)
HasChecked = false;
function CheckProperty(obj) //检测图像属性
{
FileObj = obj;
if (ErrMsg != "") //检测是否为正确的图像文件 返回出错信息并重置
{
ShowMsg(ErrMsg, false);
return false; //返回
} if (ImgObj.readyState != "complete") //如果图像是未加载完成进行循环检测
{
setTimeout("CheckProperty(FileObj)", 500);
return false;
} ImgFileSize = Math.round(ImgObj.fileSize / 1024 * 100) / 100; //取得图片文件的大小
ImgWidth = ImgObj.width //取得图片的宽度
ImgHeight = ImgObj.height; //取得图片的高度
FileMsg = "图片大小:" + ImgWidth + "*" + ImgHeight + "px";
FileMsg = FileMsg + "图片文件大小:" + ImgFileSize + "Kb";
FileMsg = FileMsg + "图片文件扩展名:" + FileExt; if (AllowImgWidth != 0 && AllowImgWidth < ImgWidth)
ErrMsg = ErrMsg + "图片宽度超过限制。请上传宽度小于" + AllowImgWidth + "px的文件,当前图片宽度为" + ImgWidth + "px"; if (AllowImgHeight != 0 && AllowImgHeight < ImgHeight)
ErrMsg = ErrMsg + "图片高度超过限制。请上传高度小于" + AllowImgHeight + "px的文件,当前图片高度为" + ImgHeight + "px"; if (AllowImgFileSize != 0 && AllowImgFileSize < ImgFileSize)
ErrMsg = ErrMsg + "图片文件大小超过限制。请上传小于" + AllowImgFileSize + "KB的文件,当前文件大小为" + ImgFileSize + "KB"; if (ErrMsg != "")
ShowMsg(ErrMsg, false);
else
ShowMsg(FileMsg, true);
} ImgObj.onerror = function () { ErrMsg = '图片格式不正确或者图片已损坏!' } function ShowMsg(msg, tf) //显示提示信息 tf=true 显示文件信息 tf=false 显示错误信息 msg-信息内容
{
msg = msg.replace("\n", "<li>");
msg = msg.replace(/\n/gi, "<li>");
if (!tf) {
document.all.UploadButton.disabled = true;
FileObj.outerHTML = FileObj.outerHTML;
alert(msg);
HasChecked = false;
}
else {
document.all.UploadButton.disabled = false;
if (IsImg)
PreviewImg.innerHTML = "<img src='" + ImgObj.src + "' width='100' height='150'>"
else
PreviewImg.innerHTML = "非图片文件";
alert(msg);
HasChecked = true;
}
} function CheckExt(obj) {
ErrMsg = "";
FileMsg = "";
FileObj = obj;
IsImg = false;
HasChecked = false;
PreviewImg.innerHTML = "照片";
if (obj.value == "") return false;
document.all.UploadButton.disabled = true;
FileExt = obj.value.substr(obj.value.lastIndexOf(".")).toLowerCase();
if (AllowExt != 0 && AllowExt.indexOf(FileExt + "|") == -1) //判断文件类型是否允许上传
{
ErrMsg = "该文件类型不允许上传。请上传 " + AllowExt + " 类型的文件,当前文件类型为" + FileExt;
ShowMsg(ErrMsg, false);
return false;
} if (AllImgExt.indexOf(FileExt + "|") != -1) //如果图片文件,则进行图片信息处理
{
IsImg = true;
ImgObj.src = obj.value;
CheckProperty(obj);
return false;
}
else {
FileMsg = "文件扩展名:" + FileExt;
ShowMsg(FileMsg, true);
} } function SwitchUpType(tf) {
if (tf)
str = '<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">'
else
str = '<input type="text" name="file1" onblur="CheckExt(this)" style="width:180px;">'
document.all.file1.outerHTML = str;
document.all.UploadButton.disabled = true;
MsgList.innerHTML = "";
}
</script>
<form enctype="multipart/form-data" method="POST" onsubmit="return HasChecked;">
<fieldset style="width: 372; height: 60;padding:2px;">
<legend><font color="#FF0000">上传照片</font></legend>
<input type="file" name="file1" onchange="CheckExt(this)" style="width:180px;">
<input type="submit" id="UploadButton" value="开始上传" disabled>
<div style="border:1 solid #808080;background:#E0E0E0;width100%;height:20px;color:#606060;padding:5px;">
</div>
<div id="PreviewImg">照片</div>
</fieldset>
</form>
</body>
</html>这是我网上找来的代码说是兼容IE的,我后来做过修改,img.src的位置也都挪过,一样的问题有的图片可以,有的不可以
if(Img.readyState=='complete' || Img.readyState=='loaded'){
alert('图片已加载完毕')
}
}
Img.onload = function () {
alert('图片加载完毕')
}Img.src = imgSrc;这样试试,看看你说的不起作用的图片有什么反应
var Img=new Image()
Img.onload = function () {
alert('图片加载完毕')
}
Img.src = imgSrc;
if(Img.readyState){
if(Img.readyState=='complete' || Img.readyState=='loaded'){
alert('图片已加载完毕')
}
}
这样试试。。
src被复制后,img属性有以下的差别:
正常图片 fileCreatedDate fileModifiedDate值被刷新,而出错图片仍然是未指明的错误(初始化时都一样)
正常的href赋值为图片的绝对路径,出错的为空;
mimeType正常的被刷新为空 ,出错的显示未指明的错误(初始化时都一样)
protocol正常的被赋值,出错的为空