jquery - SVG 元素 CSS 更改在 Chrome 35 - 36 中不可见

标签 jquery css google-chrome svg google-chrome-devtools

我有一个带有一堆 SVG 元素的应用程序。当我将鼠标悬停在 SVG 元素上时,它们会暂时改变颜色,如果我单击其中一个,它会永久改变颜色(或直到再次单击它)。 单击 SVG 元素时,将调用此代码:

styles = styles + " selected";
$(this).attr("class", styles);

CSS 规则用颜色填充 SVG 元素。这在所有浏览器中工作了一段时间,但在 Chrome 35 中停止工作并且问题在 36 beta 中仍然存在。好像是37固定的。 在 Chrome 中,GUI 似乎卡住了 - 悬停和点击操作有效,但颜色变化不可见 - 代码执行正确,但似乎没有正确呈现。

我有几点感悟:

  1. 这是我第一次这样做 - 当我导航到应用程序中的其他地方并返回(它再次显示 SVG)时,它开始工作。
  2. 当我在 Dev 工具中检查代码时,我看到该元素有“selected”类,而且该元素有彩色填充(在 CSS 检查器中)- 但它对用户不可见。当我在 CSS 检查器中禁用和启用任何 CSS 规则时,它开始工作。 我研究了 Chrome 的变更日志,但找不到任何相关内容。它在所有其他主要浏览器中运行良好。

编辑:无论我将规则添加到元素的方式如何,它都不会呈现它,直到我重新加载整个父元素,这是我做不到的。 代码似乎完全符合我的要求(在内部),但 Chrome 不会显示更改。 有什么方法可以模拟与 Google 开发工具 css 规则更改相同的操作吗? (它总是为我修复它)?

亲切的问候, 卢卡斯

最佳答案

如果你想更新网页的 CSS 规则,你可以通过

document.styleSheets

所以第一个样式表是

document.styleSheets[0]

如果你有

p {
    color: blue;
}

然后在页面的唯一样式表中

var rule = document.styleSheets[0].cssRules[0]

document.styleSheets[0].cssRules[0].style.setProperty('color','#00cc00',null);

将更新规则中的颜色属性。还有更多信息here .

关于jquery - SVG 元素 CSS 更改在 Chrome 35 - 36 中不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24031998/

相关文章:

javascript - href 菜单栏上的下拉按钮

javascript - 删除 html 标签但保留内部 html

javascript - 仅用于相对链接的正则表达式

javascript - 错误 : $injector:modulerr Module Error on running the application?

html - 非正常的 HTML 流程

html - div "style=resize:both"无法在 chrome 中缩小(但它在 firefox 中有效)

javascript - hasPasswordField_ 引发的 Facebook iFrame 安全错误 (document.domain)

javascript - 无法在 JavaScript 中检索 json 值

javascript - jQuery 在滚动时动画一次

javascript - html5 localstorage Chrome 打包应用程序的 Chrome.Local.Storage 更新