- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我计划使用 mithril.js 编写一个性能敏感的应用程序,该应用程序将有数千个可以随时更新的 DOM 元素,并且我必须确保只有更新的元素才会被重绘。
我的问题是,有没有一种方法可以让 Mithril 自动重绘系统记录 DOM 更改(到浏览器控制台或任何地方),以便我可以查看它并绝对确定只有预期的 DOM 元素发生了更改?我想防止自己的逻辑错误,并确信 Mithril 只触及变化的元素。
最佳答案
您可以使用 W3C MutationObserver用于让浏览器记录 DOM 中发生的更改的 API(尽管 API 很繁琐)。这可以让您充分了解对 DOM 所做的每一个具体修改。
为了在重绘后记录结果,您可以在主应用程序之后安装一个未附加的(即从未注入(inject)到实时文档中)组件,并从观察者处获取一个空根节点到takeRecords
Mithril 的config
分辨率。这段代码是即时编写的,未经测试,但应该可以给您一个想法:
// Application code
// Mount an unattached component
// to log mutation records
m.mount(
document.createElement( 'div' ),
{
controller : function(){
return new MutationObserver( function( records ){
console.log( records )
} )
},
view : function( ctrl ){
return m( 'div', {
config : function( el, isInitialized ){
if( !isInitialized ){
ctrl.observe( el, {
attributes : true,
characterData : true,
childList : true
} )
}
}
} )
}
}
)
编辑:当我刚刚尝试时,我发布的代码不起作用。我更新了它以提供工作代码。正如你所看到的,它很复杂、不直观而且丑陋。我已经多次想要这样做,每次我都在 MutationObserver API 中挣扎:突变记录列表很容易阅读,但初始化观察者很笨重,并且总是涉及复制 + 粘贴。所以我写了一个小包装,Muty ,让这变得更容易。使用 Muty,您需要做的就是 muty( muty.options, el, reports => console.log(records ) )
。
关于javascript - 跟踪 mithril.js 自动重画系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34720832/
我想以 headless 模式(屏幕上根本没有 GUI)将 JPanel 绘制到 BufferedImage 中。 final JPanel panel = createPanel(); panel.
我是 Canvas 的新手,正在尝试创建看起来逼真的 float 粒子动画。 目前,我正在创建 400 个随机散布在 400x400 Canvas 上的粒子。 然后,在每个 requestAnimat
有没有办法在悬停时停止悬 float 画? :hover 这是一个显示动画的链接: https://codepen.io/youbiteme/pen/RprPrN 最佳答案 只需为您的 svg 悬停添
我想在谷歌地图上绘制覆盖图,其中除了特定点周围 1.5 公里半径以外的所有内容都被遮蔽了。为此,我尝试使用带有大量边框的圆圈,所以我会在边框中放置透明中心和覆盖颜色来实现这一点,但它无法渲染。
我正在尝试通过扩展类 UIView 来创建自定义 View ,该类可以在自定义 View 的中心显示一个圆圈。为了添加自定义绘图,我重写了 draw(_ rect: CGRect) 方法,如下所示。
我是一名优秀的程序员,十分优秀!