Hoe om die bedryfstelsel in die blaaier te bepaal

Gebruik moderne API's om inligting oor die gasheerstelsel van jou webtoepassing op te spoor

Bespeur gasheerstelsel in blaaier

As jy 'n progressiewe webtoepassing skryf en wil vasstel watter soort stelsel die agent huisves, kan 'n eenvoudige API jou help.

Ek teiken uitdruklik net moderne webtoepassings met die kode in hierdie artikel. Opsporing van die bedryfstelsel of blaaierweergawe was in die verlede berug broos, so die nuwe API's wat op die "navigator" beskikbaar is, bied 'n robuuste oplossing vir sulke take, maar is tog net in moderne blaaiers beskikbaar.

Kontroleer die platform

Die volgende kode wys jou hoe om die omgewing betroubaar via Javascript te bepaal. Dit kry toegang tot die "navigator", 'n voorwerp wat op die venster beskikbaar is wat 'n hele stel API's verskaf om jou webtoepassing progressief te verbeter.

/**
 * 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

Soos u kan sien, is die logika om te bepaal watter soort stelsel u toepassing huisves baie eenvoudig en benodig slegs 'n paar reëls kode.

Voorbeelde vir gebruiksgevalle

'n Algemene gebruiksgeval vir die bepaling van die gasheer se bedryfstelsel is om verskillende sleutelbordkortbroeke en vervolgens "kbd"-etikette in jou kode te verskaf. Byvoorbeeld, macOS gebruik die "Command"-sleutel, terwyl Windows en Linux die "Control"-sleutel vir baie kortpaaie gebruik.

Jy kan ook die stilering van jou UI verander om beter in lyn te wees met die inheemse UI vanaf die gasheerstelsel, om net nog 'n voorbeeld te noem.