클릭 시 최상단 이동 막기 - 자바스크립트 링크 때 맨 위로 이동하는 것 막기 > 웹제작/운영

사이트 내 전체검색
[멀티검색] 먼저 왼쪽 검색창에 검색어를 입력하세요.
  • 네이버
  • 다음
  • 구글
  • 유튜브
  • 랜덤Go
[멀티검색] 먼저 왼쪽 검색창에 검색어를 입력하세요.
  • 네이버
  • 다음
  • 구글
  • 유튜브
  • 랜덤Go

웹제작/운영

SCRIPT 클릭 시 최상단 이동 막기 - 자바스크립트 링크 때 맨 위로 이동하는 것 막기

페이지 정보

profile_image
작성자 키스세븐
조회 743회 작성일 22-10-17 09:57

본문

클릭 시 최상단 이동 막기

자바스크립트 링크 때 맨 위로 올라가는 것 막기


javascript나 jQuery를 사용한 링크를 만들었을 때, 이것을 클릭하면 갑자기 최상단으로 이동하는 현상이 발생하곤 한다. 

근본적인 문제는 href="#"이다. 이것이 자바스크립트 링크 클릭 때 맨 위로 올라가는 원인이다. 그 대책을 알아보자.



클릭 시 최상단 이동 막기 - 자바스크립트 링크 때 맨 위로 이동하는 것 막기



href 최상단 이동의 원인


가장 대표적인 클릭 시 최상단 이동 원인은 이런 코드 때문이다. 

[code]

<a href="#" onclick="window.open('주소');">클릭</a>

[/code]


여기서 onclick="window.open('주소');가 새 창을 띄우면서 링크를 여는 코드인데, 문제는 그 앞에 있는 href="#" 부분이다. 


이 #는 의미 없는 링크를 만드는 코드다. 일반적으로 링크는 화면 페이지가 이동하는 것이다. 그런데 이것을 붙여넣으면 새로 페이징 되지 않는다. 대신 실질적인 링크 이동은 그 다음에 오는 onclick="window.open('주소');가 담당하는 것이다. 


그런데 문제는 이것이 페이지 안에 머물도록 하는 것이기 때문에 그 페이지의 맨 위부터 보여주는 것에 있다. 이럴 때는 아래처럼 여러 가지 방법으로 해 주는 것이 좋다. 



맨 위로 올라가는 것 막기 1


가장 좋은 방법은 자바스크립트로 이를 막아 주는 것이다. 사용법도 간단하다. 마지막에 한 줄만 넣어주면 된다. 


[code]

<a href="#" onclick="window.open('주소'); return false;">클릭</a>

[/code]


위의 링크 소스를 보면 마지막에 return false;라는 것이 더 생긴 것이 보일 것이다. 링크로 새 창을 열 때 원래 페이지의 위치를 초기화하지 말라는 의미다. 



자바스크립트 링크 최상단 이동 막기 2


또 다른 방법으로도 막을 수는 있다. 예를 들어, href="#" 부분을 아래처럼 바꿔보는 것이다. 


[code]

<a href="#none" onclick="window.open('주소');">클릭</a>

[/code]

href 코드에서 #대신 #none를 사용하는 방법도 있다. 원래 #none 같은 형식은 특정 위치로 보내는 코드다. 예를 들면, #input1 같은 형식으로 이동할 수 있다. 대신, #none를 사용하여 이동 위치가 없다는 형식으로 사용할 수도 있다.


(참고: <a href="/a.html#a1">링크</a>는 a.html로 이동 후 id가 a1인 곳으로 이동하게 된다.)


[code]

<a href="#;" onclick="window.open('주소');">클릭</a>

[/code]

물론 맨 위로 이동하고 싶다면 그냥 href="#"를 하면 된다. 간단히 하고 싶다면 마지막에 ; 를 붙여서 #; 라고도 해 볼 만하다.


[code]

<a href="javascript:;" onclick="window.open('주소');">클릭</a>

[/code]

# 링크 때문에 최상단 이동을 하게 되면 URL 주소창에 #가 붙어서 보인다. 이것을 안 보이게 할 때 사용하는 것이 javascript:이다. 그러니까, 맨 위라는 것이 떨어져 나가게 할 수도 있다.



클릭 시 최상단 이동 막기 3


위에서 여러 가지 링크 위치 이동 막기 코드를 설명했지만, 링크가 많을 때는 하나하나 다 걸어주기가 귀찮을 수도 있다. 

이럴 때, 페이지 전체에 상단 이동 금지를 걸어주려면 아래처럼 한꺼번에 막아줘야 한다. [저작권법 표시] 원본 출처 : 키스세븐(www.kiss7.kr)


[code]

<script language="Javascript">

<!--

    function click() {

         return;

    }

//-->

</script>

[/code]

HEAD 태그 부분에 이 스크립트를 넣어줘도 같은 효과를 볼 수 있다. 이것은 위에서 본 return false;와 같은 역할을 하는 것이다. 


[code]

<script language="Javascript">

<!--

    $('a.feellink').click(function(e)

    {

e.preventDefault();   

    });

//-->

</script>

[/code]

또는 위처럼 해 볼 수도 있겠다. 이미 공개 오픈된 함수 코드인데, 코드가 길어지기 때문에 사용하지 않으려는 사람도 많다.

 

추천0
총 87개 (1Page)
  • RSS
웹제작/운영 목록
번호 제목 조회 추천 날짜
공지 공지 476 0 03-26
86 그누보드 366 0 02-25
85 그누보드 1506 0 10-17
열람중 SCRIPT 744 0 10-17
83 CSS 677 0 09-10
82 PHP 1140 0 08-26
81 PHP 736 0 08-21
80 기타활용 651 0 08-15
79 그누보드 1228 0 08-05
78 CSS 889 0 08-04
77 HTML 1764 0 07-24
76 그누보드 483 0 07-24
75 HTML 846 0 07-21
74 CSS 717 0 07-18
73 그누보드 663 0 07-09

검색


    허브사이트 "키스세븐"
    [허브사이트란?]
    수많은 사이트와 포털을
    한 번에 모아서
    사용할 수 있는 서비스를 말합니다.