我想“暂停”一个页面的所有事件,这意味着删除所有事件集……然后可以把它们放回原处。
即使是第一部分=删除一个页面的所有事件,我也不知道该怎么做!你有什么想法吗?
我找不到任何有用的东西!
编辑:
为什么?我想在已经加载的页面中执行操作。用户将与页面交互,我希望控制交互...因此,删除之前设置的所有交互。
发布于 2010-11-23 00:39:24
这是我目前使用的解决方案:它不能完全解决问题!
我在捕获阶段停止了事件:我在文档对象上放置了一个侦听器,以侦听捕获阶段的所有事件并停止传播。
+:
的问题
-:
你有更好的解决方案吗?
附言:如果我找到更好的解决方案,我会继续更新这篇文章
发布于 2010-11-19 03:38:14
您可以使用unbind()删除所有事件
$.unbind();发布于 2010-11-19 03:47:02
您需要将所有事件侦听器存储在一个eventMap中。
EventMap = {
listeners:[],
paused:false,
mapListener:function(eventDispacter, eventType, eventHandler) {
listeners.push({eD:eventDispacter, eT:eventType, eH:eventHandler});
if(!paused)
eventDispacter.addEventListener(eventType, eventHandler);
},
unMapListener:function(eventDispacter, eventType, eventHandler) {
for( var i=0; i<listeners.length; i++) {
var listener = listeners[i];
if(listener.eD == eventDispacter && listener.eT == eventType && listener.eH == eventHandler) {
listeners.splice(listeners.indexOf(listener), 1);
eventDispacter.removeEventListener(eventType, eventHandler);
}
}
},
pauseEvents:function() {
if(!paused) {}
for( var i=0; i<listeners.length; i++) {
var listener = listeners[i];
listener.eD.removeEventHandler(listener.eT, listener.eH);
}
}
},
unPauseEvents:function() {
if(paused) {}
for( var i=0; i<listeners.length; i++) {
var listener = listeners[i];
listener.eD.addEventHandler(listener.eT, listener.eH);
}
}
}
}使用添加事件
<script>
function handleClick( e ) {
alert('Button Clicked');
}
EventMap.mapListener(document.getElementById('myButton'), 'click', handleClick);
</script>使用的暂停事件
EventMap.pauseEvents();https://stackoverflow.com/questions/4218637
复制相似问题