Chrome 54'te API'lerin Kullanımdan Kaldırılması ve Kaldırılması

Chrome'un hemen hemen her sürümünde üründe, performansında ve Web Platformu'nun yeteneklerinde çok sayıda güncelleme ve iyileştirme görüyoruz. Bu makalede, 15 Eylül itibarıyla beta sürümünde olan Chrome 54'teki desteği sonlandırma ve kaldırma işlemleri açıklanmaktadır. Bu liste herhangi bir zamanda değiştirilebilir.

Kaldırma işleyicide gezinmeleri devre dışı bırak

TL;DR: Chrome'un HTML spesifikasyonunun yanı sıra Firefox ve Safari ile uyumlu olması için window.onunload etkinlik işleyicilerde hiçbir kaynak arası gezinmeye izin verilmeyecektir.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

Chrome'un önceki sürümleri, kaynaklar arası gezinmenin window.onunload içinde kesintiye uğramasına izin veriyordu. window.location.href = '#fragment' ayarlayarak. HTML spesifikasyonuna göre, kaldırma işleyicilerinde yalnızca sayfa içi gezinmelere izin verilir ve Chrome'un önceki sürümlerinde spesifikasyonların gerektirdiği diğer gezinme yöntemleri engellenmiştir. Chrome 54'ten itibaren, Firefox ve Safari'nin yanı sıra spesifikasyonlara uygun hale getirmek için bu tür gezinmelerin yapılmasına izin verilmeyecektir.

HTTP/0.9 desteği sonlandırıldı

TL;DR: HTTP/0.9 kullanımdan kaldırılmıştır. Geliştiriciler daha yeni bir sürüme, tercihen HTTP/2'ye geçmelidir.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

HTTP/0.9, HTTP/1.x'in öncüsüdür. Onun haleflerinin pek çok özelliği eksik. Modern web'in en büyük endişelerinden biri yanıt başlıklarının olmamasıdır. Bunlar olmadan HTTP/0.9 yanıtının gerçekten bir HTTP/0.9 yanıtı olduğunu doğrulamanın yolu yoktur. Bu durum, çeşitli sorunlara yol açabilir. Diğer sorunların yanı sıra şunlara örnek olarak verilebilir:

  • Belirli hata yanıtlarını geçerli HTTP/0.9 yanıtları olarak işleyen istemciler.
  • İstek yuvasını kapatamayan sunucular, istemcilerin yanıtları, kalıcı olarak ya da kullanıcı istekte bulunan sayfadan ayrılana kadar askıda kalan GET olarak değerlendirmesini sağlar.
  • Tarayıcıya bir isteğin başarısız olduğunu belirtemeyen ve bu durum, önbelleğe alma buluşsal yöntemleriyle ilgili sorunlara neden olabilir.

HTTP/0.9 ile ilgili sorunları düzeltmenin tek hatasız yolu, desteği tamamen kaldırmaktır. Bu nedenle HTTP/0.9 desteği Chrome 54'te kaldırılmıştır.

initTouchEvent kullanımı kaldırıldı

TL;DR: initTouchEvent, spesifikasyon uyumluluğunu iyileştirmek amacıyla kullanımdan kaldırılan TouchEvent constructor sürümü yerine Chrome 54'te tamamen kaldırılacaktır.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

Geliştiriciler uzun bir süredir initTouchEvent API'yi kullanarak Chrome'da sentetik dokunma etkinlikleri oluşturabiliyorlar. Bunlar, sitenizdeki bazı kullanıcı arayüzlerini test etmek veya otomatikleştirmek amacıyla Dokunma Etkinlikleri'ni simüle etmek için sıkça kullanılır. Kullanımdan kaldırılan bu API, Chrome 49 sürümünden beri aşağıdaki uyarıyı göstermiştir .

Dokunma Etkinliği Uyarısı
TouchEvent.initTouchEvent desteği sonlandırılmış olup Eylül 2016 civarındaki M53 sürümünde kaldırılacaktır. Lütfen bunun yerine TouchEvent oluşturucuyu kullanın. Daha ayrıntılı bilgi için https://www.chromestatus.com/features/5730982598541312 adresini ziyaret edin.

Dokunma Etkinlikleri spesifikasyonunda yer almamakla birlikte, bu değişikliğin iyi olmasının çeşitli nedenleri vardır. initTouchEvent Chrome uygulaması Safari'nin initTouchEvent API'si ile hiç uyumlu değildi ve Android'deki Firefox'unkinden farklıydı. Son olarak, TouchEvent oluşturucunun kullanımı çok daha kolaydır.

Bu nedenlerle, belirtilmemiş veya diğer tek uygulamayla uyumlu olmayan bir API kullanmak yerine spesifikasyona uymaya karar verdik. Alternatife ihtiyaç duyan geliştiriciler TouchEvent oluşturucuyu kullanmalıdır.

initTouchEvent API'sinin iOS ve Android/Chrome uygulamaları son derece farklı olduğundan siteler çoğu zaman aynı şekilde koda sahiptir (sıklıkla Firefox'u unutur).

    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);

Kullanıcı Aracısı'nda "Android"i arar ve Android'deki Chrome eşleşecek ve bu şekilde kullanımdan kaldırılacaktır. Çünkü bu durum kötüdür. Android'de bir süre başka WebKit ve eski Blink tabanlı tarayıcılar olacağı için eski API'yi desteklemeniz gerekecek. Bu nedenle henüz kaldırılamaz.

Web'de TouchEvent öğelerini doğru şekilde işlemek için kodunuzu Firefox, IE Edge ve Chrome'u destekleyecek şekilde değiştirmelisiniz. Bunun için window nesnesinde TouchEvent olup olmadığını ve pozitif bir "length" değeri varsa (bağımsız değişken alan bir kurucu olduğunu belirtir) bunu kullanmanız gerekir.

    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);

KlavyeEvent.keyIdentifier özelliği kaldırıldı

TL;DR: Az desteklenen keyboardEvent.keyIdentifier özelliği kaldırılarak standartlara dayalı KeyboardEvent.key mülkü kullanılıyor.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

keyboardEvent.keyIdentifier özelliği kısaca 2009 ve 2010'da bir W3C spesifikasyonunun parçasıydı. Ancak bu özellik bugüne kadar yalnızca WebKit'te uygulanmıştır.

Bu özelliği değiştirmesi gereken geliştiriciler, standartlara dayalı KeyboardEvent.key özelliğini veya KeyboardEvent.code özelliğini (geçen ilkbaharda yaptığımız bir makalede açıklandığı gibi) kullanabilir. Birincisi, Safari hariç tüm önde gelen masaüstü tarayıcılarda desteklenen en geniş uygulama tabanına sahiptir. Daha sonraki sürümler şu anda Chrome, Firefox ve Opera'da desteklenmektedir. Bu özelliğin kaldırılması, KeyboardEvent.key mülkünün benimsenmesini artırmayı amaçlamaktadır. Apple'dan bunun desteklenip desteklenmeyeceğiyle ilgili bir kelime yok. Ancak desteği sonlandırılmış (ancak henüz Chrome'dan kaldırılmamıştır) KeyboardEvent.keyCode ve KeyboardEvent.charCode özellikleri Safari'de hâlâ kullanılabilir.

MediaStream sona eren etkinlik ile özelliği ve onended özelliğini kaldır

TL;DR: ended etkinliği ve özelliği ile onended etkinlik işleyicisi, Medya Yakalama ve Akışlar spesifikasyonundan kaldırıldıklarından kaldırılıyor.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

ended etkinliği veya onended etkinlik işleyicisi, yaklaşık üç yıldır WebRTC spesifikasyonunun bir parçası değildir. Etkinlikleri izlemek isteyen geliştiriciler MediaStreams yerine MediaStreamTracks kullanmalıdır.

SVGSVGElement.viewPort'u kullanımdan kaldır

Bu uygulama, 2012'den beri Chrome'da çalışmamaktadır. Bu özellik diğer tarayıcılarda hiç mevcut değildir ve spesifikasyondan kaldırılmıştır. Bu nedenlerden dolayı mülk kullanımdan kaldırılıyor. Chrome 55'te kaldırılması beklenmektedir.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

SVGViewElement.viewTarget öğesini kullanımdan kaldır

SVGViewElement.viewTarget özelliği, SVG2.0 spesifikasyonunun bir parçası değildir ve kullanımı azdır veya yoktur. Bu özellik Chrome 54'te kullanımdan kaldırılmıştır. Chrome 56'da kaldırılması beklenmektedir.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası

SVGZoomEvent'i kaldır

SVGZoomEvent, SVG2.0 spesifikasyonunun bir parçası değildir ve Chromium'da çalışmaz. Özellik hâlâ algılanabilir olmasına rağmen geliştiricilerde kafa karışıklığı yaratabilir. Kaldırılacak.

Kaldırma Amacı | Chromestatus İzleyici | Chromium Hatası