如何强制WebKit重新绘制/重绘以传播样式更改?

我有一些琐碎的JavaScript来进行样式更改:

sel = document.getElementById('my_id');sel.className = sel.className.replace(/item-[1-9]-selected/,'item-1-selected');return false;

这适用于FF、Opera和IE的最新版本,但在Chrome和Safari的最新版本上却失败了。

它影响到两个后裔,他们碰巧是兄弟姐妹。第一个同级更新,但第二个更新不更新。<a>中包含上述代码的onClick属性。

在Chrome“Developer Tools”窗口中,如果我轻推(例如,取消检查和检查)任何属性任何元素时,第二个同级更新为正确的样式。

有没有一种变通方法可以轻松地以编程的方式“推动”WebKit去做正确的事情呢?

如何强制WebKit重新绘制/重绘以传播样式更改?

炎炎设计
浏览 360回答 3
3回答

德玛西亚99

我遇到了一些非常奇怪的问题:webkit根本不绘制一些元素;输入中的文本直到onblur才更新;更改className不会导致重绘。我意外地发现,我的解决方案是在脚本之后向主体添加一个空样式元素。<body>...<script>doSomethingThatWebkitWillMessUp();</script><style></style>...修好了。这有多奇怪?希望这对某人有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP