Kiel determini OS en retumilo

Uzu modernajn API-ojn por preni informojn pri la gastiga sistemo de via retejo

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.