2011-01-26 4 views
1

브라우저 확장 프로그램에서 작업 중입니다. 나는 구글 검색 페이지에서 링크 옆에 몇 가지 아이콘을 넣을 것이다. 이 아이콘은 일부 동작을 트리거하고 사용자가 클릭 한 후에 풍선 이벤트를 중지해야합니다. 이력서에서, 부모 div 태그는이 아이콘에 대한 클릭에 대해 알 필요가 없습니다.버블 링 이벤트가 Google 페이지의 Internet Explorer에서 작동하지 않는 것 같습니다.

다음 코드는 모든 브라우저에서 정지 버블 링 이벤트를 허용 : 파이어 폭스에서

if (event.cancelBubble) { 
     event.cancelBubble = true; 
} 
if (event.returnValue) { 
     event.returnValue = false; 
} 
if (event.stopPropagation) { 
     event.stopPropagation(); 
} 
if (event.preventDefault) { 
     event.preventDefault(); 
} 

잘 작동하지만,이 상황에서 IE에없는 작업 (버전 8 이상). 그것에 대해 어떤 생각?

답변

2
if (event.cancelBubble) { 
     event.cancelBubble = true; 
} 

이것은 의미가 없습니다. 이미 true (부울 컨텍스트에서)로 평가되는 경우에만 true으로 설정됩니다. if 절을 제거하십시오 (즉, 항상 무조건 설정하십시오). 존재하지 않는 값을 일반적으로 설정하지 않으면 아무런 해를 끼치 지 않습니다. (못생긴 구현이있는 호스트 객체에 설정하지 않는 한)

+0

동의합니다. 함수의 존재 여부를 테스트하는 것처럼 보이지만 이것은 속성입니다. –

+0

Do not get it. 무조건적으로 설정하십시오. 알려진 모든 플랫폼에서 event.cancelBubble을 설정하는 것이 안전합니다. IE가 전파를 중지하는 데 사용합니다. –

+0

그게 무슨 뜻이야 – ThiefMaster

0

또는 false로 설정하려고하면 true를 사용하면 이벤트가 이벤트가 발생한 후 발생하는 코드, 이벤트에 부울이있는 경우, 때때로 u가 해당 이벤트를 제어 할 자유가 있음을 의미 할 수 있습니다. 참인 경우 이벤트가 다른 함수를 실행할 수 있습니다. false로 말하면 이벤트는 다른 함수를 실행하지 않지만 그 함수에 의존합니다.

코더는 그의 기능/코드를 만들었습니다.

"버블 링 된 이벤트를 처리하거나 올리려면 컨트롤에서 OnBubbleEvent 메서드를 재정의해야합니다."그리고 that 경우 u는 반대의 경우 무시합니다.

만약이 사실을 아직 읽지 않았다면, http://msdn.microsoft.com/en-us/library/aa719644(v=vs.71).aspx을 읽고 그 반대의 의견을 말했습니다.

;)

희망이 조금

Laterss을 U를하는 데 도움이!

+0

감사합니다. Johnn하지만 자바 스크립트 문맥에서 이야기하고 있습니다. –