C# - Böngésző típus figyelő kontrol készítése

forráskód letöltése
Nagy problémát okoz webes alkalmazások fejlesztésénél az a tény, hogy a böngészők közötti nagy eltérések miatt sok esetben egyáltalán nem úgy működik web oldalunk, mint ahogy azt elterveztük. Ilyenkor vagy megpróbáljuk minden forgalomban lévő böngésző különbségeit figyelembe véve elkészíteni web oldalainkat és ezzel lemondunk sok olyan jó és hasznos lehetőségről, mely az egyik böngészőben adott, de a másikban nem, vagy azt mondjuk, hogy csak egy böngészőt veszünk figyelembe és ezzel azt áldozzuk fel, hogy más típusú böngészővel érkező felhasználóink nem fogják tudni web oldalunkat használni teljes mértékben.
Ha ezt az utóbbi esetet választjuk, akkor hasznos egy olyan figyelmeztető üzenet minden web oldalunkon, mely csak akkor jelenik meg, ha a felhasználó nem az általunk választott böngészővel próbálja megnézni a web lapunkat.
Mellékelt példában készítünk egy olyan kontrolt, melynek tartalma csak akkor lesz látható a web oldalon, ha a felhasználó nem Internet Explorer-t használ, mikor web oldalunkon jár, így ekkor figyelmeztethetjük és biztosíthatjuk számára az Internet Explorer letöltését is rögtön.
Mellékelt példa megnyitása előtt szükséges egy AppLock nevű virtuális könyvtár létrehozása, mely a mellékelt példa könyvtárára mutat. Ehhez nyissa meg a mellékelt mappa Tulajdonság ablakát és itt a Webmegosztás lapon engedélyezze a mappa megosztását olvasási és parancsfájlok futtatási jogával.
A Web Custom Control-ból létrehozunk egy WebBrowserWatchControl-t. Ehhez négy új property-t készítünk:
  • IELink - sztring típusú. Itt adhatunk meg egy URL-t, ahonnan az Internet Explorer letölthető.
  • IEImage - sztring típusú. Itt adhatjuk meg egy képnek az elérési útvonalát, melyre kattintva indítható majd az Internet Explorer letöltése.
  • Message - sztring típusú. Itt adható meg a kontrol által megjelenítendő szöveges üzenet.
  • Debug - logikai típusú. Ezt a property-t csak a fejlesztés idejére hozzuk létre. Célja az, hogy amikor ezt igazra állítjuk, akkor megjelenjen a kontrol tartalma a böngésző típusától függetlenül, így tudjuk tesztelni annak működését. Hamis érték esetén csak akkor jelenik meg a kontrol tartalma, ha nem Internet Explorer-t használunk.
Amikor tehát a kontrol tartalmának az előállítására kerül a sor, akkor ellenőriznünk kell, hogy a Debug property értéke igaz-e. Ha ez nem, akkor pedig azt kell vizsgálnunk, hogy Internet Explorer-t használ-e a kliensünk vagy valami mást. Ehhez a Context osztály Request property-jének Browser property-je segít. Ez a property egy HttpBrowserCapabilities osztályt takar, mely a kliens által használt böngésző tulajdonságait, lehetőségeit tartalmazza. Így például nem csak annak típusát, de akár verziószámát is lekérdezhetjük, vagy tájékozódhatunk arról, hogy képes-e a kliensünk javascript-ek futtatására, vagy hogy milyen típusú operációs rendszert használ. Számunkra most a böngésző típusa lesz az érdekes, melyet a Browser nevű property-ből olvashatunk ki. Ha ez egy „IE” sztringet tárol, akkor biztosak lehetünk abban, hogy a felhasználónk Internet Explorer-t használ.
  protected override void Render(HtmlTextWriter output)
  {
      if (debug || Context.Request.Browser.Browser!="IE")
      {
        output.Write("...