2017-04-26 117 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); 
} 

主要的变化,现在我能够运行我的功能哪里。