【发布时间】:2016-08-30 23:32:16
【问题描述】:
我有一个knockoutjs 应用程序,它已经运行多年了。浏览器通过 SignalR 接收消息,然后由 Knockoutjs 渲染。
现在,如果您在 Microsoft Edge 中运行应用程序,屏幕上的相同字段不会更新,而其他字段正在更新。总是相同的字段更新一次,然后再也不更新。如果您检查 DOM,那么您可以看到它正在发生变化。
经过大量排除,我发现问题似乎是由 1 行 css 引起的
html { text-transform: uppercase; }
我已经整理了一个关于这个错误的小演示,然后你可以在 Chrome/FF/IE9/IE10 vs Edge 中运行它。在 Edge 中运行应用了样式的代码,然后将其注释掉以查看值的更新。
http://jsbin.com/baqozusuge/edit?html,css,js,console,output
github上的代码链接https://gist.github.com/anonymous/de7610c341e6ee737d8290eb608afb57
有人知道这到底是怎么回事吗?!似乎 Microsoft Edge 决定根据当前显示的值的相似性来缓存显示。
【问题讨论】:
-
这绝对是一个特殊的问题! Edge 并不完美,这似乎是一个重绘问题——当将一些 Math.random() 附加到 cld 的每个属性时,它每次都会更新它,但是没有它,即使调用 ko valueHasMutated() 也无济于事。而且我还注意到间隔并不总是更新随机值。不知道为什么 html 上的 text-transform 会修复它;(
-
是的,好像因为文本转换为大写,Edge 正在比较这些值以确定是否需要重绘。
标签: css knockout.js microsoft-edge