已經使用 chrome 一段時間了, 但始終有部份網頁仍然是會出現異常的情況.
其中一個, 是繳費靈的網頁上, 登入時總是有些英文字不能輸入. 八掛的我, 嘗試找出問題所在, 結果在 source 的 javascript 中, 看到它每當用戶在頁面按任何按鍵時, 會先檢查是不是某些功能按鍵, 如果符合某些條件的話, 就把該輸入取消.
不被允許的, 包括是 F5 (reload), F11 (full screen) 之類, 有趣的是, 這些檢查只是針對某些瀏覽器及作業系統. 最有代表性的, 是這句:
if (navigator.userAgent.indexOf("Macintosh;") != -1) {
/* code to skip the check */
}
所以說, 用 Mac 就不會有任何問題.
然後在同一個function, 看到的是對應不同的按鍵的檢查, 例如是 F11 :
...
else if (evt.keyCode == 122) // F11 = 122
{
cancelKey(evt);
}
...
利用 chrome 的 javascript debugger, 就發現這裡就正正是問題所在.
chrome 把 text field 內輸入的字的 ASCII code 都送到這個 function. 心水清的 programmer 大概都知會發生甚麼事吧? 英文字母細階 z 的 ASCII code 就正正是 122. 所以 login 時如果名字或密碼有 z 字的話, 就沒法輸入了.
還有這裡呢:
...
else if ((evt.shiftKey && evt.keyCode == 117) ||
evt.keyCode == 117 ||
evt.keyCode == 114) // F3 = 114, F6=117
{
cancelKey(evt);
}
...
所以 r (114) 及 u (117) 也不能用了…
那, 究竟應該說是安全呢, 還是不安呢?….
究竟讓人家 reload 或者 full-screen 有甚麼問題呢? 與其選擇性地禁止, 倒不如想想其他方法去解決 reload 可能會導致的問題吧. 要是, 一定要限制的話, 那就順便限制用戶可使用的 browser 吧.



點解你個blog落雪…
因為凍 XD