Ass*_*ski 4 javascript overriding onkeydown google-chrome-extension
我的扩展程序遍历在加载的任何网站上输入的每个输入.
我所做的是我考虑每个onkeydown并操纵它,如果它有一些价值.
我的后台js文件包含以下内容:
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 = "??"; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是当我的innerHTML网页中已经包含onkeydown函数的网站时.
例如:
取自facebook的主页:
<textarea class="uiTextareaAutogrow input" onkeydown="Bootloader.loadComponents(["control-textarea"], function() { TextAreaControl.getInstance(this) }.bind(this));
Run Code Online (Sandbox Code Playgroud)
node.value == 'fi'in ?? 的切换 没有执行,因为他们onkeydown="Bootloader...在我之前运行document.onkeydown.
如何在执行onkeydown之前使我的函数运行?
而不是document.onkeydown = returnKey;,使用
document.addEventListener('keydown', returnKey, true);
Run Code Online (Sandbox Code Playgroud)
这一行最重要的部分是第三个论点.当此参数的值为true,则在捕获阶段触发事件侦听器,使用event.preventDefault();或无法阻止event.stopPropagation();.