Sto lavorando a un'applicazione di caricamento di immagini e tutto funziona perfettamente tranne un bug, che si verifica solo in Chrome. Ho ridotto il problema a una richiamata che non sta attraversando.jQuery .fadeOut Callback to .click Not che funziona
Il problema è che un richiamo .fadeOut su un trigger .click() non viene attivato. Ho ricreato una versione semplificata in un violino che è collegato qui sotto. Il primo clic avvia il fadeOut e quando il fadeOut è terminato, il trigger .click non si verifica. Fare clic una seconda volta Fa quindi scattare il grilletto. Tutte le idee perché?
HTML:
<div><input type="file" name="image_file" id="image_file"/></div>
<div class="overlay_wrap">
Overlast
</div>
<a id="click" href="">Click</a>
jQuery:
$(document).ready(function() {
$("#click").click(function(event) {
event.preventDefault();
$('.overlay_wrap').fadeOut(1000, function(event){
$('#image_file').trigger('click');
});
});
});
Grazie per l'aiuto!
MODIFICA: il vecchio collegamento Fiddle era cambiato.
In qualche modo posizionare il trigger() nel callback sembra differire l'evento, e sembra che sia la sicurezza di Chrome a fermare l'evento, probabilmente perché pensa che non sia generato dall'utente o qualcosa di simile. Toglierlo dal callback risolve il problema, e il testing con un setTimeout regolare sembra avere lo stesso problema, quindi ha qualcosa a che fare con il differimento del trigger(). C'è una risposta [** qui **] (http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input) che tratta di un problema in qualche modo simile. – adeneo
Ecco [un'altra risposta] (http://stackoverflow.com/questions/12134014/how-can-i-programmatically-open-the-file-picker-with-javascript) che supporta ciò che dice adeneo. –
Quindi non c'è modo di aggirare questo? –