簡體   English   中英

WebView錯誤-替換ContentEditable中的選定文本

[英]WebView bug - replace selected text in ContentEditable

所以,這是東西。 我有一個顯示內容可編輯div的WebView。 現在,當我選擇文本時,一切都很好,並且通過javascript接口,我可以看到document.getSelection()返回其應有的內容。 但是,當我鍵入一些內容而不是替換當前節點中的選定文本時,它似乎替換了第一個節點中對應偏移量的文本。 例如,如果我有

Blah1
Blah2
Blah3
Blah4

然后選擇“ ah4”並輸入“ q”,最后得到

Blq
Blah2
Blah3
Blah4

代替

Blah1
Blah2
Blah3
Blq

我注意到,如果我使用硬件鍵盤而不是軟鍵盤在模擬器上運行它,則可以正常工作。

我試圖攔截該事件以手動執行操作,但是在替換文本時, onKeyListener ,javascript onKeyDownonKeyPress注冊事件。 Javascript onInput寄存器,但僅在替換發生之后。

任何想法如何規避這一點?


更多信息:

事實證明,當選擇文本並按下軟鍵盤上的某個鍵時,該按鍵不會通過活動的dispatchKeyEvent方法傳遞。 我假設這種差異是發生毛刺的根本原因。 有人知道為什么會發生這種情況以及如何發生這種情況,以及為什么會引起故障嗎? 我將去看看是否可以跟蹤代碼執行的路徑。

哈哈! 找到了解決方案! 在android源代碼中進行了太多混亂之后,我最終嘗試了以下方法:子類化WebView,並重寫以下方法:

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {
    return new BaseInputConnection(this, false);
}

做到了! 當然,選擇(藍色條紋)在鍵入后會在視覺上徘徊,但至少會替換您期望的文本,並且條紋不會影響任何內容。 另外,無論如何,它之前都是這樣做的。 我希望也有一種簡單的方法可以擺脫它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM