Chrome 50'de 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 platformunun özelliklerinde çok sayıda güncelleme ve iyileştirme görüyoruz.

Chrome 50'de (Tahmini beta tarihi: 10 - 17 Mart) Chrome'da bir dizi değişiklik yapıldı. Bu liste herhangi bir zamanda değiştirilebilir.

Güvenli olmayan bağlamlarda AppCache desteği sonlandırıldı

TL;DR: Siteler arası komut dosyası çalıştırmayı engellemek için güvenli olmayan kaynaklarda AppCache'i kullanımdan kaldırıyoruz. Chrome 52'de bu özelliğin yalnızca HTTPS üzerinden içerik sunan kaynaklarda çalışmasını bekliyoruz.

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

AppCache, bir kaynağa çevrimdışı ve kalıcı erişim sağlayan bir özelliktir. Bu özellik, siteler arası komut dosyası çalıştırma saldırısı için güçlü bir ayrıcalık artırmadır. Güvenli olmayan kaynaklardaki güçlü özellikleri kaldırmaya yönelik daha geniş kapsamlı çalışmalar kapsamında.

Chrome, bu saldırı vektörünü yalnızca HTTPS üzerinden izin vererek kaldırıyor. Chrome 50'de HTTP desteğini kullanımdan kaldırıyor ve Chrome 52'de bu desteği tamamen kaldırmayı planlıyoruz.

Document.defaultCharset kaldırıldı

TL;DR: document.defaultCharset, spesifikasyon uyumluluğunu iyileştirmek için kaldırılmıştır.

Kaldırma Amacı | Chromestatus İzleyici | CRBug Sorunu

Chrome 49'da kullanımdan kaldırılan document.defaultCharset, kullanıcının bölgesel ayarlarına göre sisteminin varsayılan karakter kodlamasını döndüren salt okunur bir özelliktir. Tarayıcıların, HTTP Yanıtında veya sayfaya yerleştirilmiş meta etiketteki karakter kodlama bilgilerini kullanma şekli nedeniyle bu değeri korumanın yararlı olmadığı tespit edilmiştir.

Bunun yerine, HTTP başlığında belirtilen ilk değeri almak için document.characterSet kullanın. Bu mevcut değilse <meta> öğesinin charset özelliğinde belirtilen değeri alırsınız (örneğin, <meta charset="utf-8">). Son olarak bunların hiçbiri mevcut değilse kullanıcının sistem ayarı document.characterSet olur.

Bu gitHub sorununda, bu özelliği belirtmemenin nedenleri hakkında daha fazla bilgi edinebilirsiniz.

TL;DR: HTMLLinkElement özelliğinin rel özelliği için subresource değeri desteğini kaldırın.

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

<link> üzerindeki subresource özelliğinin amacı, tarayıcının boşta kalma süresinde bir kaynağı önceden getirmekti. Tarayıcı bir sayfayı indirdikten sonra, diğer sayfalar gibi kaynakları önceden indirebiliyordu. Böylece, kullanıcılar tarafından istendiğinde bu kaynaklar tarayıcı önbelleğinden alınabiliyordu.

subresource özelliğinde bir dizi sorun yaşandı. İlk olarak, proje hiç beklendiği gibi çalışmadı. Referans verilen kaynaklar düşük öncelikli olarak indirildi. Bu özellik, Chrome dışındaki tarayıcılarda hiçbir zaman uygulanmamıştır. Chrome uygulamasında kaynakların iki kez indirilmesine neden olan bir hata oluştu.

İçeriği önceden yükleyerek kullanıcı deneyimini iyileştirmek isteyen geliştiricilerin birçok seçeneği vardır. Bunların en özelleştirilebilir olanları, önbelleğe alma özelliğinden ve Caches API'den yararlanmak için bir hizmet çalışanı oluşturmaktır. Ek çözümler arasında preconnect, prefetch, preload ve prerender dahil olmak üzere rel özelliği için başka değerler de yer alır. Bu seçeneklerden bazıları deneyseldir ve yaygın olarak desteklenmeyebilir.

Güvenli olmayan TLS sürümü yedeğini kaldır

TL;DR: Sunucuları, TLS'nin daha az güvenli veya güvenli olmayan sürümlerini kullanarak veri döndürmeye zorlamak için kullanılan mekanizmayı kaldırın.

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

Taşıma katmanı güvenliği (TLS), uyumluluğa zarar vermeden yeni TLS sürümlerinin kullanıma sunulmasına olanak tanıyan, sürümler üzerinde anlaşmaya yönelik bir mekanizmayı destekler. Bazı sunucular bunu, tarayıcıların güvenli olmayan uç noktaları yedek olarak kullanmasını gerektirecek şekilde uyguladı. Bu nedenle, saldırganlar yalnızca yanlış yapılandırılmış web sitelerini değil, herhangi bir web sitesini TLS'nin daha zayıf sürümleri için pazarlık yapmaya zorlayabilir.

Etkilenen siteler ERR_SSL_FALLBACK_BEYOND_MINIMUM_VERSION hizmetine bağlanamaz. Yöneticiler sunucu yazılımlarının güncel olduğundan emin olmalıdır. Sorun yine de çözülmezse bir düzeltmenin olup olmadığını öğrenmek için sunucu yazılımı tedarikçi firmasıyla iletişim kurun.

KlavyeEvent.prototype.keyLocation öğesini kaldırma

TL;DR: Keyboard.prototype.location özelliği için gereksiz bir takma adı kaldırın.

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

Bu özellik, Keyboard.prototype.location özelliğinin takma adıdır. Bu özellik, bir klavyede birden fazla yerde bulunan tuşlar arasında açıklama yapmaya olanak tanır. Örneğin, her iki özellik de geliştiricilerin genişletilmiş bir klavyedeki iki Enter tuşunu birbirinden ayırt edebilmesine olanak tanır.

RTCPeerConnection yöntemlerinde gereken hata ve başarı işleyiciler

TL;DR: WebRTC RTCPeerConnection yöntemleri createOffer() ve createAnswer() artık bir hata işleyicinin yanı sıra başarı işleyici de gerektirir. Daha önce bu yöntemler yalnızca bir başarı işleyici ile çağrılabiliyordu. Bu kullanım desteği sonlandırılmıştır.

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

Chrome 49'da, hata işleyici sağlamadan setLocalDescription() veya setRemoteDescription() çağrılarını yaparsanız bir uyarı ekledik. Hata işleyici bağımsız değişkeni Chrome 50 sürümünden itibaren zorunludur.

Bu, WebRTC spesifikasyonunun gerektirdiği şekilde, bu yöntemlerle ilgili vaatler verme sürecini açıklığa kavuşturmanın bir parçasıdır.

WebRTC RTCPeerConnection demosundan bir örnek (main.js, satır 126) aşağıda verilmiştir:

    function onCreateOfferSuccess(desc) {
      pc1.setLocalDescription(desc, function() {
         onSetLocalSuccess(pc1);
      }, onSetSessionDescriptionError);
      pc2.setRemoteDescription(desc, function() {
        onSetRemoteSuccess(pc2);
      }, onSetSessionDescriptionError);
      pc2.createAnswer(onCreateAnswerSuccess, onCreateSessionDescriptionError);
    }

Hem setLocalDescription() hem de setRemoteDescription() öğelerinin bir hata işleyicisi olduğunu unutmayın. Yalnızca başarılı bir işleyici bekleyen eski tarayıcılar, varsa hata işleyici bağımsız değişkenini yoksayar; bu kodun eski bir tarayıcıda çağrılması bir istisnaya neden olmaz.

Genel olarak, üretim WebRTC uygulamalarında uygulamaları spesifikasyon değişikliklerinden ve ön ek farklarından yalıtmak için WebRTC projesi tarafından yönetilen bir dolgu olan adapter.js'i kullanmanızı öneririz.

XMLHttpRequestprogressEvent artık desteklenmiyor

TL;DR: XMLHttpRequestProgressEvent arayüzü, position ve totalSize özellikleriyle birlikte kaldırılacaktır.

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

Bu etkinlik, position ve totalSize Gecko uyumluluk özelliklerini desteklemek için gerçekleşmişti. Mozilla 22'de üçü için de destek kaldırıldı ve işlevler uzun süredir ProgressEvent yerini aldı.

     var progressBar = document.getElementById("p"),
          client = new XMLHttpRequest()
      client.open("GET", "magical-unicorns")
      client.onprogress = function(pe) {
        if(pe.lengthComputable) {
          progressBar.max = pe.total
          progressBar.value = pe.loaded
        }
      }

Ön ekli Şifrelenmiş Medya Uzantılarını kaldır

TL;DR: Önek içeren şifrelenmiş medya uzantıları kaldırıldı ve bunların yerine spesifikasyon tabanlı, öneksiz bir değişim yapıldı.

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

Chrome 42'de, şifrelenmiş medya uzantılarının spesifikasyona dayalı ve öneksiz bir sürümünü gönderdik. Bu API, HTMLMediaElement ile kullanılacak Dijital Hak Yönetimi sistemlerini keşfetmek, seçmek ve bunlarla etkileşime geçmek için kullanılır.

Bu yaklaşık bir yıl önceydi. Öneksiz sürüm, önek eklenmiş sürümden daha fazla özelliğe sahip olduğundan, API'nin önek eklenmiş sürümünü kaldırmanın zamanı gelmiştir.

SVGElement.offset özellikleri için desteği kaldırma

TL;DR: SVGElement için ofset özellikleri, HTMLElement ürününde daha geniş kapsamlı desteklenen mülklerin ön plana çıkarılarak sağlanmıştır.

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

Kaydırma özellikleri uzun süredir hem HTMLElement hem de SVGElement tarafından desteklenmektedir. Ancak Gecko ve Edge bunları yalnızca HTMLElement üzerinde destekler. Tarayıcılar arasında tutarlılığı artırmak için bu özellikler Chrome 48'de kullanımdan kaldırılmıştır ve şu anda kaldırılmıştır.

Eşdeğer özellikler HTMLElement kapsamında olsa da alternatif bir çözüm arayan geliştiriciler getBoundingClientRect()