Ann*_*080 5 javascript facebook keyevent google-chrome-extension
我正在尝试制作一个chrome扩展,修改Facebook聊天窗口的活动文本区域中的文本.但是我希望只有当用户按下回车键才能进行更改,这样当文本仍然在textarea中时文本不会改变.我希望它使用javascript发生,并让它感觉它发生在后台,虽然我希望它keydown在enter键的事件上被触发.
现在Facebook聊天窗口的textarea的相关JavaScript是:
<textarea class="blah"
onkeydown="window.Bootloader && Bootloader.loadComponents(["control-textarea"],
function() { TextAreaControl.getInstance(this) }.bind(this)); ">
</textarea>
Run Code Online (Sandbox Code Playgroud)
在我的扩展程序的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...
}
};
Run Code Online (Sandbox Code Playgroud)
我认为一旦用户按下该enter键,就会清除textarea并发出某种发布请求.所以我失去了我想用JavaScript修改的文本的范围.我通过按shift+ 检查了输入键绑定是否适用于我的扩展enter,并且它修改了文本没有问题.所以我的脚本运行正常.
但是我希望在清除textarea并发出post请求之前执行我的脚本.我只是不希望用户看到文本被修改.
我可以添加/修改Facebook使用的textarea的键绑定,如上面的google chrome扩展脚本中所示?非常感谢任何帮助.
这里有一百万个重复的问题,但无论如何这里又出现了:
您可以使用 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
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用 jQuery,则可以使用
$(document).keypress(function(event){
if (event.which === 13) {
// Your code here
}
});
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)