【问题标题】:jQuery Tabs and Firefox Performance IssuesjQuery 选项卡和 Firefox 性能问题
【发布时间】:2011-01-29 17:54:45
【问题描述】:

考虑在页面上有数千个常规的输入按钮(使用 jQuery .button() UI)和输入文本。

在 Firefox 上,如果我点击按钮,点击事件会立即触发。

但是,如果我将所有这些对象放入一个 jQuery Tab 中,打开选择菜单或触发按钮点击需要一些时间。

在 Chrome 上,无论有无标签,一切都会立即触发。

请在 Firefox 上查看此链接 http://jsbin.com/awubo3/5/edit,然后删除标签上的评论并重试。启用选项卡时,按钮会延迟触发。

在我的页面上更糟糕的是,有时需要 3-4 秒才能触发点击或打开选择菜单。

这个问题可以解决吗?

【问题讨论】:

  • 刚刚试了一下,无法复制。你试过不同的机器吗?你用的是什么火狐版本?是否安装了其他插件?

标签: jquery jquery-ui firefox jquery-ui-tabs


【解决方案1】:

该页面肯定存在一些性能问题。由于您正在处理页面的密集工作,您将亲眼目睹 javascript 引擎实现之间的性能差异。除了尝试找到一种更有效的方法来做您想做的事情之外,您无能为力。

例如,您可以保持代码架构不变,但减少页面上的元素数量。实施某种分页解决方案以允许用户访问所有记录,但限制查看的数量以便性能可以接受。

如果您必须同时显示所有这些信息,请考虑实现您正在使用的 jquery UI 元素的轻量级版本。实现一个“标签”系统可以非常轻量级(here is an example 只需几行代码即可完成)。如果您纯粹出于样式原因使用 UI 按钮,请查看仅使用 css 可以实现多少。

【讨论】:

    【解决方案2】:

    jQuery,尽管它的所有优势,都需要很长的路要走。考虑 $(#element) 与 getElementByID。后者是内置在 javascript 中的,如果你有很多,运行纯 javascript 会更快。但是 jQuery 选择器会通过一堆 jQuery 函数调用。此外,逐步浏览我发现 jQuery 也克隆了很多。假设你在点击处理程序中给它一个匿名函数。jQuery 不只是附加事件并完成它。取而代之的是,它需要那个函数,遍历一堆 isString、isObject、isArray,最后是 isFunction。一旦发现它是一个函数,它就会将其拆分并在私有内部函数中重建整个事物,然后它可以将其附加到事件中。

    【讨论】:

      猜你喜欢
      • 2012-09-27
      • 1970-01-01
      • 2011-04-06
      • 2011-02-02
      • 2013-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多