2013-07-04 2 views
2

Я устанавливаю Dropbox Chooser (https://www.dropbox.com/developers/chooser) в моем веб-приложение и пример кода:Reading выбрали ответ Dropbox в JQuery вместо Javascript

<input type="dropbox-chooser" name="selected-file" id="db-chooser"/> 
<script type="text/javascript"> 
    document.getElementById("db-chooser").addEventListener("DbxChooserSuccess", 
     function(e) { 
      alert("Here's the chosen file: " + e.files[0].link) 
     }, false); 
</script> 

Я предпочел бы использовать JQuery, однако, так что я пытаюсь:

$("#db-chooser").on('DbxChooserSuccess',function(event) { 
       alert("Here's the chosen file: " + event.files[0].link) 
} 

Предупреждение срабатывает, но событие не содержит файлов [] узла. Я сделал console.log и не смог найти данные. Есть ли другой способ сделать это?

+3

попробуйте 'console.log (event)' и посмотрим, где он находится. может быть 'event.originalEvent' –

+2

Исправьте свой заголовок. –

+0

@CrazyTrain К сожалению, спасибо, что указали это. – Anthony

ответ

2

У меня была аналогичная проблема, некоторое время назад, когда я был новичком в этом API. В то время я нашел ссылку, которая помогла мне разобраться в этом. Here's the link to that.

Что ссылка говорит, для доступа к event.files[0], вы должны проверить в event.originalEvent, не event. Таким образом, ваш код будет выглядеть примерно так:

$("#db-chooser").on('DbxChooserSuccess',function(event) { 
    alert("Here's the chosen file: " + event.originalEvent.files[0].link) 
} 

Что происходит на самом деле, когда событие инициализируется, Jquery копирует почти все свойства originalEvent (события JS) и создает свою собственную event оболочки с пользовательскими свойствами. Наряду с этим он хранит originalEvent как свойство, так что некоторые оставшиеся свойства (например, files[0] в вашем случае) могут быть доступны позже. From the jQuery Site:

Система событий jQuery нормализует объект события в соответствии со стандартами W3C. Объект события гарантированно передается обработчику событий. Большинство свойств исходного события копируются и нормализуются к новому объекту события.

Именно поэтому ваше имущество files[0] не существует в событии jQuery. Надеюсь это поможет.

PS: В этой ссылке есть много приятного материала. Проверьте это:

+0

Это сделало - благодаря голоду! – Anthony