枚举并删除第三方键盘事件绑定
Enumerate and remove third party keyboard event bindings
使用Chrome、Tampermonkey和jQuery-我想在第三方网站上发现并删除关键事件绑定。
我已经尝试绑定(通过他们)并防止传播使用:
,_cancel:function(e){
//console.log('keyProcessed');
e.cancelBubble = true; // IE4+
try {
e.keyCode = 0;
} catch (e) {
} // IE5
if (window.event) {e.returnValue = false; } // IE6
if (e.preventDefault) {e.preventDefault(); } // moz/opera/konqueror
if (e.stopPropagation) {e.stopPropagation(); } // all
return false;
}
但钥匙仍然亮着。
我尝试过用jQuery:枚举元素
$('*').each(function(){
if(this.onkeydown){
console.log(this.tagName,this.onkeydown);
}
});
其对于keydown
keyup
或keypress
没有给出结果
我也试过
$('*').unbind();
如何枚举和终止绑定
编辑、更新
在点击button
之前,input
元素的默认操作是输入文本;单击button
后,调用evt.preventDefault()
,阻止在元素处输入文本。
尝试
var events = ["keydown", "keyup", "keypress"];
$.each($("*"), function (index, elem) {
if ($._data(elem, "events") != undefined) {
// check `elem` for `keydown`, `keyup`, `keypress` `events`
if (new RegExp(events.join("|")).test(
Object.keys($._data(elem, "events")))) {
$.each(events, function (key, val) {
// do stuff at `value` having `events`
// call `evt.preventDefault` at `elem`
// having `keydown`, `keyup`, `keypress` `events` `events`
$(elem).on(val, function(evt) {
evt.preventDefault()
})
})
}
};
});
$(function () {
$("input:eq(0)").on("keyup", function (e) {
console.log(e);
});
$("input:eq(1)").on("keydown", function (e) {
console.log(e);
});
$("input:eq(2)").on("keypress", function (e) {
console.log(e);
});
$("button").on("click", function() {
var events = ["keydown", "keyup", "keypress"];
$.each($("*"), function (index, elem) {
if ($._data(elem, "events") != undefined) {
if (new RegExp(events.join("|")).test(
Object.keys($._data(elem, "events")))) {
$.each(events, function (key, val) {
$(elem).on(val, function(evt) {
evt.preventDefault()
})
})
}
};
});
})
})
input:nth-of-type(1) {
width : 50px;
height : 50px;
background : blue;
}
input:nth-of-type(2) {
display : block;
width : 50px;
height : 50px;
background : yellow;
}
input:nth-of-type(3) {
display : block;
width : 50px;
height : 50px;
background : orange;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<button>click to remove keydown, keyup, keypress events below</button><br />
<input type="text" />
<input type="text" />
<input type="text" />
相关文章:
- 在D3.js中,有没有任何方法可以将x和y方向上的滚动事件绑定到平移svg
- 如何在tinymce编辑器中将点击事件绑定到html标签
- 如何将事件绑定到从AJAX请求注入的HTML
- 将click事件绑定到AngularJS指令中的子元素
- Jquery将事件绑定到页面上的多个实例
- 事件绑定到动态创建的元素
- 使用jQuery进行事件绑定
- 如何将单击事件绑定到其他类
- 更改事件绑定's函数在页面加载时调用
- Jquery事件绑定获胜'当作为方法调用时不起作用,但当直接在控制台中调用时会起作用
- 动态创建的DOM元素上的jQuery事件绑定
- 我是否可以使用 Angular 将鼠标向上事件绑定到文档正文
- 将事件绑定到除 data-rel= BACK 之外的所有锚标记
- 将函数事件绑定到更改函数的复选框/标签
- 使用 Angular 和 UI-bootstrap 对模态事件绑定无法工作的指令
- 聚合物 - 将事件绑定到动态创建的元素
- 将事件绑定到其他UI组件's函数,在Kendo MVVM中
- jQuery Mobile——事件绑定
- JQuery无法将模糊事件绑定到所有<输入>页面中的元素
- 将点击事件绑定到新元素&使得ID'是独一无二的