محتویات سایت
        برچسب های محبوب 








 
   تشخیص مرورگر موبایل در صفحات وب
  با ورود موبایل به دنیای اینترنت و امکان گشت و گذار در اینترنت توسط تلفن های سیار، امروزه نمایش درست صفحات وب در اینگونه دستگاه ها به یکی از دغدغه های توسعه گران وب تبدیل شده است.
   ASP.NET
   ۱۸۰۹۳
   این مقاله حاوی فایل ضمیمه نمی باشد
   مرتضی صحراگرد
   ۱۳۸۸/۱/۲۰
نسخه قابل چاپ نسخه قابل چاپ

با ورود موبایل به دنیای اینترنت و امکان گشت و گذار در اینترنت توسط تلفن های سیار، امروزه نمایش درست صفحات وب در اینگونه دستگاه ها به یکی از دغدغه های توسعه گران وب تبدیل شده است.

صفحات وب با توجه به طول و عرض آن ها و استفاده از اسکریپت ها و غیره، معمولا مناسب نمایش در تلفن های همراه نیستند و در نتیجه معمولا این صفحات در مرورگر تلفن همراه به شکل نامناسبی نمایش داده می شوند.

لذا لازم است صفحات را با استانداردهای خاصی طراحی نمود تا مناسب نمایش در تلفن های همراه شوند.

در این ترفند روشی را معرفی خواهیم نمود که مشخص می نماید که بازدید کننده وب سایت آیا از یک مرورگر معمولی استفاده می نماید یا یک مرورگر موبایل. در نیتجه می توان بازدید کننده را به صفحات مناسب مرورگر خود هدایت نمود.

در قسمت زیر یک متد استاتیک را ملاحظه می نمایید که مقدار برگشتی آن یک مقدار 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;

}

لازم به ذکر می باشد که در متد بالا از گرامر DotNet 3.5 استفاده شده است.

منبع : 30sharp

     codeproject