Modern Web'i Şekillendiren Tuhaf API'ler: Teknoloji Kararlarının Arkasındaki İlginç Hikaye

Modern Web'i Şekillendiren Tuhaf API'ler: Teknoloji Kararlarının Arkasındaki İlginç Hikaye

Haz 25, 2026 web-development browser-apis history-api frontend-development backward-compatibility single-page-applications javascript web-standards developer-experience

pushState()'in Görmezden Gelinen Parametresi: Web'in Garip Mirası

Hadi küçük bir oyun oynayalım: Bildiğin en tuhaf tarayıcı API'si hangisi?

Frontend geliştiricisiyseniz, muhtemelen aklınıza canPlayType() geldi. HTMLMediaElement üzerindeki bu metod, üç farklı değer döndürebilir: boş string ("yok"), "probably" veya "maybe". Olasılıklı bir cevap, muğlak bir dilde paketlenmiş. Açıkçası biraz karışık bir durum.

Ama asıl ilginç olan başka bir API var: History.pushState().

Üç Parametre, Bir Tanesi Çöp

pushState() çağrıldığında üç parametre vermeniz beklenir: state, title ve url. State nesnesi mantıklıdır—kullanıcı geri tuşuna bastığında uygulamanızın verileri geri yüklemesine olanak tanır. URL parametresi de işe yarar; sayfa yeniden yüklenmeden tarayıcının adres çubuğunu güncellemenizi sağlar.

Peki ya title parametresi? Tamamen görmezden gelinir. Tüm büyük tarayıcılar bu parametreyi olduğu gibi çöpe atar.

Peki neden var bu?

2008 yılında, History API ilk taslak olarak hazırlandığında, birisi tarayıcıların her history entry için özel bir başlık belirlemesine izin vermesi gerektiğini düşündü. Mantık şuydu: Single Page Application'ınız uygulama içinde "Kontrol Paneli" gösterebilir, ama tarayıcı geçmişinde "Analiz Raporu" olarak kaydedilebilirdi.

O zamanlar mantıklı bir fikir gibi görünüyordu. Ama tarayıcılar kısa sürede potansiyel sorunları gördü: Ya kullanıcı bir history entry'yi yer imlerine ekler ve başlık, tarayıcı sekmelerinde gördüğüyle uyuşmazsa?

Bu karmaşayla uğraşmak yerine, tarayıcılar basit bir çözüm seçti: parametreyi tamamen görmezden gelmek. Ancak o zamanlar milyonlarca site zaten üç parametre bekleyerek uygulama geliştirmişti. Parametreyi kaldırmak üretimdeki siteleri bozar, isteğe bağlı yapmak ise mevcut pushState(state, url) çağrılarıyla karışıklığa yol açar.

Spec'in bulduğu zarif çözüm: Parametrenin adını unused olarak değiştirmek ve dokümanlara "hiçbir etkisi yok" diye yazmak.

Web'in Kirli Sırrı

İşte web'in kirli sırrı: Mevcut kodu asla bozmak, neredeyse her şeyden önce geliyor. Web, 2008'den kalma kodların bugünün tarayıcılarında çalışmasını sağlamak için var gücüyle çabalıyor.

Bu felsefe, NameOcean'da statik siteleri ve denenmiş web teknolojilerini savunmamızın tam da nedeni. Sadeliğin gücünü anlıyoruz.

Bir şey inşa ederken—medya arşivleri, dokümantasyon, açılış sayfaları—vanilya web teknolojisinin sunduğu kararlılık bir kısıtlama değil, bir avantaj. Aynı mantık domain kayıt ve hosting sağlayıcı seçiminde de geçerli. Uzun vadeli düşünen şirketleri tercih edin. Web ortadan kalkmayacak ve bugün üzerine inşa ettiğiniz teknolojiler on yıl sonra da çalışmalı.

Geliştiricilere ve Girişimcilere Ders

Bazen "hatalı" karar kalıcı hale gelir. Bunun nedeni doğru olması değil, çok fazla şeyin onun üzerine inşa edilmiş olmasıdır. Bu, web'in bir hatası değil—milyonlarca sitenin sorunsuz çalışmasını sağlayan bir özellik.

Bir dahaki sefere tuhaf bir API veya kullanılmayan bir parametreyle karşılaştığınızda, şunu hatırlayın: Yıllar önce birisi bir karar verdi ve bu karar artık web'in temeline oyulmuş durumda. Bu tuhaflılara saygı gösterin. İşleri çalışır halde tutan şey bu.

Read in other languages:

RU BG EL CS UZ SV FI RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN