Penyelesaian Masalah C# Webbrowser Control Hangups dengan Ajax
Kawalan C#, tidak seperti contoh Internet Explorer penuh, sering mengalami pembekuan semasa panggilan Ajax. Artikel ini meneroka penyelesaian yang memberi tumpuan kepada keserasian skrip. WebBrowser
Menangani isu keserasian skrip
Akar masalah sering terletak pada percanggahan antara enjin skrip kawalan dan penyemak imbas IE standard. Untuk mengurangkan ini, kami akan memanfaatkan kawalan ciri untuk mengkonfigurasi kawalan untuk meniru tingkah laku IE dengan lebih teliti. Tetapan WebBrowser
adalah kunci di sini. FEATURE_BROWSER_EMULATION
Melaksanakan Kawalan Ciri (Pengubahsuaian Pendaftaran)
coretan kod berikut menunjukkan cara melaksanakan kawalan ciri tanpa memerlukan keistimewaan pentadbir:
<code class="language-csharp">private void SetBrowserFeatureControlKey(string feature, string appName, uint value) { using (var key = Registry.CurrentUser.CreateSubKey( $@"Software\Microsoft\Internet Explorer\Main\FeatureControl\{feature}", RegistryKeyPermissionCheck.ReadWriteSubTree)) { key.SetValue(appName, (uint)value, RegistryValueKind.DWord); } }</code>
Tetapan ciri optimum
Berdasarkan ujian, tetapan kawalan ciri ini disyorkan untuk meningkatkan prestasi AJAX dalam kawalan: WebBrowser
<code>FEATURE_BROWSER_EMULATION = 11000 FEATURE_AJAX_CONNECTIONEVENTS = 1 FEATURE_ENABLE_CLIPCHILDREN_OPTIMIZATION = 1 FEATURE_MANAGE_SCRIPT_CIRCULAR_REFS = 1 FEATURE_DOMSTORAGE = 1 FEATURE_GPU_RENDERING = 1 FEATURE_IVIEWOBJECTDRAW_DMLT9_WITH_GDI = 0 FEATURE_DISABLE_LEGACY_COMPRESSION = 1 FEATURE_LOCALMACHINE_LOCKDOWN = 0 FEATURE_BLOCK_LMZ_OBJECT = 0 FEATURE_BLOCK_LMZ_SCRIPT = 0 FEATURE_DISABLE_NAVIGATION_SOUNDS = 1 FEATURE_SCRIPTURL_MITIGATION = 1 FEATURE_SPELLCHECKING = 0 FEATURE_STATUS_BAR_THROTTLING = 1 FEATURE_TABBED_BROWSING = 1 FEATURE_VALIDATE_NAVIGATE_URL = 1 FEATURE_WEBOC_DOCUMENT_ZOOM = 1 FEATURE_WEBOC_POPUPMANAGEMENT = 0 FEATURE_WEBOC_MOVESIZECHILD = 1 FEATURE_ADDON_MANAGEMENT = 0 FEATURE_WEBSOCKET = 1 FEATURE_WINDOW_RESTRICTIONS = 0 FEATURE_XMLHTTP = 1</code>
Langkah -langkah permohonan
Buat kaedah yang menggabungkan tetapan ini (serupa dengan contoh yang disediakan). Secara kritis, panggil kaedah ini sebelum kawalan diasaskan, biasanya dalam pembina bentuk. Ini memastikan tetapan digunakan sebelum sebarang permintaan Ajax dibuat. WebBrowser
dengan panggilan Ajax, menyelesaikan hang-up dan memastikan pelaksanaan skrip yang lebih lancar. WebBrowser
Atas ialah kandungan terperinci Mengapa kawalan C# Webbrowser saya digantung semasa panggilan Ajax, dan bagaimana saya boleh memperbaikinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!