IE7 中的组合框行为

Posted

技术标签:

【中文标题】IE7 中的组合框行为【英文标题】:Combo box behaviour in IE7 【发布时间】:2011-06-15 04:44:49 【问题描述】:

您好,我知道这不是一个好主意,但由于一个用例,我正在填充一个包含更多 10000 个项目的组合框。它在所有其他浏览器中的 IE7 中的行为非常怪异,在 IE7 中运行良好,下载页面花费了太多时间。有时候IE7也会挂掉

对于这个问题,IE7 是否存在任何已知错误。

谢谢, 阿米特

【问题讨论】:

哇!没有更好的方法来处理这个问题吗?忘记浏览器问题,这对用户不友好。 组合框是结合了文本框的下拉菜单。你用什么 javascript 来产生这个? (或者您的意思是“选择元素”(通常呈现为下拉菜单并且可以呈现为列表框)? 正如马特建议的那样,将 10,000 个选项塞入一个页面首先是糟糕的设计。试图用它解决 IE 性能问题是在解决错误的问题。 @Matt 我知道它不是一个友好的用户,但它是作为非常罕见的用例之一出现 【参考方案1】:

不确定是否可以采取任何措施来加快速度。要研究的一件事是通过 Ajax 动态加载选项,并将它们作为 DOM 节点添加到现有的选择元素中。这至少允许在获取其余数据之前加载整个页面。

还有现成的基于 JS/jQuery 的 Ajax 组合框。具有良好加载策略的人可能会产生更好的结果。

我对他们没有经验,所以我无法判断哪一个适合你,但这些似乎值得一试:

DhtmlXCombo(不是免费的) 更多在this question

【讨论】:

【参考方案2】:

我建议放弃在单个选择框中包含 10k 个条目的任何尝试——正如其他人所说,这是用户界面的噩梦,即使你可以通过杀死浏览器来解决问题(我不认为你可以)。

该怎么做?

    将选择分为几类。然后为该类别设置一个<select> 框,并根据选择的类别填充第二个<select>。第二个<select> 可以通过Ajax 或页面重新加载来填充;这两种技术都很常见。鉴于您要提供的选项数量,您甚至可能希望将其分解为类别和子类别。

    另一种选择(考虑到您提供的选项数量可能会更好)是实现 Google 样式的自动完成。有许多易于使用的 Javascript 和 JQuery 脚本可以让您实现这类事情,而无需从头开始编写 - 这几乎就像编写选择框一样简单。 这里有一个供你尝试:http://docs.jquery.com/Plugins/autocomplete(如果你用谷歌搜索,还有很多其他的)

希望对您有所帮助。

【讨论】:

以上是关于IE7 中的组合框行为的主要内容,如果未能解决你的问题,请参考以下文章

带组合框的用户表单-输入密钥行为

访问表单组合框 listindex 更改

发布版本中的 Qt 不可见组合框(但不在调试版本中)

如何让 extjs 组合框像普通的 html 选择框一样工作?

QQuickWidget中的组件与QQuickView中的组件行为不同

如何链接多个组合框表中的两个组合框?