2011-08-11 27 views
19

Như bạn có thể biết, có một cách tương đối đơn giản làm thế nào để, ít hoặc đáng tin cậy hơn, detect whether Caps Lock is on, đặc biệt là khi người dùng bắt đầu nhập vào các trường mật khẩu. Tuy nhiên, đó là một thực tế khá không rõ rằng IE10 hỗ trợ tính năng này tự động, mà không cần bất kỳ mã hóa bổ sung (source, direct link to screenshota simple demo). Vì vậy, bây giờ tôi đang phải đối mặt với một vấn đề bởi vì nếu tôi thêm một Javascript tương tự funcionality, người dùng IE10 sẽ thấy hai "bong bóng" với cảnh báo, một tạo ra bởi kịch bản của tôi và một tạo ra bởi trình duyệt của họ; điều này có thể trông xấu hoặc thậm chí gây nhầm lẫn. Đây là lý do tại sao tôi đang tìm một giải pháp làm thế nào để phát hiện xem trình duyệt có chức năng này được tích hợp sẵn hay không; Tôi hy vọng nó kích hoạt một số sự kiện hoặc thay đổi một số tài sản, nhưng tôi đã không tìm thấy bất cứ điều gì như thế này.Có cách nào để phát hiện tính năng "Caps Lock bật" của IE10 không?

Tôi có thể chỉ tìm kiếm Trident/6.0 trong chuỗi tác nhân người dùng, nhưng tôi muốn tránh phát hiện trình duyệt; nó có lẽ cũng sẽ yêu cầu một số mã bảo trì nếu các trình duyệt khác thêm tính năng tương tự.

Nếu không có giải pháp đáng tin cậy, tôi sẽ yêu cầu Nhóm IE thêm khả năng phát hiện tính năng "caps-lock-on-on" và cũng có thể là người biên tập đặc tả HTML để yêu cầu các nhà cung cấp thực hiện việc này.

+2

Không có tiêu chuẩn cho phơi bày hành vi mặc định này. Vì vậy, không có cách nào để thử nghiệm tính năng, do đó, tác nhân người dùng phù hợp là cách duy nhất. Hoặc bạn có thể cố định vị trí bạn bong bóng dưới bong bóng mặc định (giả sử bong bóng trình duyệt luôn ở trên đầu), vì vậy nó bị chặn và không hiển thị ' – Gerben

+0

@Gerben Cảm ơn bạn đã bình luận. Có vẻ như tóm tắt của bạn mô tả một cách tôn trọng trạng thái hiện tại và các giải pháp khả thi, vui lòng thêm phản hồi của bạn làm câu trả lời; Có lẽ tôi sẽ đặt nó là chấp nhận nếu không có bất kỳ giải pháp ma thuật nào. – duri

+0

Việc đặt thuộc tính 'novalidate' trên biểu mẫu có chứa có ảnh hưởng đến hành vi của bong bóng không ?. Tài liệu này dường như gợi ý rằng điều này vô hiệu hóa các chức năng xác thực tích hợp - mặc dù không rõ liệu đây có phải là khi biểu mẫu được gửi hoặc nếu kiểm tra nội tuyến trên các phần tử ... – Fraser

Trả lời

12

Bạn có thể xác định liệu IE có hiển thị cảnh báo caps-lock riêng của mình hay không bằng cách kiểm tra giá trị của thuộc tính msCapsLockWarningOff trên chính số document. Ngoài ra, bạn có thể chuyển đổi này và tắt:

document.msCapsLockWarningOff = true; 

Fiddle: http://jsfiddle.net/jonathansampson/mqcHA/1/
MSDN: msCapsLockWarningOff property

+1

Tuyệt vời, tôi hy vọng Microsoft sẽ có thêm tài sản như vậy. – duri

-1

Bạn có thể nắm bắt sự kiện bàn phím và phát hiện khóa, nhưng bạn không thể xác định trạng thái khóa caps-lock.

+0

Cảm ơn bạn đã quan tâm đến việc trả lời câu hỏi. Tuy nhiên, có vẻ như bạn đã hiểu lầm câu hỏi; xin vui lòng đọc kỹ. Tôi không gặp vấn đề gì với việc phát hiện Caps Lock, tôi đang tìm cách xác định xem có hiển thị cảnh báo cho người dùng hay trình duyệt thực hiện nó không. – duri

1

tôi đề nghị bạn kiểm hướng dẫn này http://www.upsdell.com/BrowserNews/res_sniff.htm

bạn có thể thử một cái gì đó như thế này

<!--[if gte IE 10]> 
    <script type="text/javascript"> 
     var isTrulyIE = true; 
    </script> 
<![endif]--> 

hoặc javascript phiên bản trên việc phát hiện và prototyping phiên bản trình duyệt

this.isIE10 = (this.version == "10.0") || (this.ua.indexOf("trident/6") != -1); 

bạn cũng có thể thử kịch bản được xác định bởi microsoft để quyết định phiên bản trình duyệt IE http://support.microsoft.com/kb/167820

+5

Tôi được thông báo rằng IE10 không hỗ trợ nhận xét có điều kiện nữa? –

+0

Sau đó, tôi đề nghị bạn hãy thử javascript cho trident/6 như thế nào họ đang làm ở đây http://support.microsoft.com/kb/167820 – Njax3SmmM2x2a0Zf7Hpd

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