<a href="javascript:void(0)" id="loginlink">login</a>
나는 그러한 href
여러 번 보았지만 그것이 정확히 무엇을 의미하는지 모르겠습니다.
질문자 :omg
<a href="javascript:void(0)" id="loginlink">login</a>
나는 그러한 href
여러 번 보았지만 그것이 정확히 무엇을 의미하는지 모르겠습니다.
void
연산자는 주어진 표현식을 평가한 다음undefined
를 반환합니다.
void
연산자는 일반적으로 "void(0)
"("void 0
"undefined
기본 값을 얻기 위해 종종 사용됩니다. 이러한 경우 전역 변수undefined
를 대신 사용할 수 있습니다(기본값이 아닌 값에 할당되지 않았다고 가정).
여기에 설명이 제공됩니다. void
operator .
href
를 사용하여 이 작업을 수행하려는 이유는 일반적으로 javascript:
URL이 해당 JavaScript를 평가한 결과의 일반 텍스트 버전으로 브라우저를 리디렉션하기 때문입니다. 그러나 결과가 undefined
이면 브라우저는 동일한 페이지에 유지됩니다. void(0)
undefined
평가되는 짧고 간단한 스크립트입니다.
기술적인 답변 외에도 javascript:void
는 작성자가 잘못하고 있음을 의미합니다.
javascript:
pseudo-URL(*)을 사용할 이유가 없습니다. 실제로 누군가가 '링크 북마크', '새 탭에서 링크 열기' 등과 같은 것을 시도하면 혼란이나 오류가 발생할 것입니다. 이것은 사람들이 새 탭을 위해 가운데 클릭에 익숙해졌습니다. 링크처럼 보이고 새 탭에서 읽고 싶지만 실제 링크가 아닌 것으로 판명되었습니다. 중간 클릭 시 빈 페이지 또는 JS 오류와 같은 원치 않는 결과를 제공합니다.
<a href="#">
는 틀림없이 덜 나쁜 일반적인 대안입니다. 그러나 링크를 따라가고 페이지 상단으로 스크롤되는 것을 방지하기 위해 onclick
이벤트 핸들러에서 return false
것을 기억해야 합니다.
어떤 경우에는 링크를 가리키는 실제 유용한 위치가 있을 수 있습니다. 예를 들어 이전에 숨겨진 <div id="foo">
를 여는 컨트롤이 있는 경우 <a href="#foo">
를 사용하여 링크하는 것이 합리적입니다. 또는 동일한 작업을 수행하는 JavaScript가 아닌 방법이 있는 경우(예: foo를 처음으로 표시하도록 설정하는 'thispage.php?show=foo') 해당 방법에 연결할 수 있습니다.
그렇지 않고 링크가 일부 스크립트만 가리키는 경우 실제로 링크가 아니므로 그렇게 표시하면 안 됩니다. 일반적인 접근 방식은 href
없이 <span>
, <div>
또는 <a>
onclick
을 추가하고 클릭할 수 있다는 것을 명확히 하기 위해 어떤 방식으로든 스타일을 지정하는 것입니다. 이것이 StackOverflow가 [작성 당시에 한 일입니다. 이제 href="#"
]를 사용합니다.
이것의 단점은 span/div/bare-a를 탭하거나 공백으로 활성화할 수 없기 때문에 키보드 제어를 잃게 된다는 것입니다. 이것이 실제로 단점인지 여부는 요소가 취하려는 조치의 종류에 따라 다릅니다. tabIndex
를 추가하고 Space 키 누르기를 수신하여 키보드 상호 작용성을 모방하려고 시도할 수 있습니다. 그러나 다른 브라우저가 키보드에 다르게 반응할 수 있기 때문에(비시각적 브라우저는 말할 것도 없고) 실제 브라우저 동작을 100% 재현하지는 못할 것입니다.
링크가 아니지만 마우스나 키보드로 정상적으로 활성화될 수 있는 요소를 정말로 원한다면 원하는 것은 <button type="button">
(또는 <input type="button">
입니다. 좋은, 간단한 텍스트 내용). 원하는 경우 CSS를 사용하여 스타일을 다시 지정하여 버튼보다 링크처럼 보이도록 할 수 있습니다. 그러나 버튼처럼 작동하기 때문에 실제로 표시해야 합니다.
(*: 사이트 작성에서 어쨌든. 분명히 북마크에 유용합니다. javascript:
의사 URL은 개념적 기이함: 위치를 가리키지 않고 대신 현재 위치 내에서 활성 코드를 호출하는 로케이터입니다. 브라우저와 웹앱 모두에 대한 막대한 보안 문제이며 Netscape에서 발명하지 말았어야 합니다.)
아무 일도 하지 않을 것이라는 뜻입니다. 링크가 어디에도 '탐색'되지 않도록 하려는 시도입니다. 그러나 그것은 올바른 방법이 아닙니다.
실제로 다음과 같이 onclick
이벤트에서 return false
를 반환해야 합니다.
<a href="#" onclick="return false;">hello</a>
일반적으로 링크가 'JavaScript-y' 작업을 수행하는 경우에 사용됩니다. AJAX 양식을 게시하거나 이미지를 교환하는 등의 작업을 수행합니다. 이 경우 호출되는 함수를 false
만듭니다.
그러나 웹사이트를 완벽하게 만들기 위해 일반적으로 웹사이트를 탐색하는 사람이 JavaScript를 실행하지 않기로 선택한 경우 동일한 작업을 수행하는 링크를 포함합니다.
<a href="backup_page_displaying_image.aspx" onclick="return coolImageDisplayFunction();">hello</a>
HTML 링크에 JavaScript 기능을 추가하는 매우 인기 있는 방법입니다.
예: [Print]
링크는 다음과 같이 작성됩니다.
<a href="javascript:void(0)" onclick="callPrintFunction()">Print</a>
onclick
만으로도 작업을 완료할 수 있는데 href
가 필요한가요? href
가 없을 때 사용자가 'Print' 텍스트 위로 마우스를 가져가면 커서가 포인터() 대신 캐럿()으로 변경되기 때문입니다. 만 갖는 href
온 태그하면 하이퍼 링크로 검증한다. a
href="javascript:void(0);"
의 대안 href="#"
의 사용입니다. 이 대안은 사용자의 브라우저에서 JavaScript를 켤 필요가 없으므로 더 호환됩니다.
의 행동에 큰 차이가 #
대 javascript:void(0);
.
#
페이지 상단으로 스크롤하지만 javascript:void(0);
하지 않습니다.
이것은 사용자가 페이지의 링크를 클릭할 때 맨 위로 돌아가기를 원하지 않기 때문에 동적 페이지를 코딩하는 경우 매우 중요합니다.
당신은 항상 당신의 태그에 href가 있어야합니다. '정의되지 않음'을 반환하는 JavaScript 함수를 호출하면 문제가 없습니다. 따라서 '#'에 연결됩니다.
href가 없는 Internet Explorer 6의 앵커 태그 a:hover
스타일이 적용되지 않습니다.
예, 끔찍하고 인류에 대한 경미한 범죄이지만 Internet Explorer 6도 일반적입니다.
이게 도움이 되길 바란다.
Internet Explorer 6은 실제로 인류에 대한 중대한 범죄입니다.
더 적은 수의 문자가 필요하기 때문에 정의되지 않은 항목을 확인할 때 void 0
예를 들어:
if (something === undefined) { doSomething(); }
비교 대상:
if (something === void 0) { doSomething(); }
이러한 이유로 일부 축소 방법은 undefined
를 void 0
javascript:void(0)
사용은 HTML 작성자가 버튼 요소 대신 앵커 요소를 오용하고 있음을 의미합니다.
페이지 새로 고침을 방지하기 위해 href를 "#" 또는 "javascript:void(0)"로 설정하여 의사 버튼을 생성하기 위해 onclick 이벤트와 함께 앵커 태그가 남용되는 경우가 많습니다. 이러한 값은 링크 복사/끌기, 새 탭/창에서 링크 열기, 책갈피 지정, JavaScript가 여전히 다운로드 중이거나 오류가 발생하거나 비활성화될 때 예기치 않은 동작을 일으킵니다. 이것은 또한 보조 기술(예: 화면 판독기)에 잘못된 의미를 전달합니다.
<button>
대신 사용하는 것이 좋습니다. 일반적으로 적절한 URL을 사용하는 탐색용 앵커만 사용해야 합니다.
출처: MDN의 <a>
페이지 .
void
는 브라우저가 새 페이지를 로드할 수 없도록 undefined
값을 반환하는 데 사용되는 연산자입니다.
웹 브라우저는 null을 반환하는 JavaScript 함수가 아닌 한 URL로 사용되는 모든 것을 시도하고 로드합니다. 예를 들어 다음과 같은 링크를 클릭하면
<a href="javascript: alert('Hello World')">Click Me</a>
그러면 새 페이지를 로드하지 않고 경고 메시지가 표시됩니다. alert
는 null 값을 반환하는 함수이기 때문입니다. 즉, 브라우저가 새 페이지를 로드하려고 할 때 null이 표시되고 로드할 항목이 없습니다.
void 연산자에 대해 주의해야 할 중요한 점은 값이 필요하며 단독으로 사용할 수 없다는 것입니다. 다음과 같이 사용해야 합니다.
<a href="javascript: void(0)">I am a useless link</a>
웹 개발자의 사용 javascript:void(0)
이 기본 동작을 방지 할 수있는 가장 쉬운 방법이기 때문에 태그를. a
void(*anything*)
는 undefined
값을 반환하며 거짓 값입니다. return false
값을 반환하는 것은 기본 동작을 방지 a
태그의 onclick
이벤트에서 false를 반환하는 것과 같습니다.
내가 생각하는 그래서 javascript:void(0)
의 기본 동작을 방지하는 가장 간단한 방법입니다 태그. a
이 개념을 이해하려면 먼저 JavaScript의 void 연산자를 이해해야 합니다.
void 연산자의 구문은 expr을 평가하고 undefined를 반환하는 void «expr»
void를 함수로 구현하면 다음과 같습니다.
function myVoid(expr) { return undefined; }
이 void 연산자에는 표현식의 결과를 버리는 한 가지 중요한 사용법이 있습니다.
어떤 상황에서는 표현식의 결과와 반대로 undefined를 반환하는 것이 중요합니다. 그런 다음 void를 사용하여 해당 결과를 삭제할 수 있습니다. 그러한 상황 중 하나는 javascript: URL과 관련이 있습니다. 링크에는 피해야 하지만 북마크에는 유용합니다. 이러한 URL 중 하나를 방문하면 많은 브라우저가 현재 문서를 URL "콘텐츠" 평가 결과로 대체하지만 결과가 정의되지 않은 경우에만 해당됩니다. 따라서 현재 표시된 내용을 변경하지 않고 새 창을 열려면 다음을 수행할 수 있습니다.
javascript:void window.open("http://example.com/")
void
연산자는 주어진 표현식을 평가한 다음 undefined를 반환합니다. 페이지 새로 고침을 방지합니다.
링크에는 사용 가능한 표시 객체가 될 수 있도록 지정될 href
<a>
href
에서 고급 JavaScript를 구문 분석하지 않습니다. 예를 들면 다음과 같습니다.
<a href="javascript:var el = document.getElementById('foo');">Get element</a>
href
태그는 공백을 허용하지 않거나 공백을 %20
(공백에 대한 HEX 코드)으로 변환하므로 JavaScript 인터프리터에서 여러 오류가 발생합니다.
따라서 <a>
요소의 href
를 사용하여 인라인 JavaScript를 실행하려면 먼저 너무 복잡하지 않은(공백을 포함하지 않는) href
onClick
, onMouseOver
, onMouseOut
등
일반적인 대답은 다음과 같이 하는 것입니다.
<a href="#" onclick="var el = document.getElementById('foo');">Get element</a>
href
#
이 브라우저에 이를 수행하도록 지시하기 때문에 페이지가 맨 위로 스크롤됩니다.
<a>
요소의 href
#
을 넣으면 기본적으로 페이지 상단인 루트 앵커를 지정하지만 <a>
요소 내부에 name
<a name="middleOfPage"></a>
그런 다음 <a>
요소의 href
를 middleOfPage
onClick
이벤트에서 JavaScript를 실행할 수 있습니다.
<a href="#middleOfPage" onclick="var el = document.getElementById('foo');">Get element</a>
링크 점프를 원하지 않는 경우가 많으므로 다음 두 가지를 수행할 수 있습니다.
<a href="#thisLinkName" name="thisLinkCame" onclick="var elem = document.getElementById('foo');">Get element</a>
이제 클릭하면 아무데도 가지 않지만 페이지가 현재 표시 영역에서 중앙에 다시 올 수 있습니다.
<a>
요소의 href
사용하여 인라인 자바스크립트를 사용하는 가장 좋은 방법은 위의 작업을 수행하지 않고도 JavaScript:void(0);
:
<a href="javascript:void(0);" onclick="var el = document.getElementById('foo');">Get element</a>
이것은 브라우저에게 아무데도 가지 말라고 지시하지만 대신 JavaScript:void(0);
공백이 포함되어 있지 않고 URL로 구문 분석되지 않기 때문에 href
에서 함수를 사용합니다. 대신 컴파일러에 의해 실행됩니다.
void
키워드 인의 매개 변수와 함께 제공되는 경우 0
을 반환 undefined
지정하지 않고 발생할 수있는 반환 값 처리 할 수있는 더 많은 자원을 사용하지 않고, 0
(가 더 많은 메모리 관리 / 성능 친절)을.
다음에 일어나는 일은 onClick
이 실행되는 것입니다. 페이지가 움직이지 않고 디스플레이에 아무 일도 일어나지 않습니다.
내가 본 바에 따르면 void
연산자 는 JavaScript에서 3가지 일반적인 용도로 사용됩니다. 당신이 언급하는 <a href="javascript:void(0)">
<a>
태그를 작동하지 않는 것으로 만드는 일반적인 트릭입니다. 일부 브라우저 href
가 있는지 여부에 따라 <a>
태그를 다르게 취급하므로 아무 작업도 수행하지 않는 href
가 있는 링크를 만드는 방법입니다.
void
연산자는 인수를 취하고 undefined
반환하는 단항 연산자입니다. 따라서 var x = void 42;
x === undefined
의미합니다. 이는 엄격 모드 외부에서 undefined
가 실제로 유효한 변수 이름이기 때문에 유용합니다. 따라서 일부 JavaScript 개발자는 undefined
void 0
사용합니다. <a href="javascript:undefined">
수행할 수도 void(0)
과 동일합니다.
출처 : http:www.stackoverflow.com/questions/1291942/what-does-javascriptvoid0-mean
C#에서 [Flags] Enum Attribute는 무엇을 의미합니까? (0) | 2022.02.08 |
---|---|
Java 'for each' 루프는 어떻게 작동합니까? (0) | 2022.02.08 |
vim "sudo로 쓰기" 트릭은 어떻게 작동합니까? (0) | 2022.02.08 |
Android Studio에서 패키지 이름 바꾸기 (0) | 2022.02.07 |
Equals 메서드가 재정의될 때 GetHashCode를 재정의하는 것이 중요한 이유는 무엇입니까? (0) | 2022.02.07 |