كيفية التحكم في متصفح الويب c# wpf في تحميل النسخة المحمولة من مواقع الويب

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

سؤال

لدي تطبيق WPF بسيط مع عنصر تحكم في متصفح الويب.عندما أقوم بتوجيه عنصر التحكم لتحميل صفحة ما، أرغب في جعل عنصر التحكم يخبر الخادم بأنه يحاول تحميل الصفحة من خلال أنه جهاز محمول وبالتالي تحميل الإصدار الأصغر من الصفحة.أعرف أن الكثير من المواقع تضيف الهاتف المحمول فقط قبل العنوان، لذا فإن صفحة الجوال الخاصة بـ google.com هي mobile.google.com فقط، ولكنني أتساءل عما إذا كانت هناك طريقة للتحميل لجعل خادم الويب يوجه التحكم في متصفح الويب الخاص بي تلقائيًا إلى النسخة المحمولة من الموقع؟أشعر أنه يجب أن تكون هناك طريقة بسيطة جدًا للقيام بذلك، لكني لا أستطيع اكتشافها :).

شكرا لك مقدما!!!

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

المحلول

وعموما يمكن السيطرة عليها من قبل هذا الموقع باستخدام عميل المستخدم ، وهي ليست شيئا يمكنك تغيير مع التحكم WebBrowser القياسية. هناك عنصر تحكم WPF webbrowser البديلة، بناء على الكروم ، التي يمكنك تحميلها من <أ href = ل "http://wpfchromium.codeplex.com/" يختلط = "noreferrer نوفولو"> كود بلاكس . قد لا تدعم عميل المستخدم خداع من خارج منطقة الجزاء، لكنه مفتوح المصدر بحيث يمكنك تغييره يدويا في التعليمات البرمجية لاي فون، ويندوز موبايل وغيرها.

نصائح أخرى

والواقع، وWebBrowser لا دعم تغيير وكيل المستخدم من خلال الرؤوس في أسلوب التنقل:

this.yourWebBrowserControl.Navigate( new Uri( "http://www.yoursite.com" ), string.Empty, null, string.Format( "User-Agent: {0}", "Your user agent string here" ) );

وأنا أعلم أن هذا هو قديم، ولكن هذا هو الشيء السهل القيام به:

وأول ما تحتاجه سلسلة عامل المستخدم وأنه يحتاج إلى سلسلة منسقة. هذا هو كيف أفعل ذلك أدناه wbMobile هو التحكم WebBrowser. هذا المثال سوف يأخذك إلى موقع بنج المحمول

wbMobile.Navigate(new Uri("http://m.bing.com/", UriKind.RelativeOrAbsolute), string.Empty, null, string.Format("User-Agent: {0}", "Opera/9.80 (J2ME/MIDP; Opera Mini/9 (Compatible; MSIE:9.0; iPhone; BlackBerry9700; AppleWebKit/24.746; U; en) Presto/2.5.25 Version/10.54"));

وهذا سوف انتقل إلى صفحة ويب باستخدام سلسلة عامل المستخدم النقالة ويسمح لك لعرض المواقع المحمولة على الطاير في التحكم WebBrowser

لم يكن حل بويدسكي هو الحل المناسب بالنسبة لي.الحل الأمثل لهذه الحالة:

تغيير وكيل المستخدم لعنصر تحكم WebBrowser

ولكن في بعض الأحيان لم يتم تعيين "navigator.userAgent" مع الحل الرأسي.في هذه الحالة عليك أن تستخدم UrlMkSetSessionOption. MSDN

// import .. use a internal static class like "Native" ;)
[DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
internal static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);

// usage
string userAgent = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_3_3 like Mac OS X; en-us)";

UrlMkSetSessionOption(0x10000002, null, 0, 0);

UrlMkSetSessionOption(0x10000001, userAgent, userAgent.Length, 0);

يمكنك العثور على سلاسل وكيل المستخدم المناسبة هنا

استمتع!

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