الكشف التلقائي عن متصفح الجوال (عبر وكيل المستخدم؟) [مغلق]

StackOverflow https://stackoverflow.com/questions/1005153

سؤال

كيف يمكنني اكتشاف ما إذا كان المستخدم يشاهد موقع الويب الخاص بي من متصفح الويب على الهاتف المحمول حتى أتمكن بعد ذلك من اكتشاف الإصدار المناسب من موقع الويب الخاص بي وعرضه تلقائيًا؟

هل كانت مفيدة؟

المحلول

نعم، قراءة رأس وكيل المستخدم سوف تفعل خدعة.

وهناك بعض قوائم <لأ href = "HTTP: // EN .wikipedia.org / ويكي / List_of_user_agents_for_mobile_phones "يختلط =" noreferrer "> من هناك وكلاء مستخدم الهاتف المحمول المعروف حتى لا تحتاج إلى البدء من نقطة الصفر. ماذا فعلت عندما اضطررت لهو بناء قاعدة بيانات وكلاء المستخدم المعروفة والمجهولة المخزن كما يتم الكشف عنها للمراجعة ومن ثم الرقم يدويا على ما هي عليه. هذا آخر شيء قد يكون مبالغة في بعض الحالات.

إذا كنت تريد أن تفعل ذلك على مستوى Apache، يمكنك إنشاء برنامج نصي الذي يولد بشكل دوري مجموعة من قواعد إعادة الكتابة فحص وكيل المستخدم (أو مرة واحدة فقط ونسيان وكلاء مستخدم جديد، أو مرة واحدة في الشهر، ما يناسب حالتك )، مثل

RewriteEngine On

RewriteCond %{HTTP_USER_AGENT} (OneMobileUserAgent|AnotherMobileUserAgent|...)
RewriteRule (.*) mobile/$1

والتي من شأنها أن تحرك، على سبيل المثال، تطلب HTTP: //domain/index.html ل<أ href ل = "HTTP: //domain/mobile/index.html" يختلط = "noreferrer"> HTTP: //domain/mobile/index.html

إذا كنت لا تحب هذا النهج وجود سيناريو إعادة إنشاء ملف هتكس بشكل دوري، يمكن أن تكتب وحدة والذي يتحقق وكيل المستخدم (لم أجد واحدة بالفعل، ولكن وجدت ذلك مناسبا بشكل خاص <أ href = ل "http://www.ddj.com/architect/184405150" يختلط = "noreferrer"> مثال ) والحصول على وكلاء المستخدم من بعض المواقع لتحديثها. ثم هل يمكن أن يعقد النهج بقدر ما تريد، ولكن أعتقد أن في قضيتك ان النهج السابق سيكون على ما يرام.

نصائح أخرى

وهناك مخطوطات مفتوحة المصدر على الكشف عن متصفح الجوال أن القيام بذلك في Apache، ASP، كولد فيوجن، وجافا سكريبت وPHP.

ومجرد التفكير ولكن ماذا لو كنت عملت هذه المشكلة من الاتجاه المعاكس؟ وبدلا من تحديد أي المتصفحات أصبحت قادرة على الحركة لماذا لا تحديد المتصفحات ليست؟ ثم رمز موقع الويب الخاص بك إلى الافتراضي إلى النسخة المحمولة وإعادة توجيه إلى الإصدار القياسي. هناك احتمالان الأساسية عند النظر في متصفح الجوال. إما أن لديها جافا سكريبت الدعم أو لا. حتى إذا لم يكن لديك متصفح جافا سكريبت الدعم الذي سوف الافتراضي إلى النسخة المحمولة. إذا كان لديه دعم جافا سكريبت، والتحقق من حجم الشاشة. أي شيء أقل من حجم معين من المحتمل أيضا أن يكون متصفح الجوال. أي شيء أكبر سوف تحصل على إعادة توجيه لتخطيط القياسية. ثم كل ما عليك القيام به هو تحديد ما إذا كان المستخدم مع جافا سكريبت تعطيل متحرك أم لا.
وفقا لW3C كان عدد من المستخدمين مع جافا سكريبت تعطيل حوالي 5٪ وأولئك المستخدمين تحولت معظم تشغيله مما يعني أنهم يعرفون فعلا ماذا يفعلون مع مستعرض. هم جزء كبير من جمهورك؟ إذا لم يكن ثم لا تقلق بشأنها. إذا كان الأمر كذلك، ماذا يكون أسوأ سيناريو؟ لديك هؤلاء المستخدمين تصفح النسخة المحمولة من موقع الويب الخاص بك، وهذا شيء جيد.

إليك كيف أفعل ذلك في جافا سكريبت:

function isMobile() {
  var index = navigator.appVersion.indexOf("Mobile");
  return (index > -1);
}

وانظر على سبيل المثال في www.tablemaker.net/test/mobile.html حيث فإنه يتضاعف ثلاث مرات حجم الخط على الهواتف الجوالة.

وبلدي المفضلة موبايل آلية الكشف متصفح هي WURFL . يتم تحديثها بشكل متكرر وأنه يعمل مع كل منصة رئيسية البرمجة / لغة.

هل تعتبر استخدام استفسارات وسائل الإعلام CSS3؟ في معظم الحالات يمكنك تطبيق بعض الأنماط المغلق خصيصا للجهاز المستهدف دون الحاجة إلى إنشاء نسخة متنقلة منفصل من الموقع.

@media screen and (max-width:1025px) {
   #content {
     width: 100%;
   }
}

ويمكنك تعيين عرض إلى ما تريد، ولكن 1025 سوف قبض على عرض المناظر الطبيعية باد.

وأنت تحتاج أيضا إلى إضافة العلامة الوصفية التالية لرأسك:

<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

هذه المقالة في أكثر من HTML5 الصخور لبعض الأمثلة الجيدة

ل أندرويد، آيفون، آي باد، بلاك بيري، بالم، ويندوز سي إي، بالم

 <script language="javascript"> <!--
     var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
              if (mobile) {
                  alert("MOBILE DEVICE DETECTED");
                  document.write("<b>------------------------------------------<br>")
                  document.write("<b>" + navigator.userAgent + "<br>")
                  document.write("<b>------------------------------------------<br>")
                  var userAgent = navigator.userAgent.toLowerCase();
                  if ((userAgent.search("android") > -1) && (userAgent.search("mobile") > -1))
                         document.write("<b> ANDROID MOBILE <br>")
                   else if ((userAgent.search("android") > -1) && !(userAgent.search("mobile") > -1))
                       document.write("<b> ANDROID TABLET <br>")
                   else if ((userAgent.search("blackberry") > -1))
                       document.write("<b> BLACKBERRY DEVICE <br>")
                   else if ((userAgent.search("iphone") > -1))
                       document.write("<b> IPHONE DEVICE <br>")              
                   else if ((userAgent.search("ipod") > -1))
                       document.write("<b> IPOD DEVICE <br>")
               else if ((userAgent.search("ipad") > -1))
                       document.write("<b> IPAD DEVICE <br>")
                       else
                   document.write("<b> UNKNOWN DEVICE <br>")
              }
              else
                  alert("NO MOBILE DEVICE DETECTED"); //--> </script>

ووتليفون ملف متصفح الجهاز هو وسيلة رائعة للكشف عن broswers المحمول (وغيرهم) لمشاريع ASP.NET: HTTP: //mdbf.codeplex.com/

ويمكنك الكشف عن عملاء الجوال ببساطة من خلال navigator.userAgent، وتحميل النصوص بديلة وفقا لنوع العميل الكشف عن:

 $(document).ready(function(e) {

        if(navigator.userAgent.match(/Android/i)
          || navigator.userAgent.match(/webOS/i)
          || navigator.userAgent.match(/iPhone/i)
          || navigator.userAgent.match(/iPad/i)
          || navigator.userAgent.match(/iPod/i)
          || navigator.userAgent.match(/BlackBerry/i)
          || navigator.userAgent.match(/Windows Phone/i)) {

         //write code for your mobile clients here.

          var jsScript = document.createElement("script");
          jsScript.setAttribute("type", "text/javascript");
          jsScript.setAttribute("src", "js/alternate_js_file.js");
          document.getElementsByTagName("head")[0].appendChild(jsScript );

          var cssScript = document.createElement("link");
          cssScript.setAttribute("rel", "stylesheet");
          cssScript.setAttribute("type", "text/css");
          cssScript.setAttribute("href", "css/alternate_css_file.css");
          document.getElementsByTagName("head")[0].appendChild(cssScript); 

    }
    else{
         // write code for your desktop clients here
    }

    });

يمكنك التحقق من سلسلة وكيل المستخدم.في JavaScript، يكون الأمر سهلًا حقًا، فهي مجرد خاصية لكائن المستكشف.

var useragent = navigator.userAgent;

يمكنك التحقق مما إذا كان الجهاز يعمل بنظام iPhone أو Blackberry في JS بشيء من هذا القبيل

var isIphone = !!agent.match(/iPhone/i),
    isBlackberry = !!agent.match(/blackberry/i);

إذا كان isIphone صحيحًا، فأنت تدخل إلى الموقع من هاتف Iphone، وإذا كان isBlackBerry، فأنت تدخل إلى الموقع من جهاز Blackberry.

يمكنك استخدام البرنامج المساعد "UserAgent Switcher" لمتصفح فايرفوكس لاختبار ذلك.

إذا كنت مهتمًا أيضًا، فقد يكون من المفيد التحقق من النص الخاص بي "redirection_mobile.js" مستضاف على جيثب هنا https://github.com/sebarmeli/JS-Redirection-Mobile-Site ويمكنك قراءة المزيد من التفاصيل في أحد مقالاتي هنا:

http://blog.sebarmeli.com/2010/11/02/how-to-redirect-your-site-to-a-mobile-version-through-javascript/

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Browser.IsMobileDevice == true)
    {
        Response.Redirect("Mobile//home.aspx");
    }
}

وهذا المثال يعمل في asp.net

ولقد قال لا ما اللغة التي تستخدمها. اذا كان بيرل ثم انها تافهة:

use CGI::Info;

my $info = CGI::Info->new();

if($info->is_mobile()) {
   # Add mobile stuff
}

unless($info->is_mobile()) {
   # Don't do some things on a mobile
}

ونعم يستخدم عامل المستخدم للكشف عن متصفحات الجوال. هناك الكثير من النصوص الحرة المتاحة للتحقق من ذلك. هنا هو واحد مثل كود PHP التي سوف تساعدك على إعادة توجيه مستخدمي الجوال إلى موقع مختلف.

وأنا وضعت هذا العرض مع النصوص والأمثلة المدرجة معا:

HTTP: // شبكة الاتصالات العالمية. mlynn.org/2010/06/mobile-device-detection-and-redirection-with-php/

وهذا المثال يستخدم وظائف فب للكشف وكيل المستخدم ويوفر فائدة إضافية تتمثل في السماح للمستخدمين الدولة عن تفضيلها لصيغة الموقع الذي لن يكون عادة الافتراضي استنادا المتصفح أو نوع الجهاز. ويتم ذلك مع الكوكيز (حافظ باستخدام PHP على جانب الخادم بدلا من جافا سكريبت.)

وتأكد من إطلاعك على رابط التحميل في المقال لأمثلة على ذلك.

وأمل أن تستمتع!

MobileESP ديه PHP، جافا، APS.NET (C #)، روبي وجافا سكريبت السنانير. كما أن لديها رخصة أباتشي 2، مجانا حتى للاستخدام التجاري. الشيء الرئيسي بالنسبة لي هو أنه يعرف فقط المتصفحات ومناهج لا يحجب الأحجام والمقاييس الأخرى، والتي تحافظ على لطيفة وصغيرة.

وهناك حل العلامة التجارية الجديدة باستخدام الإطار زند. نبدأ من الارتباط Zend_HTTP_UserAgent:

http://framework.zend.com/manual/en/zend. http.html

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top