【问题标题】:battery-friendly way to detect if a textbox's content has changed检测文本框内容是否已更改的电池友好型方法
【发布时间】:2012-01-23 18:01:50
【问题描述】:

This question's answers 建议使用window.setInterval 作为唯一可靠的方法来立即检测(无需等待模糊)是否更改了文本框的内容,因为某些文本框的更改可能通过按键以外的事件发生。

即使在我的台式电脑上,我也看到 IE 或 Firefox 以 500 毫秒的 setInterval 运行并使用相对简单的处理程序检查几个文本框,从而消耗了相当大的 CPU 百分比。这在台式电脑上是可以的,但在笔记本电脑和手机上会影响电池寿命。

什么是使用 jquery 来最小化 CPU 使用率但仍提供快速更新以响应文本框的更改(包括剪贴板粘贴、ajax 更新等,而不仅仅是按键)的好方法?

【问题讨论】:

    标签: jquery power-management mobile-browser


    【解决方案1】:

    onBlur 是指您离开一个对象而不必更改它。

    onChange 仅在您离开已更改其值的对象后才会调用。

    其中一个应该适合您的需求。如果不是,则每个字符更改都会触发各种按键事件。

    如果不这样做,那么定期更新单个 javascript 变量可能不会像您所说的那样占用尽可能多的处理能力,除非您的选择器导致一些奇怪的 DOM 行为。

    试试这个:通过 id 引用元素,并将该引用存储在 js 变量中。通过此引用更新和更改另一个变量是一个简单的操作。

    【讨论】:

    • 我执行了您的建议,并发现了主要的 CPU 问题:导致重复设置元素的 text() 的比较错误。即使文本与旧文本相同,也需要 50% 的 CPU 内核来更新它。 IE9 现在已降至
    【解决方案2】:

    开始在该文本框的焦点上运行 window.setInterval(或 setTimeout)检查器,并在模糊时终止它。这样,当光标不在文本框中时,您就不会消耗 CPU 资源。

    【讨论】:

    • 虽然这可行,但我无法理解为什么此操作会花费任何可测量的时间,除非存在错误的选择器,所以我不推荐它。
    • 我同意,这个操作一开始并没有那么糟糕。我只是在回答这个人的问题……对一个小问题的小改进。 =)
    猜你喜欢
    • 2014-11-17
    • 2010-12-01
    • 2010-11-04
    • 2016-11-01
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    相关资源
    最近更新 更多