Mark onpropertychange应该也不支持FF吧

解决方案 »

  1.   

    /**********这是一个检测类型的,问题是如果第一次选择的不是图片,第二次选择的是图片,然后点上传会失败。而且不支持FF浏览器**************/A:这是个蛮烦人的一个问题,谁叫这是商业社会,各自为战,大家并不去遵循同一个标准,
    下面的例子在FF里能检测到,并提示用户,但不能创建新的元素--只能起提示作用,
    用户再次选择会进行提示,在IE中基本上没什么问题;
    <script language="javascript" type="text/javascript">
    function ck(obj)
    {
    var r = true;
    var name = obj.name;
    var path = obj.value;
    var fnode = document.getElementById("fnode"); if(path.length>0)
    {
    var af = ['jpg','gif','png','zip','rar','txt','htm'];
    var ftype = path.substr(path.lastIndexOf('.')+1);
    for (var i=0; i<af.length ; i++)
    {  if (af[i] == ftype.toString())
    { r = false;break; }
    }
    if(r)
    {
    alert("Allowed file types:\n"+af);
    var fel = document.createElement("input");
    fel.setAttribute("type", "file");
    fel.setAttribute("name", name);
    fel.setAttribute("value", '');
    fel.onchange = function () { ck(this);};
    obj.removeNode(true);
    fnode.appendChild(fel);
    delete fel;
    delete r;
    return false;
    }
    }
    return true;
    }</script>
    </HEAD><BODY>
     
    <form>
    <input type='text' name=xm ><br />
    <div id="fnode"><input type='file' name='path' onchange="return ck(this);"/></div><br />
    <input type="submit" value="开始上传"><br />
    </form>
    <form>
    <input type=text name=xm >
    <input type=file name=path onpropertychange="ck(this)"/>
    <input type="submit" value="开始上传"><br>
    </form>
    </BODY>
    </HTML>
     <script>
    function ck(obj){if(obj.value.length>0){
    var af="jpg,gif,png,zip,rar,txt,htm";
    if(eval("with(obj.value)if(!/"+af.split(",").join("|")+"/ig.test(substring(lastIndexOf('.')+1,length)))1;")){alert("Allowed file types:\n"+af);obj.createTextRange().execCommand('delete')};
    }}
    </script>/**********这个是检测文件大小的,但不支持FF浏览器**************/A:对于这一类操作,楼主还是放到服务端去检测,因为客户端在这方面的限制较多,即使检测出来了也可能不是你期待的结果.
      

  2.   

    onpropertychange - > onchange
    fileSize property -> IE Only