阻止所有JavaScript事件触发
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了阻止所有JavaScript事件触发,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2237字,纯文字阅读大概需要4分钟。
内容图文
![阻止所有JavaScript事件触发](/upload/InfoBanner/zyjiaocheng/658/3508dfa174744561b7c8d4a22909bf7f.jpg)
我正在研究类似javascript元素选择器的萤火虫,但是无法弄清楚如何阻止单击时触发所有JavaScript事件. firebug lite插件(https://getfirebug.com/firebuglite)完全可以满足我的要求,但无法弄清楚他们在做什么.
任何帮助,将不胜感激.
Senario:
>用户选择元素检查器
>用户点击元素
> onClick,mousedown,mouseup不应触发
我没有运气就尝试了以下方法:
function stopEvents(el){
for(var key in window) {
if (key.indexOf("on") == 0)
el.addEventListener(key.substr(2), stop, false);
}
}
function StopEvent(pE)
{
stopEvents(pE);
if (!pE)
if (window.event)
pE = window.event;
else
return;
if (pE.cancelBubble != null)
pE.cancelBubble = true;
if (pE.stopPropagation)
pE.stopPropagation();
if (pE.preventDefault)
pE.preventDefault();
if (window.event)
pE.returnValue = false;
if (pE.cancel != null)
pE.cancel = true;
}
编辑:
$('.somediv').on("click", function(e){
//Stop bubbling and propagation
StopEvent(e);
//EDIT: Still not working with this
e.stopImmediatePropagation();
//RUN only my code here
console.log("My code is running still");
return false;
});
如果存在另一个库(例如YUI),则将事件绑定到同一DOM元素.它会在我的事件发生后触发.我似乎无法劫持该事件以阻止这种情况的发生.
编辑:
我无法使用残疾人,因为我需要能够触发我的活动.如果执行以下操作,将无法触发以上事件.我也不能附加父事件,因为DOM将停止触发该节点在Tree上的所有事件.
$('.somediv').on("mouseover", function(e){
$(this).attr("disabled", "disabled");
});
编辑:
我要禁用的事件已经在脚本运行之前创建.这些事件可以是任何JavaScript库,例如YUI,Dojo,jQuery,JavaScript等.
解决方法:
您不能在不拦截实际事件绑定的情况下“禁用”所有这些,因此您必须以如下形式结束:
(function(prototypes) {
prototypes.forEach(function(prototype) {
var eventTracker = {};
var oldAEL = prototype.addEventListener;
prototype.addEventListener = function(a,b,c) {
if (!eventTracker[a]) { eventTracker[a] = true; }
return oldAEL.call(this, a, function(evt) {
console.log(a, eventTracker[a]);
if(eventTracker[a] === true) {
b(evt);
}
},c);
};
prototype.toggleEvent = function(name, state) {
eventTracker[name] = state;
};
});
}([Document.prototype, HTMLElement.prototype, ...]));
例如:http://jsfiddle.net/BYSdP/1/
该按钮具有三个单击侦听器,但是如果单击第二个按钮,则“ click”的事件调节器将设置为false,因此所有事件均不会触发原始提供的代码.请注意,这也使调试很多工作变得困难,因为您将处理程序包装在匿名函数中.
内容总结
以上是互联网集市为您收集整理的阻止所有JavaScript事件触发全部内容,希望文章能够帮你解决阻止所有JavaScript事件触发所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。