“javascript : void (0)”의 의미는 무엇입니까? href여러 번 보았지만 정확히 그것이 무엇을

<a href="javascript:void(0)" id="loginlink">login</a>

나는 그런 것들을 href여러 번 보았지만 정확히 그것이 무엇을 의미하는지 모르겠습니다.



답변

void연산자는 주어진 표현하고 수익을 평가합니다 undefined.

void운영자는 종종 획득하기 위해 단지 이용된다 undefined통상적으로 “사용하여 원시 값을 void(0)“(동등하다 ” void 0“). 이 경우 전역 변수 undefined
를 대신 사용할 수 있습니다 (기본값이 아닌 경우).

여기에 voidoperator 가 설명되어 있습니다 .

href링크를 사용 하여이 작업을 수행하려는 이유 는 일반적으로 javascript:URL이 브라우저를 해당 JavaScript 평가 결과의 일반 텍스트 버전으로 리디렉션하기 때문입니다. 그러나 결과가 undefined인 경우 브라우저는 동일한 페이지에 유지됩니다. void(0)로 평가되는 짧고 간단한 스크립트입니다 undefined.


답변

기술 답변 외에도 javascript:void저자가 잘못하고 있음을 의미합니다.

javascript:의사 URL (*) 을 사용해야 할 이유가 없습니다 . 실제로 누구나 ‘북마크 링크’, ‘새 탭에서 링크 열기’등과 같은 작업을 시도하면 혼동이나 오류가 발생할 수 있습니다. 사람들은 이제 새로운 탭 중간 클릭에 익숙해졌습니다. 링크처럼 보입니다. 새 탭에서 읽고 싶지만 실제 링크는 아닙니다. 빈 페이지 나 중간 클릭시 JS 오류와 같은 원하지 않는 결과를 제공합니다.

<a href="#">덜 나쁠 수도있는 일반적인 대안입니다. 그러나 링크를 따르고 페이지 맨 위로 스크롤하지 않도록 이벤트 핸들러 return false에서 기억해야합니다 onclick.

경우에 따라 링크를 가리키는 유용한 장소가있을 수 있습니다. 당신은 당신이 클릭 할 수있는 컨트롤이 이전 숨겨진 열어이있는 경우 예를 들어 <div id="foo">, 그것은 사용에 어떤 의미합니다 <a href="#foo">그것에 대한 링크를. 또는 자바 스크립트가 아닌 방식으로 동일한 작업을 수행하는 경우 (예 : foo를 시작으로 설정하는 ‘thispage.php? show = foo’) 링크 할 수 있습니다.

그렇지 않으면 링크가 일부 스크립트 만 가리키는 경우 실제로는 링크가 아니므로 그렇게 표시해서는 안됩니다. 일반적인 접근 방식은 추가하는 것 onclickA를 <span>, <div>또는 <a>없이 href당신이 그것을 클릭 할 수 명확하게하기 위해 어떤 방법과 스타일을. 이것이 바로 StackOverflow가 작성한 시점입니다. 이제는 href="#"]를 사용합니다 .

이것의 단점은 span / div / bare-a를 탭하거나 공백으로 활성화 할 수 없기 때문에 키보드 컨트롤이 손실된다는 것입니다. 이것이 실제로 불리한 지의 여부는 요소가 취해야 할 행동의 종류에 달려 있습니다. 약간의 노력을 기울이면 tabIndex요소에 a 를 추가 하고 스페이스 키 누르기를 들음 으로써 키보드 상호 작용 성을 모방 할 수 있습니다. 그러나 다른 브라우저가 키보드에 다르게 반응 할 수 있기 때문에 (비 시각적 브라우저는 말할 것도없고) 실제 브라우저 동작을 100 % 재현하지는 않습니다.

링크는 아니지만 마우스 나 키보드로 정상적으로 활성화 할 수있는 요소를 원한다면 원하는 것이 있습니다 <button type="button">(또는 <input type="button">간단한 텍스트 내용도 마찬가지입니다). 원하는 경우 언제든지 CSS를 사용하여 CSS를 다시 스타일링 할 수 있으므로 버튼보다 링크처럼 보입니다. 그러나 버튼처럼 작동하므로 실제로 표시해야합니다.

(* : 사이트 제작에서 어쨌든 그것들은 북마크에 유용합니다. javascript:의사 URL은 개념적 기괴함 : 위치를 가리 키지 않고 현재 위치 내에서 활성 코드를 호출하는 로케이터입니다. 브라우저와 웹앱 모두에 문제가 있으며 Netscape에서 발명 한 적이 없습니다.)


답변

그것은 아무것도 할 수 없다는 것을 의미합니다. 링크가 어디서나 ‘탐색’되지 않도록하려는 시도입니다. 그러나 올바른 방법은 아닙니다.

당신은 실제로 단지한다 return falseonclick이벤트과 같이 :

<a href="#" onclick="return false;">hello</a>

일반적으로 링크가 ‘JavaScript-y’작업을 수행하는 경우 사용됩니다. AJAX 양식을 게시하거나 이미지를 바꾸는 것 등 이 경우 return이라는 함수를 만들면 false됩니다.

그러나 웹 사이트를 완전히 멋지게 만들려면 일반적으로 웹 사이트를 탐색하는 사람이 JavaScript를 실행하지 않는 경우 동일한 작업을 수행하는 링크가 포함됩니다.

<a href="backup_page_displaying_image.aspx"
   onclick="return coolImageDisplayFunction();">hello</a>


답변

“#”과 javascript : void의 동작에는 큰 차이가 있습니다.

“javascript : void (0);”동안 “#”이 (가) 페이지의 TOP으로 스크롤됩니다. 하지 않습니다.

동적 페이지를 코딩하는 경우 매우 중요합니다. 사용자는 페이지에서 링크를 클릭하여 맨 위로 돌아 가기를 원하지 않습니다.


답변

HTML 링크에 JavaScript 함수를 추가하는 데 널리 사용되는 방법입니다.
예를 들어 [Print]많은 웹 페이지에 표시 되는 링크는 다음과 같이 작성됩니다.

<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>

혼자서 일을 할 수있는 href동안 왜 우리는 필요 onclick합니까? 이 없을 때 사용자가 ‘인쇄’텍스트 위에 마우스를 놓으면 href커서가 포인터 (?) 대신 캐럿 (ꕯ)으로 바뀝니다. 만 갖는 hrefa태그하면 하이퍼 링크로 검증한다.

의 대안 href="javascript:void(0);"은을 사용하는 것입니다 href="#". 이 대안은 사용자 브라우저에서 JavaScript를 켤 필요가 없으므로 더 호환됩니다.


답변

당신은 항상 당신에 href가 있어야한다 태그를. ‘undefined’를 반환하는 JavaScript 함수를 호출하면 정상적으로 작동합니다. ‘#’에 연결됩니다.

href가없는 Internet Explorer 6의 앵커 태그는 a:hover스타일이 적용 되지 않습니다 .

그렇습니다. 인류에 대한 끔찍하고 사소한 범죄이지만 Internet Explorer 6도 마찬가지입니다.

이게 도움이 되길 바란다.

Internet Explorer 6은 실제로 인류에 대한 주요 범죄입니다.


답변

문자가 덜 필요하기 때문에 undefined를 확인할 때 void 0이 표시되는 경우가 있습니다.

예를 들면 다음과 같습니다.

something === undefined

vs.

something === void 0

이러한 이유로 일부 축소 방법은 undefined를 void 0으로 바꿉니다.