2011-08-11 63 views
19

正如你可能知道的那樣,有一個相對簡單的方法,或多或少地可靠,detect whether Caps Lock is on,特別是當用戶開始輸入密碼字段時。但是,IE10自動支持此功能是一個不爲人知的事實,無需任何其他編碼(source,direct link to screenshota simple demo)。因此,現在我面臨一個問題,因爲如果我添加一個類似的Javascript功能,IE10用戶會看到兩個帶有警告的「泡泡」,一個是由我的腳本創建的,另一個是由他們的瀏覽器創建的;這可能看起來很醜,甚至會令人困惑。這就是爲什麼我正在尋找一種解決方案來檢測瀏覽器是否具有內置的功能;我希望它能觸發某些事件或改變一些屬性,但我還沒有發現任何這樣的事情。有沒有辦法檢測IE10的「Caps Lock is on」功能?

我可能只是在用戶代理字符串中尋找Trident/6.0,但我寧願避免瀏覽器檢測;如果其他瀏覽器添加了類似的功能,它可能還需要一些代碼維護。

如果沒有可靠的解決方案,我會要求IE團隊添加「caps-lock-on-on feature」檢測功能,也許還需要HTML規範的編輯來要求供應商執行此操作。

+2

沒有爲揭露這種默認行爲還沒有標準。所以沒有辦法進行功能測試,所以用戶代理匹配是唯一的方法。或者你可以嘗試將你的泡泡放在默認泡泡的下方(假設瀏覽器泡泡始終位於頂部),所以它被阻止並且不可見 – Gerben

+0

@Gerben感謝您的評論。看起來你的總結可以很好地描述當前的狀態和可能的解決方案,可以隨意添加你的答案作爲答案;如果沒有出現任何魔法解決方案,我可能會將其設置爲已接受。 – duri

+0

設置包含窗體上的'novalidate'屬性是否對氣球行爲有任何影響?該文檔似乎表明,這將禁用內置的驗證功能 - 雖然目前還不清楚這是表單提交時還是禁止內聯檢查元素... – Fraser

回答

-1

您可以捕獲鍵盤事件並檢測密鑰,但無法確定大寫鎖定狀態。

+0

感謝您對回答問題的興趣。但是,你似乎誤解了這個問題。請仔細閱讀。我在檢測Caps Lock時沒有任何問題,我正在尋找一種方法來確定是向用戶顯示警告還是由瀏覽器自行完成。 – duri

1

我建議你結帳本教程 http://www.upsdell.com/BrowserNews/res_sniff.htm

你可以嘗試這樣的事情

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

或檢測和原型設計的瀏覽器版本JavaScript版本

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

,你也可以嘗試由微軟定義的腳本決定IE瀏覽器版本 http://support.microsoft.com/kb/167820

+5

我被告知IE10不再支持條件註釋? –

+0

然後,我建議你嘗試JavaScript的三叉戟/ 6像他們是如何在這裏http://support.microsoft.com/kb/167820 – Njax3SmmM2x2a0Zf7Hpd

相關問題