2012-01-25 6 views
1

저는 브라우저 플러그인을 사용하고 있습니다. 사용자가 물건을 클릭 할 때 특정 방식으로 동작하게하고 싶습니다. Link의 행동을 포함하되 이에 국한되지 않습니다!Href 및 클릭 리스너 모두 사용하기

문제는 플러그인이 사이트의 다양한 작동한다는 것이다, 해당 사이트의 일부는 다음과 같은 무시 무시한 의사 프로토콜을 사용
<a href="javascript: showSomeElement();">Show Element</a>

현재 나의 행동이 추가됩니다 앵커 태그를 통해
anchor.addEventListener('click', superAwesomeFunction);

불행히도 이것은 클릭 청취가 한 번만 발생하는 문제가 있습니다. 내가 preventDefault() 물론 클릭 리스너가 붙어 있지만 호스트 사이트가 손상되었습니다! 그렇지 않으면 링크를 클릭하면 첫 번째 클릭에서만 클릭 리스너가 실행됩니다. 링크를 두 번 클릭하면 내 superAwesomeFunction()이 다시 실행되지 않는 이유가 궁금합니다. href="javascript:things()"은 내가 아는 것보다 더 많이하고 있습니까? 당신이 사용자에게 약간의 시간 후, URL에가는 대기해야하는 경우

+0

방화범이 끌려 가며 테스트했을 때, 대체되지 않습니다. – InfernalRapture

+0

귀하의 설명은 다소 혼란 스럽습니다. superAwesomeFunction은 실행되지 않지만 showSomeElement는 무엇입니까? – SoWeLie

답변

1

자바 스크립트가있는 링크에 이벤트 리스너를 추가 할 수 있습니다 함수 호출은 href 속성에 설정됩니다.

여기에 작동하는 것으로 표시된 jsFiddle입니다. 링크를 클릭 할 때마다 두 함수가 모두 실행됩니다.

우리가 준 코드에서 볼 수있는 것 이상으로 코드가 계속 진행되고 있어야합니다.

+0

저는 이것이 점점 더 중요해질 것이라고 생각하고 있습니다. 당분간, 나는 이것을 답으로 만들 것입니다. 연극에 더 많은 것이 있으면 내일까지 더 깊숙이 들어갈 수있는 기회가 생길 때마다 후속 조치를 취할 것입니다. – InfernalRapture

+0

역사를 이어 가세요! 문제는 호스트 사이트가 노드를 정확한 복제본 인 새 노드로 대체 할 수있는 이유가 없어도 문제가 해결된다는 것입니다. 신이 그 사이트를 싫어했다 ... – InfernalRapture

0

, 당신은 당신의 superAwesomeFunction의 프로세스 끝에 몇 가지 코드를 추가 할 수 있습니다 :

document.location.href = $(this).attr("href");