2

我在 webkit 浏览器中通过 Javascript 获取伪元素的生成内容时遇到了一些麻烦。

关心的人的上下文:我正在开发一个 jQuery 移动应用程序并尝试使用 FontAwesome 图标。我希望能够使用 jQM 用于其自己的内置图标集的相同数据图标属性来添加它们。所以我有一个脚本,它可以在页面上搜索任何具有该类的内容,ui-icon-whatever并为 FontAwesome 添加相应的icon-whatever类。问题是 FontAwesome 使用伪内容作为其图标,而 jQM 使用良好的老式背景图像精灵。因此,如果图标名称碰巧有任何重叠(例如,两组都有一个名为“编辑”的图标),我最终会得到一个图标层叠在另一个图标之上。正如您可能想象的那样,看起来……不太好。所以我试图通过并从任何.ui-icon带有内容属性集。基本上,如果存在同名的 FontAwesome 图标,则删除 jQM 图标。

当我了解 getComputedStyle 时,我很兴奋,但我尝试window.getComputedStyle(this,':before').content != ''了几种变体都无济于事。尝试使用 '::before' 并且仅将 'before' 作为第二个属性,并尝试将其与 null 或 false 而不是空字符串进行比较,但结果是相同的:它要么找到所有图标,要么没有找到它们。

当我window.getComputedStyle(this,':before').content在 Chrome 的控制台中转储时,我总是得到一个空字符串,即使在应该有内容的情况下也是如此。Firefox 做对了。我不确定这是 Chrome 的东西还是 webkit 的东西。

我究竟做错了什么?

编辑:下载适用于 Windows 的 Safari 5。一样的。内容始终是一个空字符串。我开始认为这可能与我用来获取this.

4

1 回答 1

6

这个问题已经很老了,但如果有人正在寻找解决方案,这就是你的做法:

window.getComputedStyle(document.querySelector('#element'),':after').getPropertyValue('content')
于 2014-03-05T21:26:43.930 回答