覆盖现有的onkeydown函数 [英] override existing onkeydown function

查看:345
本文介绍了覆盖现有的onkeydown函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的扩展程序会处理在任何加载的网站上输入的每个输入。



我所做的是我认为每个onkeydown都有操作, 。

我的后台js文件包含以下内容:

 文档。 onkeydown = returnKey; 

函数returnKey(evt){
var evt =(evt)? evt:((event)?event:null);
var node =(evt.target)? evt.target:((evt.srcElement)?evt.srcElement:null);
if(node.value =='fi'){evt.srcElement.value =??; }
}

我的问题是当我的网站已经在innerHTML中包含onkeydown函数网页。



举例:

取自facebook主页:

 < textarea class =uiTextareaAutogrow inputonkeydown =Bootloader.loadComponents([& quot; control-textarea& quot;],function(){TextAreaControl.getInstance )} .bind(this)); 

切换 node.value =='fi' in ??因为它们的 onkeydown =Bootloader ...在我的文档之前运行.onkeydown



如何让我的函数在执行onkeydown之前运行?



来代替 document.onkeydown = returnKey; pre> document.addEventListener('keydown',returnKey,true);

该行最重要的部分是第三个参数。当此参数的值 true 时,事件侦听器在捕获阶段被触发,这是使用 event.preventDefault(); code>或 event.stopPropagation();


My extensions go through every input entered on an on any website that is loaded.

What I do is I consider every onkeydown and manipulate it if it has some value.

my background js file contains the following:

document.onkeydown = returnKey; 

function returnKey(evt) {   
    var evt  = (evt) ? evt : ((event) ? event : null);
    var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);  
    if ( node.value == 'fi' ) { evt.srcElement.value = "??"; }  
}

My problem is when I have websites that already contains onkeydown function in their innerHTML webpage.

for instance:

taken from facebook's homepage:

<textarea class="uiTextareaAutogrow input" onkeydown="Bootloader.loadComponents([&quot;control-textarea&quot;], function() { TextAreaControl.getInstance(this) }.bind(this));

the switching of node.value == 'fi' in ?? is not executing since their onkeydown="Bootloader...runs before my document.onkeydown.

How do I cause my function to run before their onkeydown is executed?

解决方案

Instead of document.onkeydown = returnKey;, use

document.addEventListener('keydown', returnKey, true);

The most important part of this line is the third argument. When the value of this parameter is true, the event listener is triggered at capturing phase, which cannot be prevented using event.preventDefault(); or event.stopPropagation();.

这篇关于覆盖现有的onkeydown函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆