2013-07-22 5 views
2
<a href="javascript:expand()"> and <a href="#" onclick="javascript:expand()"> 

다른 점은 무엇입니까?href = "javascript : func()"href = "#"onclick = "javascript : func()"

저는 href="#"이 요즘 더 표준적인 방법임을 알고 있습니다. 내 문제는 사용자가 토글을 클릭 할 때 확장/축소되는 표준 드롭 다운 메뉴가 있다는 것입니다.

아래 코드에 대해 href="#"을 수행하면 사용자가 페이지를 펼칠 때마다 항상 사용자가 쉽게 사용할 수없는 위쪽으로 다시 스크롤됩니다.

사용자가 펼치기를 클릭 할 때 href="javascript:expand()"을 사용하면 페이지가 이동하지 않으며 모든 것이 정상입니다.

대신 href="javascript:expand()"을 사용하면 문제가 발생합니까? 또는 href="#"을 수정하면 사용자가 확장을 클릭 할 때마다 페이지가 맨 위로 스크롤되지 않습니다.

감사합니다.

편집 :이 질문은 이전에 요청되었을 수도 있지만 내 견해에서 보는 것입니다. Im는 다만 설명보다는 오히려 제안을 요구해.

+0

아마 onclick = "return false;"를 입력하십시오. href = "javascript : expand()" – designtocode

+5

가능한 [href와 onclick의 JavaScript 함수] 중복 가능 (http://stackoverflow.com/questions/1070760/javascript-function-in-href-vs-onclick) – fsw

+0

가능한 dup http://stackoverflow.com/questions/134845/href-attribute-for-javascript-links-or-javascriptvoid0 –

답변

3

JavaScript onclick 이벤트 처리기가 false을 반환하면 스크롤이 발생하지 않습니다. 당신은 이런 식으로 작업을 수행 할 수 있습니다

<a href="#" onclick="expand(); return false;"> 

당신의 onclick 핸들러가 false를 반환하지 않는 경우

href 링크를 따라야합니다. href="#"의 경우 페이지 상단으로 스크롤한다는 의미입니다.

+0

잘못되었습니다. 그런 일이 일어나기 위해서는 인라인 이벤트 핸들러가'expand()'의 리턴 값을 반환해야하는데, 그렇지 않은 경우 – Gareth

+2

맞습니다. 그 점을 지적 해 주셔서 감사합니다. 답변을 업데이트했습니다. –

+0

'javascript :'onclick'? – Mics

0

유지하려는 경우 href="#" 당신이 자리를 차지할 기본 앵커 클릭 동작을 방지

function expand(e) { 
    e.preventDefault() 
    // ... 
} 

을 할 수있는, 또는 당신이 그것의 끝에서 false를 반환 할 수있다.

나머지 질문은 JavaScript function in href vs. onclick입니다.이 질문은 기본적으로 사용자가 묻는 것입니다.

+1

인라인'onclick'이 실제로 이벤트 객체를 함수에 전달하도록 업데이트되지 않으면이 작업이 수행되지 않습니다. (그리고 여전히 모든 브라우저에서 작동하지 않을 것입니다. 예를 들어'preventDefault()'를 지원하지 않는 이전 IE에서는 그렇지 않습니다.) – nnnnnn

+0

맞습니다. 짝수를 처리하거나 거짓을 반환하는 두 가지 선택 사항이 있습니다. 요구 사항. –

3

가장 좋은 방법은 <a> 요소를 사용하지 않는 것입니다. 의미 론적으로 적절한 요소를 사용하거나 <div> 대신 사용하십시오.

+2

마우스 나 다른 포인팅 장치를 사용할 수없는 (또는 사용하지 않기로 선택한) 사용자를 위해 앵커에 키보드를 통해 액세스 할 수 있기 때문에 앵커가 div보다 낫습니다. – nnnnnn

+2

나는 진짜 링크 (파서, RSS 독자 또는 자바 스크립트를 이해하지 않는 다른 사람을 위해)에 대해 ''사용해야한다고 생각합니다. 키보드 전용 사용자가 신경 쓰이는 경우'

-1

이 시도 = "#"이 HREF = 대체 HREF의 insted "자바 스크립트 :;"