تشخیص مرورگر موبایل در صفحات وب

دوشنبه 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;
}

آموزش سی شارپ

hamzeh ghamkhar

نویسنده 3 مقاله در برنامه نویسان
  • C#.net
  • 1k بازدید
  • 2 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید