سؤال

لقد قمت مؤخرًا بالترقية إلى IE9-Beta. الآن ، في تطبيق Winform الخاص بي .NET (3.5) أريد استخدامه WebBrowser مراقبة.

لذا فإن سؤالي هو ما إذا كان WebBrowser السيطرة سوف تظهر جميع خصائص ووظائف IE9؟

قلقي هو ، أريد تقديم بعض رسومات SVG عليها.

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

المحلول

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

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"contoso.exe"=dword:00002328

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

  • 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

نصائح أخرى

سيستخدم WebBrowser Control أي إصدار من IE قمت بتثبيته ، ولكن لأسباب التوافق ، ستقدم صفحات في وضع معايير IE7 بشكل افتراضي.

إذا كنت ترغب في الاستفادة من ميزات IE9 الجديدة ، فيجب عليك إضافة علامة التعريف <meta http-equiv="X-UA-Compatible" content="IE=9" > داخل <head> علامة صفحة HTML الخاصة بك.

يجب إضافة علامة التعريف هذه قبل أي روابط إلى CSS وملفات JavaScript وما إلى ذلك <head> للعمل بشكل صحيح (آخر فقط <meta> العلامات أو <title> يمكن أن تأتي العلامة قبلها).

البديل هو إضافة إدخال سجل إلى:

HKLM> Software> Microsoft> Internet Explorer> Main> featureControl> feature_browser_emulation

وهناك إضافة "myapplicationName.exe" مع القيمة "9000" لإجبار WebBrowser على عرض الصفحات في وضع IE9. على الرغم من وجود القيم الأخرى التي يمكنك استخدامها أيضًا لاحظ أيضًا أن هذه المستندات ليست دقيقة تمامًا لأنه لا يبدو من الممكن الحصول على صفحة لتقديمها في وضع IE 8 مهما كانت القيمة التي تستخدمها.

إن إضافة مفتاح التسجيل إلى نفس المسار في HKCU بدلاً من HKLM ستعمل أيضًا - وهذا مفيد لأن الكتابة إلى HKLM تتطلب امتيازات المسؤول حيث لا يتمثل HKCU.

الحمد لله لقد وجدت هذا. ما يلي مهم للغاية:

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

بدون هذا ، لم يكن أي من التقارير التي كنت أقوم بإنشائها تعمل بعد تثبيت IE9 على الرغم من العمل بشكل رائع في IE8. سيظهرون بشكل صحيح في عنصر تحكم متصفح الويب ، ولكن سيكون هناك رسائل مفقودة ، ومساحة بيضاء ، وما إلى ذلك ، عندما اتصلت .print (). لقد كانت مجرد HTML أساسية يجب أن تكون قادرة على تقديمها حتى في الفسيفساء. هيه لست متأكدًا من سبب استمرار وضع توافق IE7. والجدير بالذكر أنه يمكنك .print () نفس الصفحة 5 مرات وأن تفتقد رسائل مختلفة في كل مرة. حتى أنه سيحمل في إخراج PDF ، لذلك فهو بالتأكيد المتصفح.

ملاحظة حوالي 64 بت من النوافذ والتي يبدو أنها ترتفع عدد قليل من الناس. إذا كان تطبيقك يعمل تحت Windows 64bit ، فمن المحتمل أن تضطر إلى تعيين DWORD ضمن [HKLM SOPREMS WOW6432NODE Microsoft Internet Explorer MAIN featureControl feature_browser_emulation] بدلاً من ذلك.

فقط ليكون كاملاً ...

للحصول على نظام التشغيل 32 بتات ، يجب إضافة إدخال التسجيل إلى:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

*******أو*******

لنظام التشغيل 64 بتات ، يجب عليك إضافة إدخال التسجيل إلى:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

يجب أن يكون هذا الإدخال DWORD, ، مع الاسم هو اسم الخاص بك القابل للتنفيذ ، الذي يستضيف التحكم في WebBrowser ؛ بمعنى آخر:

myappname.exe (لا تستخدم "contoso.exe" كما هو الحال في صفحة الويب MSDN ... إنه مجرد اسم نائب)

ثم أعطها DWORD القيمة ، وفقا للجدول في:

http://msdn.microsoft.com/en-us/library/EE330730(V=Vs.85).aspx#browser_emulation

لقد تغيرت إلى 11001 عشري أو 0x2af9 Hex --- (أي 11 مضاهاة) لأن هذه ليست القيمة الافتراضية (إذا كنت قد تم تثبيت IE 11-أو أي إصدار).

تحتوي مقالة MSDN هذه على ملاحظات حول العديد من التغييرات في التسجيل الأخرى التي تؤثر على سلوك متصفح الويب Internet Explorer.

أعلم أن هذا الموضوع قديم وهناك بالفعل إجابات شاملة.

فقط في حال كنت لا تعرف هذا:

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

ليس عليك أن ترمز إلى رقم إصدار IE AS

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

وأنا أتفق تمامًا مع الحل المقدم ، لكنني أعتقد أن القليل من التوضيح مهم على ما أعتقد ، قد يكون ضروريًا.

لكل عملية (اقرأ أيضًا: vshost.exe ، yourwinformapplication.exe.svchost ، أو اسم التطبيق الخاص بك. اسم وتشغيل نصي بسلاسة وخالية من الأخطاء.

الخطأ الأكثر شيوعًا هو الاعتقاد بأنه من الضروري إضافة "contoso.exe" كما هو ويعتقد أن كل شيء يعمل!

نعم ، يستخدم WebBrowser Control أي إصدار من IE قمت بتثبيته. هذا يعني بالطبع أنه إذا قمت بتشغيل تطبيقك على جهاز مع IE 8 ، فلن تتوفر ميزات IE 9 التي تعتمد عليها.

جئت إلى هذا الحل ولم ينجح بالنسبة لي! لأنني كنت أستخدم 64bit كان علي استبدال السجل:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

بدلاً من الشخص الذي يتحدث عنه الجميع:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

أعجبتني رمز (C#) في ما يلي الذي يحدد إعدادات التسجيل لتطبيقك. لست متأكدًا مما إذا كان سيتم قطعه بعد التثبيت على الرغم من أن الأذونات مطلوبة. بالنسبة لي ، حل مشكلة مع عدم توفر WebSocket داخل عنصر تحكم WebBrowser في WPF.

C# WebBrowser Ajax Call

واجهت نفس المشكلة ، ولم تنجح إجابات السجل هنا.

كان لدي تحكم في المتصفح في إصدار جديد من برنامجي الذي عمل بشكل جيد على XP ، فشلت في Windows 7 (64 بت). عمل الإصدار القديم على كل من XP و Windows 7.

تستخدم صفحة الويب المعروضة في المتصفح بعض المكونات الإضافية الغريبة لإظهار خرائط SVG القديمة (أعتقد أنها تطبيق Java).

تبين أن المشكلة مرتبطة بحماية DEP في Windows 7.

لم تقم الإصدارات القديمة من Dotnet 2 بتعيين العلم المطلوب DEP في EXE ، ولكن من Dotnet 2 ، SP 1 فصاعدًا (نعم ، سلوك التجميع ، وبالتالي تغير سلوك وقت التشغيل من EXE اعتمادًا على الجهاز الذي جمعته ، لطيف. ..).

تم توثيقه على مدونة MSDN NXCompat ومترجم C#. يقتبس : هذا سوف يفاجئ بلا شك عدد قليل من المطورين ... قم بتنزيل حزمة خدمة إطار عمل ، وإعادة الترسيب ، وتشغيل التطبيق الخاص بك ، وستحصل الآن على استثناءات IP_ON_HEAP.

إضافة ما يلي إلى البناء المنشور في Visual Studio ، يتم إيقاف تشغيل DEP إلى EXE ، وكل شيء يعمل كما هو متوقع:

all "$(DevEnvDir)..\tools\vsvars32.bat"
editbin.exe /NXCOMPAT:NO "$(TargetPath)"

بخصوص إجابة وايتهوك المقبولة. أنا فقط أحاول إضافة بعض الأيدي على الخبرة. كان يحاول فقط إضافة تعليقات ، ولكن يشكو من أنها طويلة جدًا.

في الأساس ، بدون تثبيت IE 9 ، لن يعمل مفتاح التسجيل _browser_emulation على الإطلاق.

على سبيل المثال ، تجربتي الخاصة اليوم كنت أحاول الحصول على .NET WebControl للعمل مع وضع IE10 لأن أحد HTML أحاول تقديمه لن يعمل مع .NETCONTROL ضمن VS2012 ، ولا يعمل حتى عندما أقوم بتحميل HTML إلى IE8 مباشرة ، لن يتم عرض CSS بشكل صحيح (حتى بعد أن أقول السماح للمحتوى المحظور). لكنني اختبرت نفس HTML OK مع IE10 على آلة Win 8 صديق. لهذا السبب أحاول تعيين .NET WebControl على وضع IE 10 ولكن فقط الاستمرار في الفشل ...

الآن أحسب أن هذا هو BCOS My Win 7 لم يتم تثبيت IE8 فقط ، لذلك بغض النظر عن القيمة التي قمت بتعيينها على مفتاح Deftern_browser_emulation (القيمة إلى IE9 ، IE10 IE11) ، لن يعمل على الإطلاق!

ثم قمت بتنزيل وتثبيت IE 10 على جهاز Win 7 الخاص بي. لا يزال لن ينجح ، ثم أضفت ميزة _browser_emulation ، بدأت العمل!

لاحظت أيضًا بغض النظر عن القيمة التي قمت بتعيينها ، حتى قم بتعيينها على القيمة 0 بشكل افتراضي ، لا يزال WebControl يستخدم وضع IE 10 الذي لا يزال يعمل بالنسبة لي.

لذلك لتلخيص ، إذا قمت بتثبيت IE X ولكنك تريد أن تعمل .NET WebControl تحت IE (x+n) n> 0 modo ، شيئان عليك فعل:

  1. انتقل إلى موقع MS على الويب وتنزيل وتثبيت IE (x+n) على جهازك ، ستحتاج إلى إعادة التشغيل بعد التثبيت.

  2. تطبيق إجابة Whitehawk.

بشكل أساسي: للتحكم في قيمة هذه الميزة باستخدام السجل ، أضف اسم الملف القابل للتنفيذ إلى الإعداد التالي وتعيين القيمة لمطابقة الإعداد المطلوب.

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

Windows Internet Explorer 8 وبعد ذلك. تحدد ميزة الميزات _browser_emulation وضع المحاكاة الافتراضية لـ Internet Explorer ويدعم القيم التالية.

وصف القيمة

  • 11001 (0x2af9 Internet Explorer 11. يتم عرض صفحات الويب في وضع IE11 Edge ، بغض النظر عن توجيه Doctype.

    11000 (0x2AF8) IE11. يتم عرض صفحات الويب التي تحتوي على المعايير! القيمة الافتراضية لـ IE11.

    10001 (0x2711) Internet Explorer 10. يتم عرض صفحات الويب في وضع معايير IE10 ، بغض النظر عن توجيه Doctype.

    10000 (0x02710) Internet Explorer 10. يتم عرض صفحات الويب التي تحتوي على المعايير! توجيهات Doctype في وضع معايير IE10. القيمة الافتراضية لـ Internet Explorer 10.

    9999 (0x270F) Windows Internet Explorer 9. يتم عرض صفحات الويب في وضع معايير IE9 ، بغض النظر عن توجيه Doctype.

    9000 (0x2328) Internet Explorer 9. يتم عرض صفحات الويب التي تحتوي على المعايير! القيمة الافتراضية لـ Internet Explorer 9.

    مهم في Internet Explorer 10 ، يتم عرض صفحات الويب التي تحتوي على المعايير!

    8888 (0x22b8) يتم عرض صفحات الويب في وضع معايير IE8 ، بغض النظر عن توجيه Doctype.

    8000 (0x1F40) يتم عرض صفحات الويب التي تحتوي على توجيهات Doctype في وضع IE8. القيمة الافتراضية لـ Internet Explorer 8 المهم في Internet Explorer 10 ، يتم عرض صفحات الويب التي تحتوي على معايير! توجيهات Doctype في وضع معايير IE10.

    7000 (0x1B58) يتم عرض صفحات الويب التي تحتوي على توجيهات Doctype في وضع معايير IE7. القيمة الافتراضية للتطبيقات التي تستضيف التحكم في WebBrowser.

المرجع الكامل هنا

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