Javascript 如何从stopPropagation的事件中获取函数名

Javascript 如何从stopPropagation的事件中获取函数名,javascript,onclick,mouseevent,stoppropagation,Javascript,Onclick,Mouseevent,Stoppropagation,我试图找出是否有一种方法可以从onclick事件中调用所有函数 场景是这样的: HTML: 我想用它来控制哪些函数停止传播。您可以设置全局变量,并在调用它们时进行设置,例如: aClicked = false; bClicked = false; function a() { aClicked = true; } function b() { bClicked = true; } var c = function() { if (!aClicked && bClicked

我试图找出是否有一种方法可以从onclick事件中调用所有函数

场景是这样的:

HTML:


我想用它来控制哪些函数停止传播。

您可以设置全局变量,并在调用它们时进行设置,例如:

aClicked = false;
bClicked = false;
function a() { aClicked = true; }
function b() { bClicked = true; }
var c = function() {
    if (!aClicked && bClicked) {
        console.log('b and c called, but not a.');
    }
};

恐怕这个密码里有很多咒语。您应该尝试阅读更多关于javascript执行上下文的内容,并在较小的程度上(因为主题更难)阅读javascript执行上下文以及可能的javascript伪协议

如果我理解正确,您希望在事件流中已执行前一个侦听器的情况下跳过某个侦听器,或者,更可能的是,如果先执行其他内容,您希望跳过某些内容

用户代理无法监视侦听器的执行状态,因此您需要自己管理该状态。每个侦听器都必须注册它已被调用,以便下一个侦听器可以参考此状态并调整其逻辑。或者,由于这种方法可能会产生太多的复杂性(因为侦听器之间的紧密耦合),您最好根据自己的需要编写一些简单的规则框架


您已经提出了一个非常具体的技术性问题,但请毫不犹豫地提供更多的上下文(“为什么”),因为正确的解决方案应该是基于设计的解决方案,而不是基于技术的解决方案。

但是,如何阻止()上的应用;?您可以在函数中捕获事件,在a()函数中捕获stopPropagation()。也许一个简单的
返回false
也可以做到这一点从运行开始?
var a = function() { console.log('a called'); };
var b = function() { console.log('b called'); };
var c = function(e) {
    if (e.call['a']) { e.call['a'].stopPropagation(); }
    console.log('b and c called, but not a.');
};
aClicked = false;
bClicked = false;
function a() { aClicked = true; }
function b() { bClicked = true; }
var c = function() {
    if (!aClicked && bClicked) {
        console.log('b and c called, but not a.');
    }
};