Detekti gastigan sistemon en retumilo
Se vi skribas Progressive Web App kaj volas determini kian sistemon gastigas la agenton, simpla API povas helpi vin.
Mi eksplicite celas nur modernajn retajn apojn per la kodo en ĉi tiu artikolo. Detekto de la OS aŭ retumila versio estis fifame delikata en la pasinteco, do la novaj API-oj disponeblaj sur la "navigilo" provizas fortikan solvon por tiaj taskoj, tamen disponeblas nur en modernaj retumiloj.
Kontrolante la platformon
La sekva kodo montras al vi kiel fidinde determini la medion per Javascript. Ĝi aliras la "navigilon", objekton disponeblan sur la fenestro, kiu provizas tutan aron da API-oj por iom post iom plibonigi vian retejon.
/**
* Retrieve the host platform in a
* best-effort way w/ normalized output.
*/
export function getAgentSystem(){
if(!("navigator" in window)){
return "unknown";
}
// Use the modern 'web hints' provied by
// 'userAgentData' if available, else use
// the deprecated 'platform' as fallback.
const platform = (navigator.userAgentData?.platform || navigator.platform)?.toLowerCase();
if(platform.startsWith("win")) return "windows";
if(platform.startsWith("mac")) return "macos";
if(platform.startsWith("linux")) return "linux";
return "unknown";
}
// Just to give you an idea, the following properites
// are options for the legacy 'navigator.platform':
//
// HP-UX
// Linux i686
// Linux armv7l
// Mac68K
// MacPPC
// MacIntel
// SunOS
// Win16
// Win32
// WebTV OS
Kiel vi povas vidi, la logiko por determini kian sistemon gastigas vian aplikaĵon estas tre simpla kaj postulas nur kelkajn liniojn de kodo.
Ekzemploj por uzkazoj
Ofta uzokazo por determini la OS de la gastiganto estas provizi malsamajn klavarajn mallongajn kaj poste "kbd"-etikedojn en via kodo. Ekzemple, macOS uzas la "Komandon"-klavon, dum Vindozo kaj Linukso uzas la "Kontrolo"-klavon por multaj ŝparvojoj.
Vi ankaŭ povus ŝanĝi la stilon de via UI por pli bone akordiĝi kun la denaska UI de la gastiga sistemo, nur por nomi alian ekzemplon.