일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- HTML
- jQuery
- 코드공유
- 타입스크립트
- 리액트
- 웹퍼블리셔
- 렛츠기릿자바스크립트
- 프론트엔드
- 생활코딩
- github
- web
- 웹디자인기능사
- 웹디자인기능사실기
- 실기
- CSS
- JavaScript
- JS
- 깃
- 슬라이드전환
- git
- 자바스크립트
- Supabase
- react
- 정보처리기사
- 웹디실기
- 연산자
- PROJECT
- 비전공자
- 코딩독학
- 세로메뉴바
Archives
- Today
- Total
코딩하는라민
[JavaScript/React] 현재 URL 복사하기 & window.location 객체 본문
728x90
반응형
[JavaScript/React] 현재 URL 복사하기 & window.location 객체
프로젝트를 진행하면서 페이지의 url 을 사용자에게 공유하는 기능을 구현하게 되었다.
그러면서 알게된 것이 바로 window.location 객체이다.
window.location 를 활용하면 웹페이지의 url 과 관련된 다양한 작업을 할 수 있다.
대표적으로 url 복사, 페이지 이동, 새로고침 등이 있다.
📌 window.location 객체란?
window.location 객체는 웹 브라우저의 현재 URL 에 관련된 정보를 제공하는 Javascript 의 객체다. 이 객체를 이용해 현재 페이지의 URL 을 가져오거나 변경할 수 있다.
기본 url 이 다음과 같다고 하자.
https://www.example.com:8080/path/to/page?query=example#section1
📌 window.location 객체 속성
속성 | 설명 | 예시 |
href | 현재 페이지의 url | |
https://www.example.com:8080/path/to/page?query=example#section1 | ||
protocol | url 의 프로토콜 부분 ex. http:, https: |
https: |
host | url 의 호스트 부분(도메인, 포트 포함) | http://www.example.com:8080 |
hostname | url 의 호스트 이름(포트 미포함) | http://www.example.com |
port | url 의 포트 부분 | 8080 |
pathname | url 의 경로 부분 | /path/to/page |
search | url 의 쿼리 문자열 | ?query=example |
hash | url 의 해시 부분 | #section1 |
origin | 프로토콜 + url 호스트(도메인) + 포트 | |
https://www.example.com:8080 |
📌 window.location 객체 매서드
메서드 | 속성 & 예시 | |
assign | 지정된 URL로 이동 | |
window.location.assign('https://www.ramincoding.tistory.com') |
||
replace | 현재 페이지의 URL을 새로운 URL로 교체 → 뒤로가기 버튼으로 이전 페이지로 돌아갈 수 없음 |
|
window.location.replace('https://www.ramincoding.tistory.com') |
||
reload | 현재 페이지를 다시 로드 | |
window.location.reload() |
👀 window.location 객체 프로퍼티 살펴보기
window.location 객체를 살펴보기 위해 콘솔창에 window.location 을 출력해본다.
console.log(window.location)
결과를 보면 위에서 확인한 속성, 메서드들이 보인다.
📌 현재 url 복사하기
편재 페이지의 url 을 복사하기 위해서는 앞서 확인했던 window.location의 속성인 href 를 사용해야한다.
클립보드에 복사하는 방법은 다음과 같지만 브라우저에 따라 다를 수 있다.
navigator.clipboard.writeText(currentUrl)
Javascript
const currentUrl = window.location.href;
const copyToClipboard = (text) => {
const textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
document.execCommand('copy');
document.body.removeChild(textarea);
};
copyToClipboard(currentUrl);
console.log('클립보드에 복사되었습니다');
React
const CopyUrlButton = () => {
const currentUrl = window.location.href;
const handleCopyUrl = () => {
navigator.clipboard.writeText(currentUrl)
.then(() => {
console.log('클립보드에 복사되었습니다');
})
.catch((error) => {
console.error('클립보드 복사 실패!');
});
};
return (
<button onClick={handleCopyUrl}>
현재 URL 복사하기
</button>
);
navigator.clipboard.writeText() 메서드는 promise 를 반환하기 때문에 클립보드에 복사를 성공한다면 then 절이 시행되고, 클립보드에 복사하기 실패한다면 catch 절이 실행된다.
메서드 | 설명 |
navigator | 웹 브라우저의 정보와 상태를 제공하는 객체 ex. 사용자의 위치, 환경 설정, 플러그인 등 |
clipboard | 클립보드 API에 접근할 수 있는 속성 |
writeText(text) | 클립보드에 주어진 텍스트를 쓰는 메서드 → Promise를 반환 |
Promise | 비동기적으로 동작 성공하면 Promise가 resolve 되고, 실패하면 거부 reject된다. |
참고 : chat gpt
728x90
반응형
'Core > JavaScript' 카테고리의 다른 글
[JavaScript] 이벤트와 이벤트 핸들러, 이벤트 객체 event(e) (53) | 2023.12.07 |
---|---|
[JavaScript/React] 영역 외 클릭 감지로 모달/프로필 박스 닫기 기능 구현 (54) | 2023.12.07 |
[JavaScript] 클래스와 접근자 프로퍼티(getter함수, setter함수) (0) | 2023.02.21 |
[JavaScript] 클래스(Class)와 constructor (0) | 2023.02.20 |
[Javascript] 참조 범위를 결정짓는 스코프(scope) - 1 (0) | 2022.11.24 |