سؤال

أنا أستخدم الأتمتة (أي أتمتة) لعرض بعض HTML في Internet Explorer (9):

ie = CoInternetExplorer.Create;
ie.Navigate2("about:blank");
webDocument = ie.Document;
webDocument.Write(szSourceHTML);
webDocument.Close();
ie.Visible = True;

يظهر Internet Explorer ، ويظهر HTML الخاص بي ، والذي يبدأ على النحو التالي:

<!DOCTYPE html>
<HTML>
<HEAD>
   ...

ملحوظة: HTML5 وضع المعايير html

إلا أن المستند ليس في وضع معايير IE9 ؛ إنه في وضع معايير IE8:alt text


إذا قمت بحفظ HTML على جهاز الكمبيوتر الخاص بي أولاً:

alt text

ثم عرض الذي - التي مستند HTML ، يتم وضع IE في وضع المعايير:

alt text

سؤالي هو كيف تحديث بلدي SpawnIEWithSource(String html) هل تعمل لرمي المتصفح في وضع المعايير؟

void SpawnIEWithSource(String html)
{
   Variant ie = CoInternetExplorer.Create();
   ie.Navigate2("about:blank");
   webDocument = ie.Document;
   webDocument.Write(html);
   webDocument.Close();
   ie.Visible = true;
}

تحرير: عينة من الكود الأكثر مطوّلة أو أقل قابلية للقراءة أو قابلة للقراءة ، والتي لا تساعد في زيادة السؤال: قد يكون:

IWebBrowser2 ie;
CoCreateInstance(CLASS_InternetExplorer, null, CLSCTX_INPROC_SERVER | CLSCTX_LOCAL_SERVER, IID_WebBrowser2, ie);
ie.AddRef();
ie.Navigate2("about:blank");

IHtmlDocument doc;
dispDoc = ie.Document;
dispDoc.AddRef();
dispDoc.QueryInterface(IHTMLDocument2, doc);
dispDoc.Release()
doc.Write(html); 
doc.Close();
doc.Release();
ie.Visible = true;
ie.Release();

تحديث

سأل المعلق في إدخال IEBLOG اختبار المواقع مع وضع المتصفح مقابل وضع المستند:

هل يمكننا الحصول على وصف لكيفية تحديد وضع المستند عندما يكون محتوى HTML ضمن مونترول ويب مضمن؟ يبدو أن وضع المستند يتم اختياره بشكل مختلف - ربما لأسباب توافق؟

أجاب Marksil [MSFT]:

@thomas: شكرا لطرح هذا السؤال. يحدد عنصر التحكم في WebBrowser وضع DOC بنفس الطريقة التي يقوم بها IE لأنه يحتوي على نفس نظام الويب (على سبيل المثال ، يوجد MSHTML.dll مشترك عبر مضيفات التحكم في WebBrowser). يقوم التحكم في WebBrowser افتراضيًا بوضع متصفح عرض التوافق ، مما يعني أن وضع المستند الافتراضي هو IE7. إليك منشور مدونة مع مزيد من التفاصيل حول هذا: blogs.msdn.com/.../more-ie8-extensibility-emprovements.aspx.

الذي أجاب توماس:

marcsil (رد: WebBrowser Control)

المشكلة في استخدام إدخالات التسجيل لتحديد وضع المستند لـ WebControl هي أنه ينطبق على التطبيق ككل. أكتب مكونات إضافية لـ Google Sketchup حيث لديك WebDialog Windows لإنشاء واجهة المستخدم - إنه مجرد عنصر تحكم WebBrowser في نافذة. لكن هذا يؤدي إلى مشاكل لأنني أريد فرض وضع مستند لمثيل جهاز التحكم في WebBrowser ، وليس لجميع عناصر التحكم في WebBrowser من SU ككل.

لذا ، سؤالي هو: كيف يمكنك التحكم في وضع المستند لكل مثيل لعنصر التحكم في WebBrowser؟

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

المحلول

هل حاولت الإعداد في HTML الخاص بك

<meta http-equiv="X-UA-Compatible" content="IE=9" />

أو

<meta http-equiv="X-UA-Compatible" content="IE=edge" />

وهو ما يعني أحدث إصدار

نصائح أخرى

يعد إصدار "IE9" من Control WebBrowser ، مثل إصدار IE8 ، في الواقع عدة متصفحات في واحدة. على عكس إصدار IE8 ، لديك عنصر تحكم أكثر بقليل في وضع العرض داخل الصفحة من خلال تغيير Doctype. بالطبع ، لتغيير وضع المتصفح ، عليك تعيين سجلك مثل الإجابة السابقة. فيما يلي موقع feature_browser_emulation:

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
     SOFTWARE
          Microsoft
               Internet Explorer
                    Main
                         FeatureControl
                              FEATURE_BROWSER_EMULATION
                                   contoso.exe = (DWORD) 000090000

هنا هي المجموعة الكاملة من الرموز:

  • 9999 (0x270F) - Internet Explorer 9. يتم عرض صفحات الويب في وضع معايير IE9 ، بغض النظر عن توجيه Doctype.
  • 9000 (0x2328) - Internet Explorer 9. يتم عرض صفحات الويب التي تحتوي على المعايير! توجيهات Doctype في وضع IE9.
  • 8888 (0x22b8) -يتم عرض PHEPAGES في وضع معايير IE8 ، بغض النظر عن توجيه DOCTYPE.
  • 8000 (0x1F40) - يتم عرض صفحات الويب التي تحتوي على توجيهات Doctype في وضع IE8.
  • 7000 (0x1B58) - يتم عرض صفحات الويب التي تحتوي على المعايير!

المستندات الكاملة:

http://msdn.microsoft.com/en-us/library/EE330730٪28Vs.85٪29.aspx#browser_emulation

ميزة _browser_emulation لا يعمل مع CointernetSetFeatureEnabled. وثائق InternetFeaturelist لم يتم تحديثه منذ IE7.

نظرًا لأن إعداد الميزات هو ضمن HKEY_Current_user Softwar مايو تكون قادرًا على تجاوز القيمة في عمليتك عبر خطاف API للتسجيل.

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