私は画像アップローダアプリケーションを開発していますが、Chromeでのみ発生する1つのバグを除いてすべてがうまくいきます。私はこの問題を1つのコールバックに取り除いてしまいました。jQuery .fadeOut .clickが動作しないコールバック
.click()トリガーへの.fadeOutコールバックがトリガーされないという問題があります。私は下にリンクされている簡単なバージョンのフィドルを作り直しました。最初のクリックはfadeOutを開始し、fadeOutが終了すると.clickトリガーは発生しません。もう一度クリックするトリガーがトリガーされます。なぜどんなアイデア?
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');
});
});
});
助けてくれてありがとう!
EDIT:古いフィドルリンクが変更されていました。
何らかの理由でトリガー()をコールバックに配置するとイベントが遅れるように見えますが、ユーザーの作成したものではないと思われるため、Chromeのセキュリティがイベントを停止しているようです。コールバックから取り除くだけで問題が解決され、通常のsetTimeoutでテストするのと同じ問題があるように見えるので、トリガを延期することと関係します()。答えがあります。[**ここ**](http://stackoverflow.com/questions/210643/in-javascript-can-i-make-a-click-event-fire-programmatically-for-a-file-input )これはやや似たような問題を扱っている。 – adeneo
adeneoが言っていることをサポートする[別の回答](http://stackoverflow.com/questions/12134014/how-can-i-programmatically-open-the-file-picker-with-javascript)です。 –
これを回避する手段はありませんか? –