2011-10-17 24 views
10

Các W3.org CSS specification tiểu bang như sau (tôi nhấn mạnh):CSS: liên kết và: các lớp giả được truy cập - là trình duyệt web có tuân theo thông số kỹ thuật không?

  • Các: link pseudo-class được áp dụng cho các liên kết mà chưa được truy cập.
  • Lớp giả: truy cập được áp dụng khi liên kết đã được người dùng truy cập.

Hai trạng thái là loại trừ lẫn nhau.

Điều này có nghĩa là mọi kiểu áp dụng cho bộ chọn :link chỉ nên được áp dụng cho các liên kết không được đề xuất. Tuy nhiên, thuộc tính duy nhất cho điều này đúng là có vẻ là color. Áp dụng kích thước phông chữ, hình nền, v.v. cho bộ chọn :link nhắm mục tiêu tất cả các liên kết.

Có một lưu ý hơn nữa xuống trang cho biết: Thao

Note. Có thể cho các tác giả của tờ định kiểu lạm dụng: liên kết và: các lớp giả được truy cập để xác định trang web nào người dùng đã truy cập mà không có sự đồng ý của người dùng.

Do đó UA có thể coi tất cả các liên kết là liên kết không được đề cập hoặc thực hiện các biện pháp khác để bảo vệ quyền riêng tư của người dùng trong khi hiển thị các liên kết được truy cập và không được truy cập khác nhau.

Tuy nhiên, theo như tôi biết, điều này chỉ áp dụng cho các kiểu được Javascript trả về, không phải hiển thị chính các kiểu.

Here's a JS fiddle hiển thị sự cố. Các trình duyệt có bị lệch khỏi spec ở đây không, hoặc có cái gì tôi đang thiếu?

+0

+1 cho câu hỏi có thể là câu hỏi đầu tiên mà tôi đã xem cả ngày. –

Trả lời

2

Dòng,

"UAS có thể do đó đối xử với tất cả các liên kết như liên kết unvisited, hoặc thực hiện các biện pháp khác để bảo vệ sự riêng tư của người dùng trong khi dựng hình truy cập và liên kết unvisited cách khác nhau."

Không áp dụng cho kiểu được JavaScript trả về chỉ — nó chính xác như âm thanh. Điều này có nghĩa là các trình duyệt chỉ có thể bỏ qua các thuộc tính nhất định trên :visited hoàn toàn (đó là những gì đang xảy ra trong trường hợp này). Vì font-size sẽ tăng kích thước của phần tử chứa, cho phép thuộc tính khác nhau đối với các liên kết :visited sẽ làm suy yếu các biện pháp bảo mật khác do trình duyệt thực hiện.

Trình duyệt có thể chọn tính lại kích thước mà không áp dụng kiểu :visited nếu muốn. Đương nhiên, đây là công việc nhiều hơn và ít hoạt động hơn là chỉ không cho phép các thuộc tính nhất định.Rõ ràng quyết định đã được thực hiện dựa trên thực tế là không có nhu cầu thực sự để sử dụng các kích thước phông chữ khác nhau, hình nền, v.v ... để phân biệt giữa các liên kết được truy cập và không được truy cập và, nói chung, hầu hết các nhà phát triển sẽ chỉ chỉnh sửa màu một chút.

Vì vậy, không, chúng không bị lệch khỏi thông số kỹ thuật, chúng đang tận dụng lợi thế của ngoại lệ được phép.

+1

Câu trả lời hay, không xảy ra với tôi rằng việc thay đổi một số kiểu sẽ ảnh hưởng đến các yếu tố không liên kết khác trên trang. Ngẫu nhiên, có vẻ như hầu hết các trình duyệt đều áp dụng màu sắc và màu nền nhưng không có gì khác. Opera, tuy nhiên, vẫn áp dụng tất cả các kiểu để truy cập các liên kết. – DisgruntledGoat

+2

@DisgruntledGoat: có một đọc phong nha tại http://dbaron.org/mozilla/visited-privacy giải thích các vấn đề và gợi ý chỉ cho phép một vài thuộc tính được chọn. Có khả năng các thuộc tính được phép sẽ thay đổi từ trình duyệt đến trình duyệt. –

0

Từ những gì tôi hiểu được từ thông số kỹ thuật, các trình duyệt đang xử lý :link như a để tránh tình trạng lạm dụng trên trạng thái đã truy cập. Do đó có hoặc không có javascript, kiểu thực sự được áp dụng cho tất cả các liên kết là :link và chỉ :visited là quá tải kiểu khi được truy cập.

+0

Nhưng thuộc tính 'color' * không * bị ghi đè bởi lớp': link', trong khi các kiểu khác là. Xem ở đây: http://jsfiddle.net/SEjJg/3/ – DisgruntledGoat

Các vấn đề liên quan