js檢測按鍵的跨瀏覽器解決方案

2021-07-11 18:27:54 字數 908 閱讀 6438

測試瀏覽器:ie11以下,firefox46,chrome50.

一、問題場景:

乙個表單,提交按鈕為input type=submit。改為button後,無法實現按下回車提交。

tips:如果只有乙個input,則按下回車就會提交

如果有多個input,則input的type為submit時才能按下回車提交

如果提交按鈕為button,按下回車不會提交。

二、解決

ie和chrome能很好的支援window.event,但是firefox不行,必須把event寫在函式定義引數部分

如果

addevent(document, "keypress", handler);
改為
addevent(document, "keypress", handler(event));
則firefox會報錯:event為定義。

但如果在html中傳入引數,則不會報錯。比如上面的**可以改為

通過元素的οnkeypress=來傳送event引數就可以。

三、注意

1、onkeypress與onkeydown/onkeyup區別

返回值不同:前者返回ascii碼,後者返回按鍵的ascii碼,無論大小寫;

前者不能支援"f1", "caps lock"、"home"等功能鍵,後者可以

另外,onkepress事件下,firefox不能正確識別keycode,需要用event.which替代

瀏覽器跨域解決方案

今天介紹乙個實用的瀏覽器跨域方案。比如 a 嵌入了 b 的頁面,這時 b 的頁面想要呼叫 a 的頁面的方法,因為網域名稱不同,由於瀏覽器同源策略的限制會被 blocked 掉的。以下給出乙個方法 在 a 的寫下 window.addeventlistener message function obj...

跨瀏覽器的本地儲存解決方案

跨瀏覽器的本地儲存多種方式,例如 1 localstorage 只支援ie8 firefox chrome opera等,不支援ie8以下的瀏覽器。2 瀏覽器cookie 支援的資料儲存量相對較少,每個domain最多只能有20條cookie,每個cookie長度不能超過4kb,否則會被截掉,有些瀏...

跨瀏覽器的本地儲存解決方案

跨瀏覽器的本地儲存多種方式,例如 1 localstorage 只支援ie8 firefox chrome opera等,不支援ie8以下的瀏覽器。2 瀏覽器cookie 支援的資料儲存量相對較少,每個domain最多只能有20條cookie,每個cookie長度不能超過4kb,否則會被截掉,有些瀏...