一、一頓整理 1.因為Canvas無法直接記錄文字選中,直接輸入,所以需要用到隱藏的input或者textarea文字框。 2.因為鍵盤的keydown,keyup,keypress瀏覽器相容問題很嚴重,所以改用compositionstart,compositionend,input監聽隱藏的input文字輸入框的按鍵事件,然後拿到此時文字框的值傳送出去;(並且避免了中文輸入法下的回車,空格,shift等無法監聽keycode值,一直是229) 3.下面測試
二、一般瀏覽器(解決中文狀態下,回車內容留在文字框內,不傳送出去,原因:沒有監聽到) 4.先描述在除了百度和搜狗之外的這些瀏覽器的事件,中文輸入法狀態下,觸發三個動作,一開始按鍵,就觸發了compositionstart,然後按空格,將中文輸入到隱藏的文字框內,或者按shift,Enter鍵,將中文輸入法上輸的中文轉成拼音字母,輸入上去,此時這三個動作都會觸發compositionend事件,而不觸發input事件,input事件在中文狀態下,每一次按字母,數字鍵觸發,而按回車,空格,shift不觸發。 5.每一次觸發compositionstart事件,都會讓變數isPinyin=true,表示進入中文輸入狀態; 6.所以,此時可以compositionend的動作監聽,拿到文字框的內容,傳送出去,並清空自身內容,然後才將變數isPinyin=false,表示之後進入非中文輸入狀態。(因為只有中文狀態下開始輸入文字,才會觸發compositionstart) 7.進入非中文輸入狀態下,不觸發compositionstart和compositionend事件,觸發input,做判斷,並且是非中文,isPinyin==false,然後直接每一次輸入,都傳送文字內容,然後自空;所以Input事件下的操作,可以設定為在isPinyin==false,下傳送,自空文字,中文狀態下,進入是compositionend,所以在compositionend事件內也不要做isPinyin的判斷? 三、百度和搜狗瀏覽器加微軟輸入法,QQ拼音輸入法(這兩個瀏覽器的重複問題) 8.在谷歌和搜狗瀏覽器下,在微軟預設輸入法和QQ拼音輸入法的中文狀態下,回車,空格,shift按鍵,都有觸發input和compositionend兩個事件,先是isPinyin==true觸發compositionend,再是改變成false,觸發input事件中,isPinyin==false條件內的傳送,清空操作,導致重複傳送,糾正:在compositionend事件下,新增對百度和搜狗瀏覽器的代理檢測條件,當非百度,搜狗瀏覽器的條件下,才執行傳送文字內容動作。(為什麼不在input事件內加判斷,而是選擇讓百度、搜狗瀏覽器使用微軟,QQ輸入法下,compositionend中的事件不觸發,因為在這兩個輸入法搭配下,百度,搜狗瀏覽器一般輸入事件(搜狗和百度輸入法下,回車/空格/shift觸發的是input,而沒有compositionend,與其他瀏覽器相反)而這兩個是輸入法下,先觸發compositionend,再觸發input,所以是禁掉composition下的事件觸發) 四、失焦 9.失焦時,設定定時器,自動聚焦在隱藏的文字框; 五、點選確定,或者回車後,依然有文字框 10.判斷文字輸入結束,輸入鍵盤銷燬時,將文字框自空,並且將文字框隱藏起來(不用失焦,可能邏輯會混亂) 11.總的事件,單獨的事件處理全部放在一個js檔案內,不然放在總的js檔案內,會導致耦合性太嚴重; 六、殘留文字的bug,只要成功傳送,不殘留就行了。Canvas元素實現文字的監聽輸入和主流瀏覽器的相容bug
相關文章
- 監聽瀏覽器的後退事件瀏覽器事件
- 實現高度“聽話”的多行文字輸入框
- 前端檔案下載相容方案(相容主流瀏覽器,包括IE與Safari)前端瀏覽器
- 主流瀏覽器相容性問題與解決方案瀏覽器
- IE瀏覽器相容瀏覽器
- 9:瀏覽器相容瀏覽器
- 主流瀏覽器及其核心瀏覽器
- 監聽瀏覽器更新URL引數,實現偽SPA單頁面應用瀏覽器
- 關於瀏覽器裡事件的捕獲和冒泡及監聽器執行的順序瀏覽器事件
- js上傳圖片預覽,相容IE6以上各大主流瀏覽器JS瀏覽器
- [BUG反饋]IE瀏覽器,百度瀏覽器,搜狗瀏覽器批量操作功能都不相容!!!!傲遊、火狐、谷歌瀏覽器可以瀏覽器谷歌
- 導航的瀏覽器相容問題瀏覽器
- 實時監聽input輸入框value的變化:
- Brow.sh:現代的基於文字的瀏覽器瀏覽器
- 瀏覽器相容性瀏覽器
- 關於瀏覽器相容瀏覽器
- forEach()相容所有瀏覽器瀏覽器
- 用javascrip在瀏覽器上實現語音輸入和語義理解功能(speex壓Java瀏覽器
- 瀏覽器從輸入URL到渲染瀏覽器
- 瀏覽器輸入URL回車後...瀏覽器
- Ios、Android微信瀏覽器後退跳轉實現,及遇到的bugiOSAndroid瀏覽器
- 靈魂拷問!瀏覽器輸入「xxxxhub」的背後.....瀏覽器
- 監聽瀏覽器返回,pushState,popstate 事件,window.history物件瀏覽器事件物件
- 最強悍LoadRunner和瀏覽器相容完美攻略瀏覽器
- 瀏覽器極速模式和相容模式差異瀏覽器模式
- 主流瀏覽器核心及JS引擎瀏覽器JS
- html2canvas實現瀏覽器截圖的原理(包含原始碼分析的通用方法)HTMLCanvas瀏覽器原始碼
- 瀏覽器/元素尺寸相關的屬性瀏覽器
- 瀏覽器中輸入 URL 回車後瀏覽器
- 如何優雅地實現瀏覽器相容與CSS規則回退瀏覽器CSS
- DOM 和 Canvas 如何實現文字豎向排列的效果Canvas
- edge瀏覽器相容性設定在哪 新版edge瀏覽器相容模式怎麼弄瀏覽器模式
- 簡述瀏覽器輸入 URL 地址後發生的事情瀏覽器
- 使用 Cloudflare 瀏覽器隔離控制可疑站點的輸入Cloud瀏覽器
- 瀏覽器位址列裡輸入URL後的全過程瀏覽器
- Win10電腦中自帶瀏覽器不能輸入文字如何解決Win10瀏覽器
- 基於文字模式的HTML瀏覽器模式HTML瀏覽器
- 瀏覽器相容以及PostCSS詳解瀏覽器CSS
- css+js美化下拉框(相容IE6、7、8以上主流瀏覽器)CSSJS瀏覽器