Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   вызов стандартного окна "открыть" (https://javascript.ru/forum/events/16799-vyzov-standartnogo-okna-otkryt.html)

kiff86 22.04.2011 15:29

вызов стандартного окна "открыть"
 
Всем привет! Вот вопрос: при наличии такой конструкции:
<input type='file' />

При нажатии на кнопку выводится стандартное диалоговое окно с выбором файла, который надо "открыть"..
Есть ли способ вызова такого окна через javascript?

Logo 22.04.2011 15:48

Сделайте прозрачный <input type='file' /> и разместите его над своей кнопкой.

Serg_pnz 22.04.2011 16:23

Вот пример http://n-professor.ru/exemple/ajaxupload/

dmitriymar 22.04.2011 17:10

Serg_pnz,
пример чему?использованию флеш?:D
http://n-professor.ru/massovaya-zagr...hhi-flash.html

dmitriymar 22.04.2011 17:14

Logo,
прозрачный не сработает

Logo 22.04.2011 17:26

Сработает. opacity:0, для IE фильтр.

dmitriymar 22.04.2011 17:31

стоп стоп стоп. не во всех браузерах пройдёт-наложение сверху прозрачного элемента-некоторые при клике на нём привязывают событие к нижнему ,а для верхнего ,невидимого ,событие не существует как бы-хоть и клик реально был на нём и z индекс у него больше чем у нижнего. в фф пару месяцев назад на это налетал. накрыл контейнер сверху прозрачным контейнером

Serg_pnz 22.04.2011 17:51

Цитата:

Сообщение от dmitriymar (Сообщение 101812)
Serg_pnz,
пример чему?использованию флеш?:D
http://n-professor.ru/massovaya-zagr...hhi-flash.html

Пример как спрятать кнопку под картинкой и Вы вообще код по моей ссылке смотрели? Где там флеш? http://n-professor.ya.ru/replies.xml?item_no=49

Serg_pnz 22.04.2011 17:52

В ИЕ8 согласен косячно смотрится, но, думаю, можно хакнуть...

dmitriymar 22.04.2011 18:08

Serg_pnz,
перейди по ссылке что под постом-это статья к этому загрузчику
смотри, джиквери написан на js. js-не позволяет получить полный путь к файлу из окна инпут файл.попробуй сам-то что видишь и получить value его-разницу увидишь сам.
в итоге ,не факт,но в подключаемой библиотеке джиквери скорее всего используется флеш и библиотека только строит мост между скриптом и флеш
статистику он не привёл как он работает у тех у кого флеш отключен

Logo 22.04.2011 18:21

Когда есть opacity:0 во всех браузерах которые я смотрел, событие всегда попадет на верхний элемент. Если блок с background:none, тогда событие может попадать на нижний элемент.

dmitriymar 22.04.2011 18:27

Цитата:

Сообщение от Logo
background:none,

с ним не проверял. как вариант проходит -почти полная прозрачность
ну а для поисковиков-сайты на каких есть скрытые ,прозрачные ,сливающиеся с фоном элементы-такие сайты попадают под фильтры или в бан...

Kolyaj 24.04.2011 20:00

Цитата:

Сообщение от dmitriymar
ну а для поисковиков-сайты на каких есть скрытые ,прозрачные ,сливающиеся с фоном элементы-такие сайты попадают под фильтры или в бан...

По такой логике они бы половину интернета забанили.

B@rmaley.e><e 24.04.2011 20:50

Цитата:

Сообщение от dmitriymar
ну а для поисковиков-сайты на каких есть скрытые ,прозрачные ,сливающиеся с фоном элементы-такие сайты попадают под фильтры или в бан.

Это если такие элементы могут содержать что-либо, способствующее продвижению в топе (ключевые слова, например). Как скрытый файл-инпут может способствовать продвижению - непонятно.

dmitriymar 25.04.2011 00:04

Яндекс начал кричать, что если сайт содержит в себе скрытые элементы(сливающиеся с фоном, накрытые другими элементами), то таким сайтам прямая дорога в ад бан. про крайней мере эта инфа активно распространятся по seo форумам последние пару месяцев

poorking 25.04.2011 06:53

kiff86,
А что если создать инпут и программно по нему кликнуть? Вы пробовали?, я просто слышал что по этому типу инпутов нельзя так. Хотя не уверен..

Попробуйте
var input = document.createElement("INPUT");
input.type = "file";

var click = document.createEvent("MouseEvents");
click.initEvent("click", true, true);

input.dispatchEvent(click);


Это не кроссбраузерно, но для IE есть подобные методы, так что если получится, то вот и решение.

kiff86 25.04.2011 17:21

Всем спасибо. Накрывалкой я пользуюсь.. смущает такие записи в цсс как альфа и опасити... они валидны? Я просто хотел бы создать что-нить свое, то есть ваще не юзать тег инпут файл.. Собсно и спросил ... А то плясать с бубном, опасити и т.п. не охота.. флеш, я так понял позволяет это делать? Просто надо его быренько изучить. Хочется нормальный (кроссбраузерный, легко изменяемый) загрузчик файлов.. с культурный дизайном.. почему свое- потому что в своем проще разобраться ну и как-то чувствуешь себя увереннее..
poorking,
Такая фишка работает только в ие.. остальные браузеры за счет "безопасности" не позволяют этого сделать (програмно щелкнуть на кнопку...)

B@rmaley.e><e 25.04.2011 17:29

Цитата:

Сообщение от kiff86
смущает такие записи в цсс как альфа и опасити... они валидны?

filter- нет, opacity - да. Но чем оно Вас смущает?

Маэстро 26.04.2011 12:02

Цитата:

Сообщение от kiff86
Я просто хотел бы создать что-нить свое, то есть ваще не юзать тег инпут файл..

1. Flash Player. Надо учить Action Script. Работать будет только в броузерах, у которых установлен плагин Flash Player.
2. Java (не JavaScript). Работать будет только у кого на компьютере установлена Java.

P.S. input type="file" - html-элемент, у которого больше всего "закручены гайки" в целях безопасности. В интернете полно примеров, как сделать его покрасивее, пофункциональнее... Однако идеального решения нет. Смотря какие цели Вы ставите. Например, в некоторых броузерах на стороне Клиента из javascript нельзя получить полный путь к выбранному файлу (а казалось бы, почему??). Только после отправки файла на сервер можно узнать этот путь. Чтож поделаешь..

B@rmaley.e><e 26.04.2011 20:40

Цитата:

Сообщение от Маэстро
нельзя получить полный путь к выбранному файлу (а казалось бы, почему??)

А казалось бы, зачем?
Цитата:

Сообщение от Маэстро
Только после отправки файла на сервер можно узнать этот путь

ЩИТО? Пруф, или не было.

da_ff 27.04.2011 15:43

dmitriymar,
1. Прозрачный input[type="file"] это класический костыль. Он корректно работает во всех браузерах, не порите ерунду.

2. Прозрачные элементы часто используются в сложный интерфейсах, не говорите, что за них банят в поисковиках, это тоже полная чушь.

Маэстро 29.04.2011 16:25

Цитата:

Сообщение от B@rmaley.e><e (Сообщение 102239)
А казалось бы, зачем?

Представьте есть такая задача: хранить на сервере локальные пути к файлам, которые лежат у меня на компе.
Цитата:

Сообщение от B@rmaley.e><e (Сообщение 102239)
ЩИТО? Пруф, или не было.

-жаргона не понял..

Kolyaj 29.04.2011 16:27

Цитата:

Сообщение от Маэстро
-жаргона не понял..

B@rmaley.e><e пытается сказать, что он не верит ни единому вашему слову.


Часовой пояс GMT +3, время: 02:04.