2011-11-30 32 views
13

Có bất kỳ lý do tại sao điều này không hoạt động trên trình duyệt Internet Explorer hoặc Chrome:Tại sao đây không phải là công việc theo phong cách css được truy cập?

<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> 

Các liên kết Tôi nhấp không bao giờ đi lại bình thường và chỉ nằm đậm. Trên một số các trình duyệt khác hoạt động.

Chỉnh sửa: trường hợp thay đổi không ảnh hưởng đến nó.

Chỉnh sửa: thay đổi liên kết thành: không ảnh hưởng đến nó.

Chỉnh sửa: thay đổi màu hoạt động, không chỉ là trọng số phông chữ.

Chỉnh sửa: cách giải quyết là thay đổi trợ năng để bỏ qua màu web. Tôi không có quyền truy cập vào nguồn, vì vậy tôi phải làm theo cách này.

+0

Hãy chắc chắn rằng selectors của bạn là chữ thường đầu tiên. Có thể giúp. a: đã truy cập {stuff} – Fredy31

+0

Chỉ để loại bỏ bất kỳ ý tưởng nào về vấn đề này, đây có phải là vấn đề cho bạn không ?: http://jsfiddle.net/3aHC9/ –

Trả lời

29

Thực ra, điều này không liên quan gì đến độ nhạy của chữ hoa chữ thường. Đây là một tính năng bảo mật. Chức năng của :visited pseudoclass đã bị hạn chế trong nhiều trình duyệt hiện đại (Fx4, IE9, Chrome) để ngăn chặn khai thác CSS: đọc về nó here.

Ngày nay, getComputedStyle() trong các trình duyệt này thường trả về giá trị cho các liên kết đã truy cập như thể chúng không được truy cập. Tuy nhiên, tôi có thể chỉ đơn giản tưởng tượng việc phá vỡ điều đó: sử dụng font-weight cho các liên kết đã truy cập, độ rộng của phần tử thay đổi để trình duyệt cho phép thay đổi các liên kết font-weight cho các liên kết :visited sẽ không thực sự khắc phục lỗ hổng bảo mật.

Do đó, không có giải pháp cho vấn đề này.

+0

giải pháp thay đổi khả năng truy cập để bỏ qua màu web. Tôi không có quyền truy cập vào nguồn, vì vậy tôi phải làm theo cách này. – johnny

0

Có lẽ thử thay đổi thuộc tính màu và xem liệu thuộc tính đó có hiệu quả hay không.

Để khắc phục sự cố, bạn có thể muốn thử sử dụng các công cụ nhà phát triển trong chrome để xem kiểu nào được áp dụng.

+0

Tôi đặt màu đỏ và nó đã thay đổi nó. Nhưng trọng lượng phông chữ thì không. cảm ơn. – johnny

1

Bản thân CSS không phân biệt chữ hoa chữ thường, nhưng nếu tệp HTML sử dụng kiểu này có khai báo XML và loại tài liệu XHTML, CSS sẽ không hoạt động vì thẻ phân biệt chữ hoa chữ thường. Bạn sẽ phải đặt các thẻ "a" thành chữ thường.

Giải thích ở đây: http://reference.sitepoint.com/css/casesensitivity

+0

Điều duy nhất biến tài liệu thành XHTML là loại MIME, không phải kiểu doctype hoặc khai báo XML. – duri

+0

@duri Nếu vậy, có thể máy chủ của anh ấy có thể đang phục vụ các tệp HTML với * application/xhtml + xml *. –

0

Bạn cần có tờ khai riêng cho a: link, a: visited, a: active vv

Di phong cách đầu tiên của bạn không chứa dấu hai chấm. Nó ghi đè. Thay thế bằng liên kết:.

0

Tôi đã khắc phục vấn đề này cho trang web của mình bằng cách lưu liên kết vào cookie hoặc phiên và sau đó thêm lớp đã truy cập vào tập lệnh điều hướng php của tôi theo cách thủ công. Chỉ cần tạo một mảng uri như thế này:

//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

Vấn đề phải làm với việc dò tìm lịch sử, thay đổi thuộc tính css bị tắt cho các liên kết đã truy cập do vấn đề bảo mật.

Tôi đã đưa ra giải pháp sau để đạt được hiệu quả mong muốn. Có thể thay đổi màu nền của liên kết đã truy cập.

Giải pháp này rất đơn giản:

  1. thiết lập một background-image vào liên kết có chiều cao tương tự như của bạn rộng liên kết và 1px và lặp lại các hình ảnh theo chiều ngang
  2. hình ảnh có màu sắc tương tự như nền của liên kết
  3. làm cho một pixel của hình ảnh đó trong suốt, ở giữa dọc
  4. trên: trạng thái truy cập chỉ thay đổi màu nền của liên kết đó thành màu văn bản của liên kết
  5. Chỉ có một dòng của background-color wil được nhìn thấy, bởi vì background-image được che nó

Dưới đây là một ví dụ:

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

a:visited { 
    background-color:#000; 
    color:#000; 
} 
Các vấn đề liên quan