对话框 API 重构
在继续 API 重构的过程中,我们计划对对话框小部件进行一些更改。我们知道 API 更改会对用户造成一定成本,因此我们想明确说明,除了特别指出的情况外,**jQuery UI 对话框 1.9 版本将继续支持 1.8 版本的 API**,弃用的 API 不会在 jQuery UI 2.0 版本之前移除。有关完整的 jQuery UI API 重构 的更多信息,请阅读。
API 重构
在对话框中包含焦点
我们目前只在模态对话框中包含焦点。我们将更改此行为,始终包含焦点,即使在非模态对话框中也是如此。这将使我们更符合 DHTML 风格指南。我们不确定是否要实现一个将焦点从对话框中移出的键命令(例如 F6),因为这将需要定义一个系统来跟踪焦点应该移动到哪里。
允许禁用对话框
对话框目前不支持禁用。它们会继承添加 ui-state-disabled
类的默认行为,这会使对话框看起来被禁用,但用户仍然可以与对话框中的元素交互。为了支持禁用对话框,我们将在对话框上放置一个 div 来阻止鼠标交互。
能够配置哪个元素获得焦点
打开对话框时,我们会搜索哪些元素是可选项的,并找到第一个元素并将其设置为焦点。如果没有可选项元素,则将对话框本身设置为焦点。我们将添加一个 autoFocus
选项,允许自定义哪个元素获得焦点。该选项将接受一个函数,该函数将返回要设置焦点的元素。该选项的默认值为当前实现。如果使用该选项没有找到任何元素,则对话框将被设置为焦点。
在销毁时将对话框移回原始 DOM 位置
创建对话框时,它们会被移动到 body 的末尾。当对话框被销毁时,它们目前仍保留在 body 的末尾。我们将更改此行为,以便如果可能,将对话框返回到原始位置。这将通过在创建时跟踪一个兄弟节点或父节点来实现。
自动堆叠stack
选项控制对话框在获得焦点时是否会移动到其他对话框的顶部。由于这种情况应该始终发生,因此我们将删除该选项并强制执行此行为。此外,我们可能会删除 moveToTop
方法,因为正确的对话框始终应该可供用户使用,具体取决于它们打开的时间以及它们是模态还是非模态。
更合理的模态性
当前用于管理模态对话框的实现有点笨拙,会比较元素的 z-index,并且经常会导致问题。我们计划简化实现,并改用基于层次结构的解决方案,而不是基于样式的解决方案。
反馈
我们希望听到您对这些更改的反馈。我们希望确保在最终确定和实施这些更改之前,解决社区可能遇到的任何问题。如果您有任何反馈,请在 相关论坛帖子 上发布。感谢。