【问题标题】:Can I use the CSS :visited pseudo class on 'wildcard' links?我可以在“通配符”链接上使用 CSS :visited 伪类吗?
【发布时间】:2010-03-22 01:52:02
【问题描述】:

假设我有一个包含多个链接的网站,如下所示:

www.example.com/product/1
www.example.com/product/2
www.example.com/product/3

我还会不时将跟踪信息附加到链接中,以便查看我的网站是如何使用的,例如,如果有人从产品浏览器访问产品页面,我会设置一个 ref 参数:

www.example.com/product/1&ref=pb
www.example.com/product/2&ref=pb
www.example.com/product/3&ref=pb

这样做的问题是,如果用户访问第一种类型的链接,然后查看第二种类型的链接,那么 :visited 伪类似乎不适用,因为浏览器似乎只匹配确切的 URL .从这个意义上说,有没有办法让“通配符”应用于链接,以便当用户看到第一种类型或第二种类型的链接时,它会被突出显示?

注意:我无法更改此“参考”架构;它是继承的。

【问题讨论】:

    标签: css url css-selectors wildcard visited


    【解决方案1】:

    您也许可以使用 javascript 来做到这一点。您可以将链接编码如下

    <a href="www.example.com/product/1" onclick="document.location.href='www.example.com/product/1&ref=ab';return false;">
    

    对于启用了 javascript 的任何人,您将看到访问 www.example.com/product/1&ref=ab,并且他们的浏览器会将所有带有 href=www.example.com/product/1 的链接检测为相同的链接.并根据 :Visited 伪类适当地设置它们的样式。唯一的缺点是你不会得到那些没有 Javascript 的参考信息。这是否是一个可接受的权衡取决于您的要求。

    你也可以这样做:

    <a href="www.example.com/product/1" onclick="document.location.href=this.href + '&ref=ab';return false;">
    

    因此您不必在其中对 url 进行两次编码。您甚至可以创建一个返回正确链接的函数,从一个地方获取 ref 值。

    【讨论】:

    • 提醒一下:HTML 参数中的“&”应该总是被转义。实体转义&amp;amp; 或JS 字符串转义\x26 都可以。虽然现代浏览器通常能够即时修复 tag-soup,但在 XHTML 的情况下,这样的问题可能会导致整个页面呈现为 XML 错误消息。
    【解决方案2】:

    我很确定答案是否定的。

    【讨论】:

      【解决方案3】:

      如果 URL 仅相差一个字符,则它不是同一个 URL。所以……不。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-10-08
        • 1970-01-01
        • 1970-01-01
        • 2020-05-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多