Yayın: 9 Ocak 2024
Benim gibi bir web sitesini işletirken (www.danyelkoca.com) sitenizi ziyaret eden insanlar hakkında bilgi edinmek son derece önemlidir.
Ölçmediğiniz şeyi geliştiremezsiniz.
Peter Drucker
Kullanıcılarınızla ilgili önemli bir bilgi, sitenizi ziyaret ettikleri sırada kullandıkları cihaz ve tarayıcıdır.
Neden? Bu bilgi, aşağıdaki gibi örnek eylemlerle sitenizi geliştirmenize yardımcı olabilir:
Şimdi kodumuza derinlemesine bakalım!
Cihazı tanımlamak için JavaScript'te window.navigator.userAgent
işlevini kullanırız.
Bu işlev aşağıdaki gibi bir dize döndürür:
console.log(window.navigator.userAgent);
// >> Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Sonuç, bilgisayarımda gördüğüm şeydir, yani Chrome Tarayıcısı ile kullanılan bir MacBook Pro.
Sonucu analiz edelim:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/120.0.0.0 Safari/537.36
Bu işlevin sadece cihazı çıkarmadığını görüyoruz
Macintosh; Intel Mac OS X 10_15_7
ancak diğer bilgileri de döndürür
Mozilla/5.0, AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
Şimdilik, cihazı ifade eden çıktının bir kısmına odaklanıyoruz
Macintosh; Intel Mac OS X 10_15_7
Bu, bu web sitesine bir MacBook üzerinden eriştiğimi doğru bir şekilde anlar, ancak bu MacBook'un modeli hakkında bilgi yoktur (Örneğin, Air, Pro)
Ayrıca, birden fazla şeyi yanlış alır. MacBook'um Intel çipi kullanmıyor (M1) ve macOS 10.15.7 kullanmıyor.
Dolayısıyla, cihazı belirlemek için bu işlevi kullanırken, yalnızca cihazı çıkarın, çünkü cihazın modeli ve cihazda çalışan işletim sistemi yanıltıcı olabilir.
userAgent dizesini kullanarak, kullanıcının cihazını, bu StackOverflow yanıtı tarafından verilen koşullara dayanarak mobil veya masaüstü olarak sınıflandırmak için bir regex yazabiliriz.
let userAgentString = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
function deviceDetection(userAgentString) {
let device = 'Masaüstü';
if (
/(android|bbd+|meego).+mobile|avantgo|bada/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)/|plucker|pocket|psp|series(4|6)0|symbian|treo|up.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(
userAgentString
)
) {
device = 'Mobil';
}
return device;
}
console.log(browserDetection(userAgentString));
// >> Masaüstü
Sadece tarayıcıyı ifade eden çıktıya odaklanalım
Mozilla/5.0, AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36
userAgent üzerinden tarayıcı tespiti son derece karmaşıktır, çünkü bu çıktı kendisi 3 tarayıcıyı içerir:
MDN Web Dokümantasyonları'na göre, UserAgent dizesini kullanarak tarayıcı hakkında çıkarımda bulunmak için aşağıdaki tablo kullanılabilir:
Motor | İçermesi Gereken | İçermemesi Gereken |
---|---|---|
Firefox | Firefox/xyz | Seamonkey/xyz |
Seamonkey | Seamonkey/xyz | |
Chrome | Chrome/xyz | Chromium/xyz veya Edg.*/xyz |
Chromium | Chromium/xyz | |
Safari | Safari/xyz | Chromium/xyz veya Edg.*/xyz |
Opera 15+ (Blink tabanlı motor) | OPR/xyz | |
Opera 15+ (Presto tabanlı motor) | Opera/xyz |
MDN tarafından belirtilen koşullara dayanarak tarayıcıyı tanımlamak için bir regex yazalım.
let userAgentString = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
function browserDetection(userAgentString) {
let browser = 'bilinmeyen';
if (/Firefox/.*/.test(userAgentString) && !/Seamonkey/.*/.test(userAgentString))
browser = 'Firefox';
else if (/Seamonkey/.*/.test(userAgentString)) browser = 'Seamonkey';
else if (
/Chrome/.*/.test(userAgentString) &&
!/Chromium/.*/.test(userAgentString) &&
!/Edg.*/.*/.test(userAgentString)
)
browser = 'Chrome';
else if (/Chromium/.*/.test(userAgentString)) browser = 'Chromium';
else if (
/Safari/.*/.test(userAgentString) &&
!/Chromium/.*/.test(userAgentString) &&
!/Edg.*/.*/.test(userAgentString)
)
browser = 'Safari';
else if (/OPR/.*/.test(userAgentString)) browser = 'Opera 15+ (Blink tabanlı motor)';
else if (/Opera/.*/.test(userAgentString)) browser = 'Opera 15+ (Presto tabanlı motor)';
return browser;
}
console.log(browserDetection(userAgentString));
// >> Chrome
Tarayıcıyı başarıyla sınıflandırdık, ki bu gerçekten de Chrome idi. Ancak dikkatli gözler, userAgent dizesimin Safari'nin koşullarını da karşıladığını fark edecektir. Chrome koşulu, Safari'den önce test edildiği için tarayıcı Chrome olarak sınıflandırılır, ancak Chrome'dan önce Safari'yi test etmek her zaman beklenen sonuçları verir mi, bunun için daha fazla test yapılması gerekmektedir.
Yukarıdaki 2 işlevi kullanarak - deviceDetection
, browserDetection
-
artık kullanıcılarınızın cihazını ve tarayıcısını başarılı bir şekilde sınıflandırabilirsiniz.
window.navigator.userAgent
tüm modern tarayıcılarla
uyumlu olduğundan, bunu güvenle kullanabilirsiniz. Herhangi bir sorunuz varsa, aşağıdaki yorum bölümünde
bana bildirebilirsiniz.
Mutlu kodlamalar!
Bu blog İngilizce'den ChatGPT ile çevrilmiştir. Herhangi bir belirsizlik durumunda İletişim sayfasından bana ulaşabilirsiniz.
Yorum bırak
Yorumlar
Diğer bloglara bak
2024/06/19
Svelte ve JavaScript ile Basit ve Dinamik Bir Tooltip Yaratma Yöntemi
2024/06/17
JavaScript ile Tokyo'nun İnteraktif Haritasını Oluşturun
2024/06/14
Matplotlib'de Japonca Karakter Sorununu Çözme Yöntemi
2024/06/13
Kitap İncelemesi | Ötekiyle Konuşmak by Malcolm Gladwell
2024/06/07
Japonca'da En Sık Kullanılan 3.000 Kanji
2024/06/07
VSCode'da Regex Kullanarak Replace Yapma Yöntemi
2024/06/06
Svelte'de Readable Store Kullanmayın
2024/06/05
Dosyaları Gzip ve Pako ile Sıkıştırarak Web Sitesinin Yükleme Hızını Artırın
2024/05/31
Web Sayfasında Farenin Uzerinde Oldugu Kelimeyi JavaScript ile Bulun
2024/05/29
Svelte ve SVG ile Interaktif Harita Oluşturun
2024/05/28
Kitap İncelemesi | Geleneklere Uymayanlar Dünyayı Nasıl İleri Taşıyor? by Adam Grant & Sheryl Sandberg
2024/05/27
Javascript Kullanarak Sudoku Nasıl Çözülür?
2024/05/26
Web Siteme Gelen Trafiği Bir Ayda Nasıl 10 Kat Artırdım?
2024/05/24
Hayat Bisiklet Sürmek Gibidir
2024/05/19
JavaScript'te Backtracking Algoritması ile Tamamlanmış Sudoku Oluşturun
2024/05/16
Tailwind Neden Harikadır ve Web Geliştirmeyi Nasıl Kolay Hale Getirir?
2024/05/15
Python ve Git Hooks ile Otomatik Olarak Site Haritası Oluşturma
2024/05/14
Kitap İncelemesi | Çok Yönlü - Başarı İçin Neden Çok Şeyle İlgilenmeliyiz? by David Epstein
2024/05/13
Svelte ve SvelteKit nedir?
2024/05/12
SvelteKit ile Internationalization (Çoklu Dil Desteği)
2024/05/11
Svelte'de Caching ile Deploy Süresini Azaltın
2024/05/10
Svelte ve Intersection Oberver ile Lazy-Load
2024/05/10
Genetik Algoritma İle Hisse Senedi Portföyü Optimizasyonu
2024/05/09
ShapeFile Formatini SVG Formatina Degistirme Yontemi
2024/05/08
Svelte'de Reaktivite: Variables, Binding, ve Key Fonksiyonu
2024/05/07
Kitap İncelemesi | Savaş Sanatı - Sun Tzu
2024/05/06
Specialistlik Bitti. Yaşasın Generalistlik!
2024/05/03
2018 Milletvekili Seçimlerinde Yaşa Göre Parti Eğilimi
2024/05/01
Python Selenium Ile Secmen Veritabani Olusturma
2024/04/30
Svelte ve Tailwind Ile Infinite Scroll Yapma Yontemi
2024/04/29
1 Yıl İçerisinde Japonca Konuşabilmek
2024/04/25
Svelte ve Tailwind ile Kullanıma Hazır Web Sitesi Şablonu
2024/01/29
Tembel Muhendisler Kotu Urunler Yapar
2024/01/28
Mukemmellik Uzerine
2024/01/28
MacBook'ta PDF'i PNG'ye Cevirme Yontemi
2023/12/31
2023'u Kapatiyoruz: Bu Yil Okunan 24 Kitap
2023/12/30
Python PIL Kullarak Foto Kolaji Yapma Yontemi
2024/01/19
ChatGPT Cevap Anatomisi