jQueryダイアログがオープナーをクローズに集中させないようにするにはどうすればよいですか?
ダイアログを開いたときにフォーカスされる大きなテキストエリアがあります。ダイアログが開いているときに、ページが一番下までスクロールされた場合。ダイアログが閉じられると、jQuery UI はテキストエリアにフォーカスし、ページを一番上に戻します。
例を次に示します: http://jsfiddle.net/bPqF2/1/
アンカーをクリックして、ダイアログを閉じます。
<div>
<a id="click-me" href="#bottom">Click me</a>
</div>
<div>
<textarea style="height: 2000px">
...
</textarea>
</div>
<div>
<a id="bottom" name="bottom"></a>
</div>
$(function() {
$('#click-me').click(function() {
$('textarea').focus();
setTimeout(function() {
$('<div>').text('Close me please!').dialog({
modal: true
});
});
});
});
jQuery UI の問題のある行はhttps://github.com/jquery/jquery-ui/blob/86eaa30994657b650b26388e87ecff679cf93a50/ui/jquery.ui.dialog.js#L181です。
(注:上記は自動化された例にすぎません。実際の使用例では、ユーザーがウィンドウを下にスクロールすると、ダイアログが開き(フォーカスを盗まないボタンをクリックして、 を使用user-select: none
)、ウィンドウを閉じるとウィンドウがジャンプしますトップに戻る)。
これが表示された場合: http://jsfiddle.net/bPqF2/9テキスト領域をクリックし、下にスクロールして、ダイアログがポップアップするのを待ちます。ダイアログを閉じると、ウィンドウが一番上までスクロールされます。