JavaScript의 몇 가지 흔하지 않은 바인딩 이벤트

목차

1. 전체 화면 변경 이벤트

2. 페이지 숨기기 이벤트

3. 페이지쇼 이벤트

4. 해시체인지 이벤트

5. 온라인 이벤트

6. 오프라인 이벤트

7. 팝스테이트 이벤트

8. 장치 모션 이벤트

9. 장치 방향 이벤트


1. 전체 화면 변경 이벤트

fullscreenchange 이벤트는 요소가 전체 화면 모드에 들어가거나 나올 때 발생하는 브라우저 이벤트입니다. 이는 전체 화면 상태의 변경 사항을 감지하는 방법을 제공하며 전체 화면 모드에서 적절한 작업을 수행하거나 사용자 인터페이스를 업데이트하는 데 사용할 수 있습니다.

fullscreenchange 이벤트는 사용자가 전체 화면 기능을 사용하여 브라우저 창을 전체 화면 모드로 전환하거나(예: F11 키 누르기) 전체 화면 모드를 호출하여 지정된 요소를 전체 화면 모드로 전환할 때 트리거됩니다. JavaScript를 통한 화면 API(예: requestFullscreen()).

동시에 사용자가 전체 화면 모드를 종료하거나 전체 화면 모드에서 요소를 종료하기 위해 JavaScript를 통해 전체 화면 API를 호출하면 fullscreenchange 이벤트도 트리거됩니다.

샘플 코드는 다음과 같습니다.

document.addEventListener("fullscreenchange", function(event) {
  if (document.fullscreenElement) {
    // 元素进入全屏模式
    console.log("进入全屏模式");
    // 执行相应的操作或更新界面
  } else {
    // 元素退出全屏模式
    console.log("退出全屏模式");
    // 执行相应的操作或更新界面
  }
});

2. 페이지 숨기기 이벤트

'pagehide' 이벤트는 페이지가 숨겨졌을 때 실행되는 브라우저 이벤트입니다. 이는 페이지 언로드 프로세스의 일부이며 사용자가 현재 탭을 떠나거나 브라우저를 닫을 때 트리거됩니다. 'pagehide' 이벤트를 수신하면 사용자가 페이지를 떠날 때를 포착하고 적절한 작업을 수행할 수 있습니다.

`pagehide` 이벤트는 `unload` 이벤트와 유사하지만 몇 가지 차이점이 있습니다. 주요 차이점은 'pagehide' 이벤트가 취소 가능한 이벤트라는 것입니다. 즉, 이벤트의 기본 동작을 취소하여 페이지가 숨겨지는 것을 방지할 수 있습니다. 반면, `unload` 이벤트는 취소할 수 없으며, 페이지 언로드를 방지할 수 없습니다.

다음은 `pagehide` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `pagehide` 이벤트를 `window` 객체 또는 `document` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 저장되지 않은 데이터 저장, 통계 정보 전송 등 페이지가 숨겨져 있을 때 수행해야 하는 작업을 수행할 수 있습니다.
3. 페이지가 숨겨지는 것을 방지하려면 이벤트 객체의 `preventDefault()` 메서드를 호출하면 됩니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("pagehide", function(event) {
  // 执行页面隐藏时的操作
  console.log("页面即将隐藏");
  
  // 如果需要阻止页面的隐藏,取消事件的默认行为
  event.preventDefault();
});

'pagehide' 이벤트가 발생할 때 페이지가 숨겨져 있으므로 이벤트 핸들러에서 수행되는 작업은 사용자 경험에 영향을 미치지 않도록 가벼워야 합니다.

'pagehide' 이벤트를 사용하면 사용자가 페이지를 떠나기 전의 순간을 포착하고 필요한 경우 적절한 조치를 취할 수 있습니다. 이는 데이터 저장, 리소스 정리, 통계 전송 등에 유용합니다.

3. 페이지쇼 이벤트

'pageshow' 이벤트는 페이지가 표시될 때 실행되는 브라우저 이벤트입니다. 이는 페이지 로드 및 표시 프로세스의 일부이며 사용자가 새 탭을 열거나 현재 탭으로 다시 이동하거나 페이지를 새로 고칠 때 트리거됩니다. 'pageshow' 이벤트는 표시되는 페이지의 타이밍을 캡처하고 해당 작업을 수행하는 방법을 제공합니다.

`pageshow` 이벤트는 페이지가 완전히 로드되거나 DOMContentLoaded 이벤트가 실행될 때가 아니라 페이지가 표시될 때 실행된다는 점에서 `DOMContentLoaded` 및 `load` 이벤트와 다릅니다.

다음은 `pageshow` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `pageshow` 이벤트를 `window` 객체 또는 `document` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 상태 복원, 데이터 로드 등 페이지가 표시될 때 수행해야 하는 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("pageshow", function(event) {
  // 执行页面展示时的操作
  console.log("页面已展示");
});

페이지를 새로 고칠 때 'pageshow' 이벤트도 발생한다는 점에 유의하세요. 따라서 이벤트 핸들러에서 수행되는 작업은 페이지를 새로 고칠 때 제대로 작동하도록 반복 가능해야 합니다.

'pageshow' 이벤트를 사용하면 페이지가 표시되는 순간을 포착하고 적절한 작업을 수행할 수 있습니다. 이는 상태 복원, 데이터 로드 또는 페이지 표시와 관련된 기타 작업을 수행하는 데 유용합니다.

4. 해시체인지 이벤트

`hashchange` 이벤트는 URL의 조각 식별자(예: 해시 값)가 변경될 때 실행되는 브라우저 이벤트입니다. 조각 식별자는 `#` 기호 뒤에 오는 URL의 일부입니다. 'hashchange' 이벤트는 해시 값이 변경될 때 적절한 작업이 수행될 수 있도록 URL 해시 값의 변경 사항을 수신하는 방법을 제공합니다.

웹 애플리케이션에서 URL 조각 식별자는 프런트엔드 라우팅이나 페이지 상태 관리를 구현하는 데 자주 사용됩니다. 'hashchange' 이벤트는 사용자가 페이지 내의 링크를 클릭하거나 URL의 해시 값을 변경하는 다른 작업을 수행할 때 트리거됩니다.

다음은 `hashchange` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `hashchange` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 `location.hash` 속성을 통해 현재 해시 값을 가져오고 해당 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("hashchange", function(event) {
  // 获取当前的哈希值
  var newHash = location.hash;
  
  // 执行相应的操作,例如根据哈希值加载不同的内容或触发前端路由逻辑
  console.log("哈希值发生变化:" + newHash);
});

'hashchange' 이벤트를 수신하면 URL 해시 값의 변경 사항을 실시간으로 얻을 수 있으며 필요에 따라 페이지 콘텐츠 업데이트, 보기 전환, 프런트엔드 라우팅 탐색 수행 등 해당 작업을 수행할 수 있습니다.

'hashchange' 이벤트는 URL 해시 값의 변경 사항만 모니터링할 수 있고 다른 URL(예: 프로토콜, 도메인 이름, 경로 등)의 변경 사항은 모니터링할 수 없다는 점에 유의해야 합니다. 전체 URL의 변경 사항을 수신하려면 'popstate' 이벤트와 History API를 사용할 수 있습니다.

5. 온라인 이벤트

'온라인' 이벤트는 기기의 네트워크 연결 상태가 오프라인에서 온라인으로 변경될 때 트리거되는 브라우저 이벤트입니다. 장치의 네트워크 연결 상태를 감지하고 장치가 네트워크에 다시 연결될 때 적절한 조치를 수행하는 데 사용됩니다.

장치가 오프라인(네트워크 연결 없음)일 때 네트워크 연결이 복원되면 브라우저는 'online' 이벤트를 트리거하여 장치가 네트워크에 다시 연결되었음을 JavaScript 코드에 알립니다.

'온라인' 이벤트를 사용하는 기본 흐름은 다음과 같습니다.

1. `addEventListener` 메소드를 사용하여 `online` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 데이터 로드, 요청 전송 등 장치가 네트워크에 다시 연결될 때 수행해야 하는 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("online", function(event) {
  // 设备已重新连接到网络
  console.log("设备已在线");
});

'온라인' 이벤트를 청취하면 기기가 네트워크에 다시 연결될 때 기회를 포착하고 적절한 조치를 취할 수 있습니다. 이는 오프라인 상태에서 데이터를 캐싱하거나 장치가 네트워크에 다시 연결되었음을 사용자에게 알리는 데 유용합니다.

'온라인' 이벤트는 장치의 상태가 오프라인에서 온라인으로 변경되는 것만 감지할 수 있으며 장치가 온라인 상태인지 여부는 감지할 수 없다는 점에 유의해야 합니다. 장치의 온라인 상태를 감지해야 하는 경우 `navigator.onLine` 속성을 사용할 수 있습니다. 'navigator.onLine'이 'true'이면 기기가 현재 온라인 상태임을 의미하고, 'false'이면 기기가 현재 오프라인 상태임을 의미합니다.

6. 오프라인 이벤트

'오프라인' 이벤트는 기기의 네트워크 연결 상태가 온라인에서 오프라인으로 변경될 때 트리거되는 브라우저 이벤트입니다. 장치의 네트워크 연결 상태를 감지하고 장치가 네트워크에서 연결이 끊길 때 적절한 조치를 수행하는 데 사용됩니다.

장치가 온라인(네트워크 연결 포함)일 때 네트워크 연결이 중단되면 브라우저는 '오프라인' 이벤트를 트리거하여 장치가 오프라인임을 JavaScript 코드에 알립니다.

다음은 `오프라인` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `offline` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 오프라인 상태 프롬프트 표시, 데이터 업로드 일시 중지 등 장치의 네트워크 연결이 끊어질 때 수행해야 하는 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("offline", function(event) {
  // 设备已离线
  console.log("设备已离线");
});

'오프라인' 이벤트를 수신하면 기기가 네트워크에서 연결이 끊어졌을 때 기회를 포착하고 적절한 조치를 수행할 수 있습니다. 이는 데이터를 오프라인으로 처리해야 하거나 장치가 네트워크에서 연결 해제되었음을 사용자에게 경고해야 하는 경우 유용합니다.

'오프라인' 이벤트는 장치의 온라인에서 오프라인으로의 상태 변경만 감지할 수 있으며 장치가 오프라인 상태인지 여부는 감지할 수 없다는 점에 유의해야 합니다. 장치의 온라인 상태를 감지해야 하는 경우 `navigator.onLine` 속성을 사용할 수 있습니다. 'navigator.onLine'이 'true'이면 기기가 현재 온라인 상태임을 의미하고, 'false'이면 기기가 현재 오프라인 상태임을 의미합니다.

7. 팝스테이트 이벤트

`popstate` 이벤트는 브라우저의 기록(즉, `history.pushState()` 또는 `history.replaceState()`를 통해 수정된 URL)이 변경될 때 트리거되는 JavaScript의 브라우저 이벤트입니다.

일반적으로 사용자가 브라우저의 앞으로 또는 뒤로 버튼을 클릭하거나 `history.back()`, `history.forward()`, `history.go()` 메서드가 JavaScript를 통해 호출되어 변경할 히스토리 `popstate` 이벤트.

'popstate' 이벤트는 브라우저의 기록이 변경될 때 개발자가 작업을 수행할 수 있는 기회를 제공합니다. 예를 들어 'popstate' 이벤트를 사용하여 페이지 콘텐츠를 업데이트하거나, 데이터를 새로 고치거나, URL 변경과 관련된 기타 작업을 수행할 수 있습니다.

다음은 `popstate` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `popstate` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 필요에 따라 URL 변경과 관련된 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("popstate", function(event) {
  // 历史记录发生变化
  console.log("历史记录变化");
  // 执行其他操作,如更新页面内容或刷新数据
});

페이지가 처음 로드될 때 `popstate` 이벤트가 시작되지 않는다는 점에 유의하세요. 이 이벤트는 페이지가 로드되고 기록 변경이 발생한 경우에만 시작됩니다.

또한 `history.pushState()`, `history.replaceState()` 또는 브라우저의 앞으로/뒤로 버튼을 호출하여 기록을 수정하고 `popstate` 이벤트를 트리거할 수 있습니다. 그러나 무한 루프가 발생하지 않도록 `popstate` 이벤트 핸들러에서 이러한 메서드를 다시 호출하지 않도록 주의하세요.

8. 장치 모션 이벤트

'devicemotion' 이벤트는 기기의 물리적 동작 상태가 변경될 때 트리거되는 JavaScript의 기기 이벤트입니다. 이 이벤트는 장치의 가속도, 회전율 등 관련 정보를 제공하며, 장치의 모션 상태를 감지하는 데 사용됩니다.

기기가 흔들리거나, 회전하거나, 모바일 기기에서 기기를 기울이는 등의 기타 물리적 동작이 발생하거나, 회전되면, 브라우저는 'devicemotion' 이벤트를 생성하고 관련 데이터를 이벤트 핸들러에 전달합니다.

`devicemotion` 이벤트 객체에는 다음 속성이 포함되어 있습니다.

- `가속도`: 기기의 가속도를 나타내며 3차원 좌표 형태로 표현됩니다. 즉 `{x:숫자, y:숫자, z:숫자}`입니다.
- `accelerationIncludeGravity` : 중력 가속도를 포함한 전체 가속도를 3차원 좌표로 표현합니다.
- `rotationRate`: 기기의 회전율을 나타내며 3차원 좌표로 표현됩니다. 즉 `{알파:숫자, 베타:숫자, 감마:숫자 }`입니다.
- `간격`: `devicemotion` 이벤트 생성 사이의 시간 간격을 나타냅니다.

다음은 `devicemotion` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `devicemotion` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 `event.acceleration`, `event.accelerationInclusiveGravity`, `event.rotationRate` 등의 속성을 통해 기기의 가속도, 회전율 등의 정보를 얻고 해당 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("devicemotion", function(event) {
  // 获取设备的加速度信息
  var acceleration = event.acceleration;
  var accelerationIncludingGravity = event.accelerationIncludingGravity;
  
  // 获取设备的旋转速率信息
  var rotationRate = event.rotationRate;
  
  // 执行其他操作,如根据加速度进行某些动作或旋转等
});

'devicemotion' 이벤트는 자주 트리거될 수 있으며 특정 트리거 빈도는 장치 및 브라우저 구현에 따라 다릅니다. 이벤트를 처리할 때 너무 자주 트리거되어 성능에 영향을 미치는 것을 방지하기 위해 필요에 따라 조절하거나 필터링하는 적절한 방법을 선택할 수 있습니다.

또한 'devicemotion' 이벤트를 사용하려면 장치 지원 및 사용자 인증이 필요합니다. 모바일 장치에서 사용자는 일반적으로 브라우저가 장치의 모션 센서에 액세스하도록 허용해야 합니다.

9. 장치 방향 이벤트

`deviceorientation` 이벤트는 기기의 방향이 변경될 때 트리거되는 JavaScript의 기기 이벤트입니다. 이 이벤트는 기기의 기울기, 회전, 방위각을 포함한 기기의 방향 정보를 제공합니다.

기기 방향을 변경하거나 휴대기기에서 기기를 회전하는 등 기기가 회전하거나 기울거나 방향이 변경되면 브라우저는 'deviceorientation' 이벤트를 생성하고 관련 데이터를 이벤트 핸들러에 전달합니다.

`deviceorientation` 이벤트 객체에는 다음 속성이 포함되어 있습니다.

- `알파`: z축을 기준으로 기기의 회전 각도를 나타내며 범위는 0~360도입니다.
- `베타`: x축을 기준으로 기기의 기울기 각도를 나타냅니다(-180~180도 범위).
- `감마`: y축을 기준으로 기기의 기울기 각도를 나타냅니다(-90~90도 범위).
- `absolute`: 기기 방향 정보가 절대값인지 여부를 나타냅니다. 'true'이면 절대적인 방향정보를 제공한다는 의미이고, 'false'이면 상대방향 정보를 제공한다는 의미이다.

다음은 `deviceorientation` 이벤트를 사용하는 기본 흐름입니다.

1. `addEventListener` 메소드를 사용하여 `deviceorientation` 이벤트를 `window` 객체에 바인딩합니다.
2. 이벤트 핸들러에서는 'event.alpha', 'event.beta', 'event.gamma' 등의 속성을 통해 장치의 방향 정보를 얻고 해당 작업을 수행할 수 있습니다.

샘플 코드는 다음과 같습니다.

window.addEventListener("deviceorientation", function(event) {
  // 获取设备的方向信息
  var alpha = event.alpha;
  var beta = event.beta;
  var gamma = event.gamma;
  
  // 执行其他操作,如根据方向信息调整页面布局或进行相应的动作等
});

'deviceorientation' 이벤트는 자주 트리거될 수 있으며 구체적인 트리거 빈도는 기기 및 브라우저 구현에 따라 다릅니다. 이벤트를 처리할 때 너무 자주 트리거되어 성능에 영향을 미치는 것을 방지하기 위해 필요에 따라 조절하거나 필터링하는 적절한 방법을 선택할 수 있습니다.

또한 'deviceorientation' 이벤트를 사용하려면 기기 지원 및 사용자 인증이 필요합니다. 모바일 장치에서 사용자는 일반적으로 브라우저가 장치의 방향 센서에 액세스하도록 허용해야 합니다.

Supongo que te gusta

Origin blog.csdn.net/zhangawei123/article/details/130930135
Recomendado
Clasificación