2014-05-22 2 views
0

onclick 이벤트에서 호출 된 모든 함수를 가져올 수있는 방법이 있는지 알아 내려고하고 있습니다.stopPropagation 이벤트의 함수 이름을 얻는 방법

HTML :

<div onclick="a(); b();"> 
    <a href="javascript();" onclick="c(event);>link</a> 
</div> 

JS :

시나리오는 다음과 같이이다

내가 전파 정지되는 기능을 제어하려면이 옵션을 사용하려면
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.'); 
}; 

.

답변

-1

당신은 예를 들어, 전역 변수를 설정하고 호출 될 때를 설정할 수 있습니다 :

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.'); 
    } 
}; 
+0

하지만 어떻게 그 stopPropagation을 a();? –

+0

함수에서 이벤트를 catch하고 a() 함수에서 stopPropagation()을 catch 할 수 있습니다. 아마도 간단한 "return false"가 트릭을 할 수도 있습니다. –

+0

''false를 반환하지 않습니다''(); 나머지 부분을 실행하지 못하시겠습니까? –

0

을이 코드의 주술을 많이가 두려워. event flow에 대해 더 자세히 읽고 시도해야하며 (주제가 더 까다 롭기 때문에) 자바 스크립트 실행 컨텍스트 및 가능한 자바 스크립트 의사 프로토콜에 대해 더 자세히 읽어야합니다.

올바르게 이해하면 이벤트 흐름에서 이전 수신기가 이미 실행 된 경우 특정 수신기를 건너 뛰기를 원하거나 다른 콘텐츠가 실행되는 경우 일부 콘텐츠를 건너 뛰기를 원할 수도 있습니다 먼저.

사용자 에이전트는 청취자의 실행 상태를 모니터링 할 방법이 없으므로 스스로 상태를 관리해야합니다. 각 리스너는 호출 된 것을 등록해야합니다. 그러면 다음 리스너가이 상태를 참조하고 논리를 조정할 수 있습니다. 또는 이러한 접근 방식이 너무 복잡하기 때문에 (청취자 간의 긴밀한 결합으로 인해) 필요에 따라 일부 라이트 규칙 프레임 워크를 작성하는 것이 좋습니다.

매우 구체적인 기술 질문을했지만 기술 기반 질문보다는 적절한 솔루션이 디자인 기반의 질문이되어야하므로 더 많은 정보를 제공하는 것을 주저하지 않습니다 ("이유"). .