Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么';这是一个css风格的作品吗?_Css_Cross Browser - Fatal编程技术网

为什么';这是一个css风格的作品吗?

为什么';这是一个css风格的作品吗?,css,cross-browser,Css,Cross Browser,这在Internet Explorer或Chrome上不起作用有什么原因吗: <html> <head> <style> A {font-weight: bold; color:black;} A:visited {font-weight: normal; color: black; } .Empty {font-weight: bold; color: black

这在Internet Explorer或Chrome上不起作用有什么原因吗:

<html>
    <head>
        <style>
            A {font-weight: bold; color:black;}
            A:visited {font-weight: normal; color: black; }
            .Empty {font-weight: bold; color: black; }
        </style>
    </head>

    <body>
        <a href="http://mysite">click me</a>
    </body>
</html>

{字体大小:粗体;颜色:黑色;}
A:访问{字体重量:正常;颜色:黑色;}
.Empty{字体大小:粗体;颜色:黑色;}
我点击的链接永远不会恢复正常,只是保持粗体。在其他一些浏览器上它可以工作

编辑:更改大小写不会影响它

编辑:将链接更改为:链接不会影响它

编辑:更改颜色有效,而不是字体大小


编辑:解决方法是将可访问性更改为忽略网页颜色。我没有访问源代码的权限,所以我必须这样做。

也许可以尝试更改颜色属性,看看这是否有效果


要进行故障排除,您可能需要尝试利用chrome中的开发人员工具来查看应用了什么样式

CSS本身不区分大小写,但是如果使用这种样式的HTML文件具有XML声明和XHTML doctype,那么CSS将不起作用,因为标记区分大小写。您必须将“a”标记设置为小写

解释如下:
对于a:link、a:visted、a:active等,您需要有单独的声明


删除第一个不包含冒号的样式。这是压倒一切的。替换为:链接。

实际上,这与区分大小写无关。这是一个安全特性。在许多现代浏览器(Fx4、IE9、Chrome)中,
:pseudo类的功能受到了限制,以防止CSS攻击:了解它

现在,这些浏览器中的
getComputedStyle()
通常会返回已访问链接的值,就好像它们没有被访问一样。然而,我可以简单地想象绕过这一点:对访问的链接使用
font-weight
,元素的宽度会改变,因此允许更改
字体重量的浏览器不会真正修复访问的
链接的安全漏洞


因此,这个问题没有解决办法。

我通过将链接保存到cookie或会话中,然后手动将已访问的类添加到我的php导航脚本中,解决了我网站的这个问题。只需制作一个uri数组,如下所示:

//Script that loads on every page to save visited pages
$_COOKIE['uris'] = array ('uri/page1', 'uri/page2', 'uri/page3');

//The below script must reside on every navigation script
$uris = $_COOKIE['uris'];
if(in_array($link['uri'], $uris) {
  echo '<a class="visited" href="'.$link['uri'].'">'.$link['name'].'</a>';
} else {
  echo '<a href="'.$link['uri'].'">'.$link['name'].'</a>';
}
//在每个页面上加载以保存已访问页面的脚本
$_COOKIE['uris']=array('uri/page1','uri/page2','uri/page3');
//以下脚本必须驻留在每个导航脚本上
$uris=$_COOKIE['uris'];
if(在数组中($link['uri'],$uris){
回声';
}否则{
回声';
}

问题与历史嗅探有关,由于隐私问题,已访问链接的css属性更改被禁用

为了达到预期效果,我提出了以下解决方法。 可以更改已访问链接的背景颜色

解决方案非常简单:

  • 在链接上设置与链接高度相同的背景图像 和1px宽度,水平重复图像
  • 图像与链接的背景颜色相同
  • 使图像的一个像素在垂直中间透明
  • 打开:访问状态只需将该链接的背景颜色更改为链接的文本颜色
  • 只有一行背景色是可见的,因为背景图像掩盖了它
  • 下面是一个例子:

    a:link {
        color:#000;
        background:#FFF url('../img/linethrough.png') repeat-x top left;
    }
    
    a:visited {
        background-color:#000;
        color:#000;
    }
    

    从2020年起,一个仍然适用于
    的有用属性是
    背景色
    。请尝试:

    :已访问{背景色:红色!重要;}
    
    :已访问的
    也适用于非a元素


    (注意:如果它正常工作,请删除
    !重要的
    。错误的做法。在这里使用它只是为了快速。)

    我遇到了相同的问题。我注意到的是,当您以访客身份在浏览器中登录时(我使用Chrome)会出现此问题。因此,您的代码没有问题

    因此,解决方案很简单:

    只需在Web浏览器中登录您的任何帐户(我再说一次,我只说Google Chrome)


    首先确保你的选择器是小写的。可能会有帮助。a:访问{stuff}为了排除任何关于这是一个案例问题的想法,这一个对您有效吗?:唯一能将文档转换为XHTML的是MIME类型,而不是doctype或XML声明。@如果是,那么他的服务器可能正在使用application/XHTML+XML服务HTML文件。我将其设置为红色,但它确实改变了它。但是字体重量没有。谢谢。worka这一轮的任务是将可访问性更改为忽略网页颜色。我无法访问源代码,所以我不得不这样做。