2011-11-30 52 views
13

是否有任何理由,這並不在Internet Explorer或Chrome工作:爲什麼不是這樣的:訪問過css風格的工作?

<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更改爲a:鏈接不會影響它。

編輯:改變顏色作品,只是不是字體重量。

編輯:解決方法是更改​​可訪問性以忽略Web顏色。我無法訪問源代碼,所以我必須這樣做。

+0

確保您的選擇是小寫第一。有幫助。 a:visited {stuff} – Fredy31

+0

只是爲了駁斥任何關於這是一個案例的想法,這是一個適合你嗎?:http://jsfiddle.net/3aHC9/ –

回答

29

其實,這與大小寫敏感無關。這是一項安全功能。 :visited僞類的功能在許多現代瀏覽器(Fx4,IE9,Chrome)中受到限制,以防止CSS漏洞:請閱讀here

如今,這些瀏覽器中的getComputedStyle()通常會返回訪問鏈接的值,就好像它們未被訪問一樣。不過,我可以簡單想象一下:對於訪問過的鏈接使用font-weight,元素的寬度發生變化,因此瀏覽器允許更改font-weight鏈接不會真正修復安全漏洞。

因此,這個問題沒有解決方法。

+0

解決方法是將可訪問性更改爲忽略Web顏色。我無法訪問源代碼,所以我必須這樣做。 – johnny

0

也許試着改變顏色屬性,看看它是否有效果。

要解決問題,您可能需要嘗試利用chrome中的開發人員工具來查看應用的樣式。

+0

我把紅色,它確實改變它。但字體重量不。謝謝。 – johnny

1

CSS本身並不區分大小寫,但如果使用此樣式的HTML文件具有XML聲明和XHTML文檔類型,則該CSS不起作用,因爲標籤區分大小寫。您必須將「a」標籤設置爲小寫。

解釋這裏: http://reference.sitepoint.com/css/casesensitivity

+0

將文檔轉換爲XHTML的唯一方法是MIME類型,而不是doctype或XML聲明。 – duri

+0

@duri如果是這樣,那麼他的服務器可能會提供帶* application/xhtml + xml *的HTML文件。 –

0

你需要有單獨的聲明爲:鏈接,一個:拜訪,一:主動等

刪除不包含冒號你的第一個樣式。它是壓倒性的。替換爲:鏈接。

0

我通過將鏈接保存到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>'; 
} 
0

的問題與歷史嗅探,改變CSS屬性,由於隱私問題訪問過的鏈接被禁止的事情。

我想出了以下解決方法以達到所需的效果。 可以更改訪問鏈接的背景顏色。

的解決方案是很簡單的:

  1. 設置背景圖像具有相同的高度作爲鏈接 和1px的寬度鏈路上和水平方向上重複圖像
  2. 圖像具有的顏色相同鏈接
  3. 的背景使該圖像的一個像素透明,在垂直中間
  4. 上:訪問狀態只是改變該鏈接的backgroundColor到鏈接的文本顏色
  5. 背景色的只有一條線西港島線是可見的,因爲背景圖像被掩蓋它

下面是一個例子:

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

a:visited { 
    background-color:#000; 
    color:#000; 
}