2010-05-19 4 views

답변

5

는 기본적으로 무슨 일 함수 ProcessResponse()가 호출되는 onclick하고 href기본 동작 링크의을 사용하지 javascript:void(null)로 설정됩니다.

대부분의 개발자들은 단순히 너무이 글을 쓰는 데 사용됩니다 :

<a onclick="ProcessResponse(); return false;" href="#" >Accept Data</a> 

예 :

우리는 장소에이 링크가 있다고 가정 href로 설정되어

<a onclick="ProcessResponse(); return false;" href="http://www.google.com" >Accept Data</a> 

하는 것으로를 www.google.com하지만 실제로 해당 링크를 클릭하면 ProcessResponse() 기능을 사용하고 www.google.com으로 이동하지 않으므로 ProcessResponse() 뒤에 삽입 된 return falsewww.google.com으로가는 링크의 기본 동작을 비활성화합니다. 게시 한 링크의 경우도 마찬가지입니다.

+4

이것은 기술적으로 올바르지 않습니다. "링크의 기본 동작을 비활성화"하지 않습니다. 링크가 비어있는 것과 같습니다. 'javascript :'또는'javascript : undefined'를 사용해보십시오. –

+0

href의 "http : //"접두어를 잊어서는 안됩니다. –

+2

@Andy E 's head : href가 #로 설정되었습니다. – Sarfraz

4

javascript:void(null) =이 아무것도하지 않고 다음과 같이 무효 (null)와 를 내가 찾은이 링크 버튼에 사용됩니다.

알림 onclick 이벤트 처리기에 자바 스크립트 호출이 있습니다. 뭔가 처리합니다 (응답 처리로 데이터를 받아 들일 것으로 추측합니다).

14

void은 JavaScript 연산자이지만 그 뒤에 나오는 대괄호가 일반적으로 사용되므로 함수로 잘못 인식되는 경우가 있습니다. void의 목적은 값을 반환하지 않고 표현식을 평가하는 것입니다. 따라서 표현식은 모두 void 일 수 있으며, null 일 필요는없고 void(0) 또는 void 0이라는 빈번한 메시지가 자주 표시됩니다.

특성에서 javascript:을 사용하면 다음식이 계산되고 해당 결과가 반환됩니다. 브라우저 주소창에 다음을 입력하여 볼 수 있습니다.

javascript:prompt("test"); 

표시되는 상자에 아무 것도 입력하고 Enter 키를 눌러 확인을 클릭하십시오. 페이지가 사라지고 입력 한 내용이 나타납니다. 이제 우리는 void 0;를 추가 할 경우 발생하는 시계 :

javascript:prompt("test"); void 0; 

프롬프트에서 확인을 클릭 한 후에 아무 반응이 없습니다. 그것은 void 0의 handywork, undefined를 반환하고 그래서 브라우저는 그것에 대해 아무것도하지 않습니다. 이것은 href에도 적용됩니다 (자유롭게 사용해보십시오). 모든 것은 심지어 javascript:void prompt("test");으로 작성 될 수 있습니다.

다른 언급했듯이 void을 href에 사용하는 대신 이벤트 처리기에서 return false;을 사용하는 것이 가장 좋습니다. 실제로 href 속성에 javascript:을 사용하지 않는 것이 좋습니다.

1

코드를 실행하는 데 javascript: 의사 URL을 사용하면 자바 스크립트 지침에 void(0)을 붙이는 것이 일반적인 트릭입니다. 이 작업을 생략하고 스크립트가 이 아닌 값을으로 반환하면 document.write으로 전달 된 것처럼 처리됩니다. 즉 브라우저가 빈 페이지로 이동합니다.

이 트릭에 유효한 응용 프로그램이 있습니다 (즉, 북마크릿은 항상 이와 같이 끝나야합니다). 그러나 예제에서 이미 제공 한 예제에서는 다른 사람들이 이미 설명했기 때문에 잘못된 것입니다.