2010-02-15 2 views

답변

4

링크에 javascript: 키워드를 사용하는 것은 좋지 않습니다. 난 단지는 해가 될 수있는 이유에 대해 한 기사 찾기 위해 관리했습니다 :

a href=”javascript:void(0);” — avoid the void

을하지만 일반적인 합의는 자바 스크립트를 지원하지 않고 브라우저를 혼동 수 있기 때문에 당신이 그 중 일부, 그것을 사용하지 않도록 표시 브라우저에서 잘못된 링크로 구문 분석 될 수 있습니다.

대신, 자바 스크립트가 제공하는 기능을 처리하거나 자바 스크립트가 올바르게 작동해야하는 사이트에 관한 메시지를 표시하는 페이지에 대한 링크를 제공해야합니다. 그래서 같은 이벤트에서 동일한 링크, return false;,에 :

<a href="noscript.html" onclick="doSomething(); return false;">I'm a link</a> 

또는 대안 적으로, 당신의 자바 스크립트 코드에 return false; 또는 preventDefault()returnValue를 사용

element.onclick = function() 
{ 
    /* 
     // return false is better for most situations (see bobince's comment) 
     if (event.preventDefault) 
      event.preventDefault(); 
     else 
      event.returnValue = false; 
    */ 

    doSomething(); 

    return false; 
} 
+0

앤디에게 감사드립니다. 나는 클릭 수와 관련된 이슈를 알고 있으며 언급 한 블로그를 살펴 보았습니다. 하지만, javascript : void (0)가 해로운 것으로 간주되는 이유에 대한 하나의 유효한 설명조차 찾지 못했습니다 (모든 false를 반환한다고 가정). – Abhi

+0

@Abhi : IE에서 'void (0)'링크로 감싸면 이미지가 사라진다는 블로그 게시물에 나 자신이 직접 경험했다고 말할 수는 없습니다. 이것 이외에도 '무효'가 실제로는 해롭다는 것이 확실하지 않습니다. –

+2

나도 그렇다. 나는 그 문제가 무엇이든간에 '무효'라고 생각하지 않는다. 그러나,'javascript :'링크를 결코 사용하지 않는 것이 좋은 조언입니다. 'onclick = "..."속성보다 JavaScript 할당 이벤트 핸들러를 사용하면 (일반적으로 가장 좋은 접근 방법입니다),'return false'를 사용하는 것이 IE에서 작동하는 것처럼 가장 쉬운 응답입니다 및 기타 브라우저에서 이벤트 객체를 전혀 필요로하지 않습니다. 위의 예는 IE에서'cancelBubble'을하지 않으며'event' 매개 변수가 부족하기 때문에 다른 브라우저에서는 작동하지 않습니다 ('event' global은 IE 전용 임). – bobince

1

<a href="javascript:void(0)" />을 클릭 이벤트 "beforeunload"에서 트리거 개체 "창"× IE (내가 IE10에서 테스트 한),하지만 <a href="#" />을 클릭하지 않습니다.

+0

IE 11은 링크를 클릭 할 때 더 이상 onbeforeunload를 트리거하지 않습니다. – tsh

관련 문제