Vì vậy, gọi là CẬP NHẬT câu trả lời:
Như OP đề cập đến một điểm tốt Tôi đang cập nhật câu trả lời nhưng điều này không có liên quan đến bất cứ điều gì hoặc mâu thuẫn với câu trả lời trước đây của tôi, điều này chỉ đơn giản là một trình duyệt phát hiện.
Alan H. đã đề cập rằng IE, trước ngày thứ 10 của nó. Phiên bản, hỗ trợ filter
tài sản css nhưng không theo cách chúng ta đều biết về nó (CSS3 filter
Tôi có nghĩa là).
Vì vậy, nếu chúng tôi chỉ muốn phát hiện CSS3 filter
giây, chúng tôi sẽ tiếp tục và sử dụng một chút phát hiện trình duyệt. Như tôi đã đề cập trong my comments.
Sử dụng thuộc tính documentMode
và kết hợp nó với tính năng phát hiện đơn giản của chúng tôi, chúng tôi có thể loại trừ cái gọi là dương tính giả trong IE.
function css3FilterFeatureDetect(enableWebkit) {
//As I mentioned in my comments, the only render engine which truly supports
//CSS3 filter is webkit. so here we fill webkit detection arg with its default
if(enableWebkit === undefined) {
enableWebkit = false;
}
//creating an element dynamically
el = document.createElement('div');
//adding filter-blur property to it
el.style.cssText = (enableWebkit?'-webkit-':'') + 'filter: blur(2px)';
//checking whether the style is computed or ignored
//And this is not because I don't understand the !! operator
//This is because !! is so obscure for learning purposes! :D
test1 = (el.style.length != 0);
//checking for false positives of IE
//I prefer Modernizr's smart method of browser detection
test2 = (
document.documentMode === undefined //non-IE browsers, including ancient IEs
|| document.documentMode > 9 //IE compatibility moe
);
//combining test results
return test1 && test2;
}
Original Modernizr source
if(document.body.style.webkitFilter !== undefined)
hoặc
if(document.body.style.filter !== undefined)
Thông tin thêm:
Chỉ để phát hiện tính năng đơn giản, hãy sử dụng các mã của tôi ở trên.Đối với một danh sách các chức năng được hỗ trợ, hãy xem ở đây:
cho một cuộc biểu tình sống của filter
s trong Chrome, hãy xem ở đây:
Và 2 nhiều nguồn lực hơn cho bạn:
Như tôi đang viết câu trả lời này, bạn phải sử dụng tiền tố webkit
nhà cung cấp để làm cho nó làm việc.
Bạn có nghĩa là các kiểu khác nhau bên trong 'bộ lọc' hoặc' bộ lọc' chính nó? – Sepehr
@ 3p3r Rất tuyệt, một số trình duyệt nhất định chỉ hỗ trợ một số trình duyệt? ... tất nhiên rồi. Vâng, bất cứ điều gì là cần thiết để kiểm tra, tôi đoán. –
Tôi giả định, đó là trường hợp, bởi vì trình duyệt của tôi (Chrome 19) hỗ trợ 'filter' nhưng nó không hỗ trợ' grayscale' – Sepehr