kissygalleryteam / kissy-gallery

KISSY Gallery Modules
72 stars 73 forks source link

【KF/Uploader】隐藏域获取方式不用name #127

Closed shepherdwind closed 11 years ago

shepherdwind commented 11 years ago

UrlInput对象构造器函数中,L42,使用

elInput = document.getElementsByName(name)[0];

获取input元素,这个有两个问题。

  <input type="hidden" 
    value="http://img01.config-vip.taobaocdn.net/imgextra/i1/15060031048437/T2ZWXcXcRfXXXXXXXX_!!2067375060-0-TEST.jpg"
    name="certification.certiImg" id="a">

  <script src='http://a.tbcdn.cn/s/kissy/1.3.0/kissy.js'></script>
  <script type="text/javascript">
    KISSY.all('#a').attr('name', 'hello');
    alert(KISSY.all('#a').attr('name'));
    //IE6 7中,无法修改name属性,所以获取document.getElementsByName('hello')在
    //IE中无法找到
    alert(document.getElementsByName('hello')[0]);
  </script>

在上面的情况中,如果使用name为hello的话,在ie6 7中是无法获取到的,因为#a的name值没有被改变。

推荐方案

在兼容老的api的情况下,同时允许name值和dom对象作为初始值。

    new RenderUploader(btn, queue,{
      serverConfig:{
        action: url + '?_output_charset=utf-8'
      },
      name   : "file",
      urlsInputName : inputName | inputElement
    });

另外,ie6 7中name不可写,KISSY中的attr操作name值,会有问题,不知道这算不算是KISSY的一个兼容问题。

minghe commented 11 years ago

@shepherdwind 1.4会解决这个问题,非常的详细,谢谢