2013-12-04 3 views
3

У меня есть проблема в моем WebForm проекте и вот пример кода для его описания:Как открыть диалог загрузки файла в JavaScript

<input type="file" id="btnfile" style="display: none"/> 
<span onclick="uploadFile()">UploadFile</span> 
<script> 
    $(function() { 
     uploadFile(); //file dialog not open 
     $("#btnfile").click(); //file dialog not open 
    }); 

    function uploadFile() { 
     $("#btnfile").click(); //file dialog will open by clicking the span 
    } 
</script> 

Я хочу, чтобы моя страница, чтобы открыть диалог автоматически, когда его файл загрузки готова, и я использую функцию «uploadFile()», чтобы «щелкнуть» входной файл fileupload в $(), , но функция dosen't работает, если она не вызвана событием, например, щелчком по экрану выше.

  • Почему uploadFile() не может открыть диалоговое окно файла в $()?
  • И есть ли способ открыть диалоговое окно загрузки файла автоматически?

Спасибо.

+7

Это невозможно по соображениям безопасности. –

+0

Боюсь, что вы правы, и теперь мне нужно изменить код моего кода. Спасибо вам все равно @Pekka 웃. – Chris

+0

Возможный дубликат [В JavaScript я могу сделать «щелчок» по событию программным способом для элемента ввода файла?] (Http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click -event-fire-programatically-for-a-file-input) –

ответ

0

Для обеспечения безопасности это поведение невозможно выполнить программно.

Вы можете попросить пользователя установить подключаемый модуль или принять подписанный апплет для выполнения работы, которая не может быть выполнена программно по умолчанию.

Для браузеров Microsoft возможно использование компонента ActiveX, который поддерживается в большинстве версий.

В Firefox вы можете написать надстройку и попросить пользователя ее установить. Дополнения Firefox разрабатываются с помощью javascript, это проще, чем NPAPI или XPCOM для веб-разработчиков.

Google Chrome собирается устранить NPAPI и разрабатывает PPAPI.

В любом случае, вы можете это сделать, если пользователь принимает дополнительный компонент.

Другой способ - найти дыру в безопасности конкретного браузера, , пожалуйста, дайте мне знать, если вы нашли.

+2

Если вы обнаружите недостаток безопасности в браузере, я предлагаю разгласить его ответственно поставщику браузера, вместо того, чтобы предоставлять детали эксплойта случайному человеку в Интернете. – smorgan

+0

@smorgan: Это, конечно, просто шутит. Кстати, я не знаю, что меня признают * случайным * человеком. –

Смежные вопросы