我将如何防止 jQuery 对话框将其打开器集中在关闭上?
我有一个很大的文本区域,当打开对话框时会聚焦。如果页面向下滚动到底部,则当对话框打开时。当对话框关闭时,jQuery UI 聚焦 textarea,并使页面跳回顶部。
这是一个例子: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并单击文本区域,向下滚动,然后等待对话框弹出,当它关闭时,窗口将滚动到顶部。