【问题标题】:Is there an efficient way to get notified of HTML DOM element attribute changes?有没有一种有效的方法来获得 HTML DOM 元素属性更改的通知?
【发布时间】:2011-06-19 22:03:42
【问题描述】:

我有一个<ul><li> 列表,需要了解每个<li> 的当前width/height。 假设这些属性中的一个因外部原因(不是我自己的代码)而改变,例如,通过调整浏览器大小、通过另一个脚本、样式交换或我无法用我自己的代码控制的类似事情。

跟踪这些变化的最佳和最有效(性能)的方法是什么?

我的第一个解决方案是setInterval(myMonitorFunction, 100),它循环遍历所有相关的 DOM 元素。这是滞后的(100 毫秒),并且元素列表越大,也会消耗大量性能。

对于表单元素,onchanged 事件允许有效监控输入值。我正在为所有/其他 DOM 元素属性寻找类似(和类似高效)的东西,但还没有找到任何好的解决方案。

【问题讨论】:

    标签: javascript html events dom binding


    【解决方案1】:

    有一个DOMAttrModified 事件,但它仅在现代浏览器中受支持。如果您想支持较旧的浏览器(例如 IE),除了您提到的那种(当然这是一种矫枉过正)之外,没有简单的方法可以做到这一点。

    【讨论】:

    • 谢谢,这正是我想要的。我不在乎旧的浏览器。我也大量使用 SVG,在任何东西可以上线之前,我必须等待现代浏览器变得更加现代,完全正确地支持 SVG 的许多功能。 ;)
    • 我应该注意到,虽然是正确的答案,但突变事件也不利于性能。
    猜你喜欢
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    • 2023-01-02
    • 1970-01-01
    相关资源
    最近更新 更多