2017-04-26 113 views
0

我做了一個Chrome擴展,允許我改變某些字符,如果某些按鍵組合對任何輸入或文本區域字段。只要我輸入的是input或textarea字段,它就可以正常工作。但是,當我訪問像FaceBook這樣的網站並嘗試他們的帖子或評論字段時,它不起作用,因爲這些字段在源代碼中沒有textarea標記。檢測未標記的textarea或輸入字段

這是我目前使用的。

document.activeElement.onkeydown = function(){ getCharKeyDown(event) }; 
document.activeElement.onkeyup = function(){ getCharKeyUp(event) }; 

什麼會我需要做的,以檢測用戶是否在似乎沒有實際上是一個文本區一個文本輸入(以純JavaScript,請)?

謝謝。

+0

如果您檢查評論字段的來源,它是什麼?它必須是某種類型的元素... – ddubs

+1

以及你的代碼應該是'function(event){getCharKeyDown(event)};'而你沒有輸入一個textarea,而是一個contenteditable元素 – epascarello

+0

FB post字段似乎主要是div,跨度和表格(!?) 這是一個文本轉儲https://pastebin.com/udCsP64q – user126440

回答

0

感謝epascarello,我想我已經對它進行了排序。在閱讀了關於HTMLElement.contentEditable屬性的一些信息後,我遇到了Document.execCommand(),它似乎負責處理所有可編輯的元素。

這是我做

function insertAtCursor(myField, myValue) { 
    document.execCommand('insertHTML', false, myValue); 
} 

主要的變化,現在我能夠運行我的功能哪裏。