Có thể phát hiện hỗ trợ CSS bằng cách sử dụng Javascript không?Phát hiện khả năng CSS với Javascript
Ví dụ: có thể phát hiện xem trình duyệt có hỗ trợ bộ chọn thuộc tính như thế này không?
input[type='text'] { }
Có thể phát hiện hỗ trợ CSS bằng cách sử dụng Javascript không?Phát hiện khả năng CSS với Javascript
Ví dụ: có thể phát hiện xem trình duyệt có hỗ trợ bộ chọn thuộc tính như thế này không?
input[type='text'] { }
document.querySelectorAll("input[type='text']")
Nhưng điều đó không cho các trình duyệt cũ, một cách tự nhiên.
Ngoài ra, bạn chỉ có thể sử dụng thuộc tính style
để kiểm tra xem một thuộc tính CSS nhất định đã được áp dụng hay chưa.
input[type='text'] {
background-repeat: no-repeat; /* or any other irrelevant, non-default value */
}
và
if (myInputElem.style.backgroundRepeat == "no-repeat") {
// selector is supported
}
Modernizr được thiết kế để phát hiện các tính năng trình duyệt và cũng có thể giúp đỡ trong trường hợp này. http://www.modernizr.com/
Chỉ thực sự phát hiện nội dung mới ... '[attr]' selectors ở mọi nơi (ngoại trừ IE6) – gnarf
Modernizr dùng cho HTML4 -> 5 mã hóa chuyển tiếp, không phải là bộ công cụ chung để kiểm tra khả năng trình duyệt cũ. Sử dụng sai (và imo, không chính xác) cho thư viện này. Sử dụng nó để đảm bảo rằng bạn có thể làm việc với "canvas" và các phần tử mới khác bất kể hỗ trợ HTML5, không xác minh rằng các khả năng cũ vẫn tồn tại trong trình duyệt. – Brian
Đây là một chút suy đoán vì tôi chưa thử nghiệm, nhưng tôi tin rằng có thể thông qua JS để thêm phần tử style
tiếp theo là yếu tố có hiệu lực và sau đó kiểm tra giá trị :
đầu cơ đang chưa được kiểm tra, có thể có hoặc không hoạt động (jQuery sử dụng cho ngắn gọn):
$('<style type="text/css" id="foo">input[type="text"]{ width: 10px; }</style>').appendTo('head');
$('<input type="text" id="bar">').appendTo('body');
if ($('#bar').width() == 10)
{
//attr selector supported
}
$('#foo, #bar').remove();
thế nào điều này sẽ có ích? Bạn phải chạy JavaScript để kiểm tra, vì vậy bạn cũng có thể chạy JavaScript để [thêm hỗ trợ cho nó] (http://selectivizr.com/). – thirtydot
@thirtydot, vâng tôi biết những gì bạn đang nói, nhưng tôi đoán rằng trình duyệt ít phải làm việc trong Javascript, thì càng tốt. Nếu công cụ CSS có thể xử lý nó, tại sao lại lãng phí các chu kỳ quý giá? ;) – nickf
Vì công cụ CSS (trong IE6-8) * không thể * xử lý nó. Selectivizr ngay lập tức thoát nếu trình duyệt không phải là IE6-8 (các trình duyệt phổ biến duy nhất không hỗ trợ công cụ này). Nếu không, nó sẽ chạy và thêm hỗ trợ cho một loạt các bộ chọn đáng yêu. – thirtydot