谷歌浏览器 a:访问的背景图片不起作用
Posted
技术标签:
【中文标题】谷歌浏览器 a:访问的背景图片不起作用【英文标题】:Google chrome a:visited background image not working 【发布时间】:2011-04-16 20:59:28 【问题描述】:(在我开始之前我应该说是的,我已经完成了所有的愚蠢检查,是的链接在我的历史中并且已经被访问过等等)
我使用的是 Chrome 版本 6.0.472.63,但重要的是它适用于所有浏览器。
它适用于 Firefox、IE 和 Opera。
基本上,如果链接已被访问,我要做的就是更改链接的背景图像。
我已经进行了很多试验和错误测试,请耐心等待多个示例。
这就是我原来的样子
.forum_box .title 一个 背景图像:url(../images/f_unread.png); 背景位置:10px 中心; 背景重复:不重复; 背景颜色:透明; 颜色:#2D4054; 字体大小:14px; 填充:10 像素 12 像素 10 像素 44 像素; 文字装饰:无; 显示:块; 字体粗细:粗体; .forum_box .title a:访问过 背景图像:url(../images/f_read.png);适用于除 Chrome 之外的所有浏览器。接下来我尝试将其设置为颜色而不是图像。
.forum_box .title a:访问过 背景颜色:红色;同样如此,但是我将链接更改为 #fff 而不是透明的,并且访问的链接变为红色,因此显然 bg 颜色仅在您为父级设置 bg 颜色时才有效。
.forum_box .title 一个 背景图像:url(../images/f_unread.png); 背景位置:10px 中心; 背景重复:不重复; 背景颜色:#fff; 颜色:#2D4054; 字体大小:14px; 填充:10 像素 12 像素 10 像素 44 像素; 文字装饰:无; 显示:块; 字体粗细:粗体; .forum_box .title a:访问过 背景颜色:红色;但是它仍然不能解决我的图像问题。因此,在最后一次尝试中,我尝试了这一点,希望由于某种原因,Chrome 只能在两者都存在相同属性时才能工作。
.forum_box .title 一个 背景:#fff url(../images/f_unread.png) no-repeat 10px center; 颜色:#2D4054; 字体大小:14px; 填充:10 像素 12 像素 10 像素 44 像素; 文字装饰:无; 显示:块; 字体粗细:粗体; .forum_box .title a:访问过 背景:#fff url(../images/f_read.png) 不重复 10px 中心;这也不起作用,然后继续在 Firefix、Opera 和 IE 上工作。所以我来到Stack Overflow很迷茫。
任何帮助将不胜感激!
更新: 我尝试了一个 jQuery 解决方案,尽管它仍然不起作用。尽管有 :visited 链接,但我可以通过将字体颜色更改为红色来确认它们的访问状态。 jQuery('a:visited').length 返回 0。
【问题讨论】:
这是可能的,例如我可以做 jQuery('.forum_box .title a:visited').addClass('visited') 然后使用该类进行样式设置。但我认为会有另一种解决方案,而不是 Chrome 在最古老和最基本的 CSS 属性之一上存在固有缺陷。 我知道这并不能解决您的问题,但您可以随时提交错误...code.google.com/p/chromium/issues/entry 您是否尝试过使用 Web Inspector 来显示哪些样式应用于a:visited
链接? (Web Inspector:ctrl+shift+i,选择“元素”并导航到并单击元素窗格中的链接)。
抱歉,不知道为什么我没有早点回复这个问题,我一定是全神贯注了。 Web Inspector 不显示任何访问过的样式,甚至 color:red;没有出现(尽管它确实以计算样式显示)。
好问题。似乎已经有一个针对 Chrome 的错误:code.google.com/p/chromium/issues/detail?id=44043。您可能需要在此处添加确认信息。
【参考方案1】:
您可能需要在您的 img 网址周围加上单引号... 浏览器在关心引号和不关心引号时很有趣......
【讨论】:
这没有任何区别,但感谢您的建议! 对不起,它没有更多帮助,这似乎是一个非常奇怪的问题。就像我上面说的,我会在 chromium web 项目上为它提交一个错误,我认为他们会很快修复这样的问题,因为它是基本的 html/css 功能。【参考方案2】:这可能是一个安全问题。 在 Mozilla 安全博客上查看此 post。 我当然可以想象他们会怎么做。
【讨论】:
【参考方案3】:同样的问题。 在 a:visited 上更改 CSS Sprite 中的背景位置在 Firefox 3.6 中对我有效,但在 Chrome 6 中无效。
但可能很快它也会在 Firefox 中停止工作。 (也许是 FF 4?)
这是一个隐私问题,您可以在此处阅读有关它的 Mozilla 文章(2010 年 3 月)http://hacks.mozilla.org/2010/03/privacy-related-changes-coming-to-css-vistited/ 和错误: https://bugzilla.mozilla.org/show_bug.cgi?id=147777#c160
我认为唯一可能的解决方案是创造性地使用背景颜色而不是图像。
【讨论】:
我不认为背景颜色会起作用。 AFAIK 整个 :visited 选择器将被完全忽略。【参考方案4】:Chrome 似乎禁用了 :visited 的 css(颜色除外)。
这是为了防止历史嗅探漏洞。
见http://www.azarask.in/blog/post/socialhistoryjs/
【讨论】:
【参考方案5】:这样做是出于安全原因,因为可以加载许多不同的图像并检测用户访问过的链接、发送特定请求的任何属性或加载特定资源,具体取决于用户访问过的内容在技术上被视为一个安全问题,因为它可能会泄露用户的个人利益。
https://blog.jeremiahgrossman.com/2006/08/i-know-where-youve-been.html
【讨论】:
以上是关于谷歌浏览器 a:访问的背景图片不起作用的主要内容,如果未能解决你的问题,请参考以下文章
$('iframe').css('visibility','hidden') 在谷歌浏览器中不起作用