blog name
外表可能極普通 內涵也許很濃郁
© 2012 kevinlam@bbs2.hk

已經使用 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 吧.

最後更新: 2010-01-15 20:57:51
Popularity: 53% [?] | 觀看人次: 1503
TB: http://crazykevin.com/2009/01/785/trackback
[廣告時間]
廣告
2012-02-09 07:14:49
Powered by Google Adsense
有 2 則回應 »
(回應)
肥冬
2009-01-18 23:32:07

點解你個blog落雪…

(回應)
2009-01-20 15:04:30

因為凍 XD

回應

Connect with Facebook

(必須)

m(__)m

相簿


古文
free counters