Chrome 54의 API 지원 중단 및 삭제

거의 모든 버전의 Chrome에서 제품, 성능, 웹 플랫폼 기능에 대한 상당한 수의 업데이트와 개선사항이 적용됩니다. 이 도움말에서는 9월 15일 현재 베타 버전인 Chrome 54의 지원 중단 및 삭제에 대해 설명합니다. 이 목록은 언제든지 변경될 수 있습니다.

언로드 핸들러에서 탐색 사용 중지

요약: Chrome을 HTML 사양 및 Firefox, Safari와 일치시키기 위해 window.onunload 이벤트 핸들러에서 모든 교차 출처 탐색이 허용되지 않습니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

이전 버전의 Chrome에서는 window.onunload 내에서 교차 출처 탐색이 중단될 수 있었습니다. window.location.href = '#fragment'를 설정하여 이 작업을 실행합니다. HTML 사양에 따르면 페이지 내 탐색만 언로드 핸들러에서 허용되며 이전 버전의 Chrome에서는 사양에 따라 다른 탐색 방법이 차단되었습니다. Chrome 54부터는 사양과 Firefox, Safari에 따라 이러한 탐색이 허용되지 않습니다.

HTTP/0.9 지원 중단

요약: HTTP/0.9는 지원이 중단되었습니다. 개발자는 최신 버전(HTTP/2 권장)으로 이동해야 합니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

HTTP/0.9는 HTTP/1.x의 전신입니다. 후속 모델의 많은 기능이 없습니다. 최신 웹의 특별한 관심사는 응답 헤더가 부족하다는 것입니다. 이러한 헤더가 없으면 HTTP/0.9 응답이 실제로 HTTP/0.9 응답인지 확인할 방법이 없습니다. 이로 인해 여러 문제가 발생할 수 있습니다. 예를 들어 다음과 같은 문제가 있습니다.

  • 특정 오류 응답을 유효한 HTTP/0.9 응답으로 처리하는 클라이언트
  • 요청 소켓을 닫지 못해 클라이언트가 응답을 무한정 또는 사용자가 요청을 만든 페이지에서 이동할 때까지 활성 상태로 유지되는 GET으로 처리하는 서버
  • 요청이 실패했음을 브라우저에 나타낼 수 없는 서버로, 캐싱 휴리스틱에 문제가 발생할 수 있습니다.

HTTP/0.9 문제를 해결하는 유일한 확실한 방법은 지원을 완전히 삭제하는 것입니다. 이러한 이유로 Chrome 54에서 HTTP/0.9 지원이 삭제되었습니다.

initTouchEvent 사용이 삭제됨

TL;DR: initTouchEvent은 사양 준수를 개선하기 위해 TouchEvent constructor으로 대체되어 지원 중단되었으며 Chrome 54에서 완전히 삭제될 예정입니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

오랫동안 개발자는 initTouchEvent API를 사용하여 Chrome에서 합성 터치 이벤트를 만들 수 있었습니다. 이러한 기능은 사이트에서 테스트하거나 일부 UI를 자동화하기 위해 터치 이벤트를 시뮬레이션하는 데 자주 사용됩니다. Chrome 49부터 이 지원 중단된 API에는 다음 경고가 표시됩니다 .

터치 이벤트 경고
TouchEvent.initTouchEvent는 지원 중단되었으며 2016년 9월경 M53에서 삭제될 예정입니다. 대신 TouchEvent 생성자를 사용하세요. 자세한 내용은 https://www.chromestatus.com/features/5730982598541312를 참고하세요.

터치 이벤트 사양에 포함되지 않는 것 외에도 이 변경사항이 좋은 여러 이유가 있습니다. Chrome의 initTouchEvent 구현은 Safari의 initTouchEvent API와 전혀 호환되지 않았으며 Android의 Firefox와도 달랐습니다. 마지막으로 TouchEvent 생성자를 훨씬 쉽게 사용할 수 있습니다.

이러한 이유로 사양을 따르기로 결정했으며 사양에 명시되어 있지 않고 유일한 다른 구현과도 호환되지 않는 API를 유지하지 않기로 했습니다. 대안이 필요한 개발자는 TouchEvent 생성자를 사용해야 합니다.

initTouchEvent API의 iOS 및 Android/Chrome 구현이 매우 다르기 때문에 사이트에는 종종 다음과 같은 코드가 있습니다(Firefox를 자주 잊음).

    var event = document.createEvent('TouchEvent');
    
    if(ua === 'Android') {
      event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
        300, 300, 200, 200, false, false, false, false);
    } else {
      event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
        200, false, false, false, false, touches, targetTouches, changedTouches, 0, 0);
    }
    
    document.body.dispatchEvent(touchEvent);

이는 사용자 에이전트에서 'Android'를 찾기 때문에 좋지 않습니다. Android의 Chrome이 일치하여 이 지원 중단에 도달합니다. 하지만 당분간 Android에는 다른 WebKit 및 이전 Blink 기반 브라우저가 있으므로 이전 API를 계속 지원해야 하므로 아직 삭제할 수는 없습니다.

웹에서 TouchEvent를 올바르게 처리하려면 window 객체에 TouchEvent가 있는지 확인하여 Firefox, IE Edge, Chrome을 지원하도록 코드를 변경해야 합니다. TouchEvent에 양수 'length'가 있는 경우(인수를 사용하는 생성자임을 나타냄) 해당 TouchEvent를 사용해야 합니다.

    if('TouchEvent' in&& window  TouchEvent>.length  0) {
      var touch = new Touch({
        identifier: 42,
        target: document.body,
        clientX: 200,
        clientY: 200,
        screenX: 300,
        screenY: 300,
        pageX: 200,
        pageY: 200,
        radiusX: 5,
        radiusY: 5
      });
    
      event = new TouchEvent("touchstart", {
        cancelable: true,
        bubbles: true,
        touches: [touch],
        targetTouches: [touch],
        changedTouches: [touch]
      });
    }
    else {
      event = document.createEvent('TouchEvent');
    
      if(ua === 'Android') {
        event.initTouchEvent(touchItem, touchItem, touchItem, "touchstart", window,
          300, 300, 200, 200, false, false, false, false);
      } else {
        event.initTouchEvent("touchstart", false, false, window, 0, 300, 300, 200,
          200, false, false, false, false, touches, targetTouches, 
          changedTouches, 0, 0);
      }
    }
    
    document.body.dispatchEvent(touchEvent);

KeyboardEvent.keyIdentifier 속성 삭제됨

요약: 지원이 거의 되지 않는 keyboardEvent.keyIdentifier 속성이 표준 기반 KeyboardEvent.key 속성으로 대체됩니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

keyboardEvent.keyIdentifier 속성은 2009년과 2010년에 W3C 사양의 일부였습니다. 하지만 WebKit에서만 구현되었습니다.

이 속성을 대체해야 하는 개발자는 표준 기반 KeyboardEvent.key 속성 또는 KeyboardEvent.code 속성 (지난봄에 게시한 도움말에 설명됨)을 사용할 수 있습니다. 전자는 Safari를 제외한 모든 주요 데스크톱 브라우저에서 지원되므로 가장 광범위한 구현 기반을 갖습니다. 후자는 현재 Chrome, Firefox, Opera에서 지원됩니다. 이 기능을 삭제하는 것은 KeyboardEvent.key 속성의 채택을 유도하기 위한 것입니다. Apple에서 이를 지원할지 여부에 대해서는 언급이 없지만, 지원 중단되었으며 (Chrome에서 아직 삭제되지 않음) KeyboardEvent.keyCodeKeyboardEvent.charCode 속성은 Safari에서 계속 사용할 수 있습니다.

MediaStream ended 이벤트 및 속성, onended 속성 삭제

TL;DR: ended 이벤트와 속성, onended 이벤트 핸들러는 미디어 캡처 및 스트림 사양에서 삭제되었기 때문에 삭제됩니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

ended 이벤트와 onended 이벤트 핸들러는 약 3년 동안 WebRTC 사양에 포함되지 않았습니다. 이벤트를 모니터링하려는 개발자는 MediaStreams 대신 MediaStreamTracks를 사용해야 합니다.

SVGSVGElement.viewPort 지원 중단

이 구현은 2012년부터 Chrome에서 작동하지 않았습니다. 이 속성은 다른 브라우저에는 전혀 없으며 사양에서 삭제되었습니다. 이러한 이유로 속성이 지원 중단됩니다. Chrome 55에서 삭제될 것으로 예상됩니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

SVGViewElement.viewTarget 지원 중단

SVGViewElement.viewTarget 속성은 SVG2.0 사양에 포함되지 않으며 사용량이 적거나 없습니다. 이 속성은 Chrome 54에서 지원 중단되었습니다. Chrome 56에서 삭제될 것으로 예상됩니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그

SVGZoomEvent 삭제

SVGZoomEvent는 SVG2.0 사양에 포함되지 않으며 Chromium에서 작동하지 않습니다. 이 기능은 여전히 감지할 수 있으므로 개발자에게 혼동을 줄 수 있습니다. 삭제됩니다.

삭제 의도 | Chromestatus 추적기 | Chromium 버그