programing

태그의 onclick 속성에서 비롯된 사용자 지정 기능에서 기본값을 호출하지 못하도록 하는 액세스 이벤트

muds 2023. 10. 23. 22:09
반응형

태그의 onclick 속성에서 비롯된 사용자 지정 기능에서 기본값을 호출하지 못하도록 하는 액세스 이벤트

다음과 같은 링크가 있습니다.

<a href="#" onclick="myfunc({a:1, b:'hi'})" />click</a>
<a href="#" onclick="myfunc({a:3, b:'jo'})" />click</a>

그리고 저는 하고 싶습니다.preventDefault()안에서.myfunc(), a때문에#링크를 클릭할 때 주소 표시줄에 추가됩니다(하지 않음).return false;아니면href='javascript:void(0);')

가능한가요?안에서 이벤트를 받을 수 있습니까?myfunc()

당신이 지나갈 수 있을거라 믿습니다.event인라인 기능으로, 다음이 될 것입니다.eventW3C 호환 브라우저에서 상승된 이벤트에 대한 개체(즉, IE의 이전 버전은 보기 위해 이벤트 핸들러 함수 내부의 탐지가 여전히 필요합니다)window.event).

간단한 예입니다.

function sayHi(e) {
   e.preventDefault();
   alert("hi");
}
<a href="http://google.co.uk" onclick="sayHi(event);">Click to say Hi</a>

  1. 그대로 실행하면 알림 후 링크가 Google로 리디렉션되지 않습니다.
  2. 그럼, 바꿔주세요.event에 전해진onclick다른 일을 처리하는 사람e, run(실행)을 클릭한 다음 알림 후에 리디렉션이 수행됩니다(결과 창이 흰색으로 바뀌고 리디렉션이 표시됨).

가장 간단한 해결책은 다음과 같습니다.

<a href="#" onclick="event.preventDefault(); myfunc({a:1, b:'hi'});" />click</a>

JS를 사용하지 않는 브라우저에 대한 폴백(fallback)이 있는 문서에 대해 캐시 버스팅을 수행하는 좋은 방법입니다(JS를 사용하지 않는 경우 캐시 버스팅이 없음).

<a onclick="
if(event.preventDefault) event.preventDefault(); else event.returnValue = false;
window.location = 'http://www.domain.com/docs/thingy.pdf?cachebuster=' + 
Math.round(new Date().getTime() / 1000);" 
href="http://www.domain.com/docs/thingy.pdf">

JavaScript가 활성화되어 있으면 캐시 버스팅 쿼리 문자열로 PDF를 열고, 그렇지 않으면 PDF만 엽니다.

시도해 보기:

<script>
    $("a").click(function(event) {
        event.preventDefault(); 
    });
</script>

그냥 a 태그에서 href 속성만 제거하면 안되나요?

<script type="text/javascript">
$('a').click(function(){
   return false;
});
<script>

링크에 고유 클래스를 추가하고 이 클래스를 가진 링크에 대한 기본값을 방지하는 자바스크립트를 추가합니다.

<a href="#" class="prevent-default" 
   onclick="$('.comment .hidden').toggle();">Show comments</a>

<script>
  $(document).ready(function(){

    $("a.prevent-default").click(function(event) {
         event.preventDefault(); 
          });
  });
</script>

클릭을 사용할 때 기본값이 아닌 다른 작업을 하고 싶다고 생각합니다.onClick의 모든 링크에 대해:

$("a[onClick]").on("click", function(e) {
  return e.preventDefault();
});

간단합니다!

onclick="blabla(); return false"

이벤트는 다음과 같이 on click에서 액세스할 수 있습니다.

<button onclick="yourFunc(event);">go</button>

그리고 당신의 javascript 기능에서, 제 조언은 첫번째 줄 문장을 다음과 같이 추가하는 것입니다.

function yourFunc(e) {
    e = e ? e : event;
}

그런 다음 everywhere를 이벤트 변수로 사용합니다.

JS 라이브러리나 jQuery 없이.가능한 경우 좋은 팝업 창을 엽니다.정상적인 링크 열기에 안전하게 실패합니다.

<a href="https://acme.com/" onclick="onclick="openNewWindow(event, this.href);">...</a>

그리고 도우미 기능:

function openNewWindow(event, location) {
  if (event.preventDefault && event.stopImmediatePropagation) { 
    event.preventDefault(); 
    event.stopImmediatePropagation(); 
  } else {
    event.returnValue = false; 
  }
  window.open(location, 'targetWindow', 'toolbar=no,location=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=800,height=450');
}

e.preventDefault(); from https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault

또는 사용자의 방법에서 거짓을 반환해야 합니다.

언급URL : https://stackoverflow.com/questions/8614438/access-event-to-call-preventdefault-from-custom-function-originating-from-onclic

반응형