تشخیص مرورگر موبایل در صفحات وب
دوشنبه 5 مرداد 1394با ورود موبایل به دنیای اینترنت و امکان گشت و گذار در اینترنت توسط تلفن های سیار، امروزه نمایش درست صفحات وب در اینگونه دستگاه ها به یکی از دغدغه های توسعه گران وب تبدیل شده است.
با ورود موبایل به دنیای اینترنت و امکان گشت و گذار در اینترنت توسط تلفن های سیار، امروزه نمایش درست صفحات وب در اینگونه دستگاه ها به یکی از دغدغه های توسعه گران وب تبدیل شده است.
صفحات وب با توجه به طول و عرض آن ها و استفاده از اسکریپت ها و غیره، معمولا مناسب نمایش در تلفن های همراه نیستند و در نتیجه معمولا این صفحات در مرورگر تلفن همراه به شکل نامناسبی نمایش داده می شوند.
لذا لازم است صفحات را با استانداردهای خاصی طراحی نمود تا مناسب نمایش در تلفن های همراه شوند.
در این ترفند روشی را معرفی خواهیم نمود که مشخص می نماید که بازدید کننده وب سایت آیا از یک مرورگر معمولی استفاده می نماید یا یک مرورگر موبایل. در نیتجه می توان بازدید کننده را به صفحات مناسب مرورگر خود هدایت نمود.
در قسمت زیر یک متد استاتیک را ملاحظه می نمایید که مقدار برگشتی آن یک مقدار bool می باشد.
در صورتی که مقدار برگشی این متد true باشد، مرورگر موبایل می باشد و در غیر اینصورت مرورگر معمولی می باشد.
public static bool isMobileBrowser() { //GETS THE CURRENT USER CONTEXT HttpContext context = HttpContext.Current; //FIRST TRY BUILT IN ASP.NT CHECK if (context.Request.Browser.IsMobileDevice) { return true; } //THEN TRY CHECKING FOR THE HTTP_X_WAP_PROFILE HEADER if (context.Request.ServerVariables["HTTP_X_WAP_PROFILE"] != null) { return true; } //THEN TRY CHECKING THAT HTTP_ACCEPT EXISTS AND CONTAINS WAP if (context.Request.ServerVariables["HTTP_ACCEPT"] != null && context.Request.ServerVariables["HTTP_ACCEPT"].ToLower().Contains("wap")) { return true; } //AND FINALLY CHECK THE HTTP_USER_AGENT //HEADER VARIABLE FOR ANY ONE OF THE FOLLOWING if (context.Request.ServerVariables["HTTP_USER_AGENT"] != null) { //Create a list of all mobile types string[] mobiles = new[] { "midp", "j2me", "avant", "docomo", "novarra", "palmos", "palmsource", "240x320", "opwv", "chtml", "pda", "windows ce", "mmp/", "blackberry", "mib/", "symbian", "wireless", "nokia", "hand", "mobi", "phone", "cdm", "up.b", "audio", "SIE-", "SEC-", "samsung", "HTC", "mot-", "mitsu", "sagem", "sony" , "alcatel", "lg", "eric", "vx", "NEC", "philips", "mmm", "xx", "panasonic", "sharp", "wap", "sch", "rover", "pocket", "benq", "java", "pt", "pg", "vox", "amoi", "bird", "compal", "kg", "voda", "sany", "kdd", "dbt", "sendo", "sgh", "gradi", "jb", "dddi", "moto", "iphone" }; //Loop through each item in the list created above //and check if the header contains that text foreach (string s in mobiles) { if (context.Request.ServerVariables["HTTP_USER_AGENT"]. ToLower().Contains(s.ToLower())) { return true; } } } return false; }
- C#.net
- 1k بازدید
- 2 تشکر