5

我正在尝试制作一个 chrome 扩展来修改 Facebook 聊天窗口的活动文本区域中的文本。但我希望仅在用户按下回车键时进行更改,以便文本在文本区域中时不会更改。我希望它使用 javascript 发生并让它感觉就像它在后台发生,尽管我希望它在按键keydown事件时被触发。enter

现在 Facebook 中聊天窗口 textarea 的相关 JavaScript 是:

<textarea class="blah" 
onkeydown="window.Bootloader && Bootloader.loadComponents(["control-textarea"], 
function() { TextAreaControl.getInstance(this) }.bind(this)); ">
</textarea>

在我的扩展程序的 JavaScript 文件中。我使用这样的东西绑定keydown事件:

//elem is bound to the focussed textarea object
elem.onkeydown = function(evt) {
              if(evt.keyCode == 13){
                 //Some javascript code I want to execute here...
               }
        };  

我认为一旦用户按下enter键,文本区域就会被清除,并且会发出某种发布请求。所以我失去了我想使用 JavaScript 修改的文本的范围。shift我通过按+检查了 enter 键绑定是否适用于我的扩展程序enter,并且它修改了文本没有问题。所以我的脚本工作正常。

但是,我希望在清除 textarea 并发出发布请求之前执行我的脚本。我只是不希望用户看到文本被修改。

我可以在我的 google chrome 扩展脚本中添加/修改 Facebook 使用的 textarea 的键绑定吗?任何帮助都深表感谢。

4

1 回答 1

2

这里有一百万个重复的问题,但无论如何这里又出现了:

您可以使用 target.addEventListener(type, listener[, useCapture]); 在你的情况下,这将是

document.addEventListner(keypress, function(event) { //You can use keydown too
  if (event.which === 13) { // Value for Enter key if keydown or keyup used, use event.keyCode
    //some code that you want to add
  }
}  

如果您使用的是 jQuery,则可以使用

$(document).keypress(function(event){
 if (event.which === 13) { 
   // Your code here
 }
});

PS - 如果添加跨浏览器支持,你应该使用这样的东西: -

if (target.addEventListener) {
  target.addEventListener('keypress',myFunction,false);
} 
else if(target.attachEvent) {
  target.attachEvent('onkeypress', myFunction, false);
} else {
  target.onkeypress = myFunction;
}
// Here myFunction is the callback where you would check for the character code and your custom code
于 2016-01-25T21:04:48.847 回答