Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > скрипт закачки файлов


Автор: MoLeX 19.3.2008, 14:08
Один товарищ скинул следующий скриптик (см. аттач). 
К сожелению он работает только в Осле (лису не проверял, в опере не работает), сам JS изучаю недавно и в чужом коде (особенно таком) быстро путаюсь и теряю нить расуждения, поэтому прошу помощь в оптимизации данного скиптика под браузеры.

 smile 

Автор: Nigel 19.3.2008, 22:50
Скрипт нормальный, есть только небольшая проблемка со стилями.
Попробуй так
Код

<div _id='fileContainer' style='width:84px;height:32px;left:0px;direction:rtl;position:absolute;top:211px'>

А после
Код

this.fileContainer.appendChild(newInputFile);

поставь
Код

this.fileContainer.style.overflow='hidden';

Попробуй повозиться со стилями
Код

    var str = "<table style='background-color:#EDEEEF;border: 1px solid #7A7C80;' border='0'>" +
              "<tr><td style='width:420px' colspan=3 align='center' id = 'cellContainer' >" +
              "<div style='height:200px;'></div>" +
              "</td></tr>" +
              "<tr><td style=';width: 80px; height: 32px;' align='left'></td>" +
              "<td style='width: 200px; height: 32px;' align='left'>" +
              "<img _onclick='UploadControl.prototype.uploadAllItems()' _ID='ImageButton3'  src='imgs/btn_upload.gif' style='cursor:pointer'/></td>" +
              "<td style='width: 140px; height: 32px;' align='right'>" +
              "<img _onclick='return UploadControl.prototype.removeAllItems()' _ID='ImageButton3'  src='imgs/btn_clean.gif' style='cursor:pointer;margin-right:20px'/></td></tr></table>" +

              "<div _id='fileContainer' style='width:84px;height:32px;left:0px;direction:rtl;position:absolute;top:211px'>" +
              "<img style='z-index:2' src='imgs/btn_add.gif'/>" +
              "<input type='file' id='file1'  name='file1' value='' class='hidden' style='cursor:pointer;z-index:3;left:7px;position:absolute;height:25px;top:0px'/></div>";

alert(str);

Ну, или, на крайний случай, в зависимости от браузера меняй нужные значения.

Автор: ksnk 20.3.2008, 10:08
MoLeX
В опере оно тоже работает ;-) Только нужно ткнуть чуть-чуть слева от кнопки, потом нажать на tab и пробел.... smile 

Надо бы погуглить примеры на имитацию input:file с помощью div'ов... Как-то ведь и в Опере такое работало...

Еще опера не знает что такое overflow-y и при большом списке загружаемых файлов имеет забавный эффект...

Автор: ksnk 20.3.2008, 10:47
Строка 57 файла dhtmlXVault.js Для Оперы нужно заменить left:7px на right:0. Кнопачка от загрузчика будет как раз на месте... Они там с другой стороны...
Код

    "<input type='file' id='file1'  name='file1' value='' class='hidden' style='cursor:pointer;z-index:3;position:absolute;height:25px;top:0px;"+
     (isOpera?'right:0;':'left:7px;')+
     "'/></div>";

еще в строке 40 замена overflow-y на overflow:auto+ overflow-x:hidden... - Опреа все равно ругается, но зато не глючит...
Код

    this.containerDiv.style.cssText = "position:absolute;overflow:auto;overflow-x:hidden;height:190px;background-color:#FFFFFF;border:1px solid #878E95;top:10px;left:10px;z-index:10;width:410px";


Ну и isOpera можно по бедности определить вот так
Код

var isOpera = /opera/i.test( navigator.userAgent);

или так 
Код

var isOpera = !!window.opera;

Автор: krundetz 8.4.2008, 13:42
Посмотри вот здесь http://feeds.feedburner.com/~r/simplecoding/~3/248274652/asinxronnaya-zagruzka-fajlov.html
там приводиться пример с подробным разбором что и как.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)