Lo script viene eseguito più lentamente nel controllo WebBrowser dotnet

Io uso il controllo WebBrowser e lo scorrimento Smooth Div nella mia applicazione winforms per rendere un perimetro html. Ho scaricato il campione e aggiunto

autoScrollingInterval: 3 

a

 $("div#makeMeScrollable").smoothDivScroll({ autoScrollingMode: "onStart" }); 

per farlo muovere più velocemente. Quando apro l’esempio in IE funziona perfettamente ma quando utilizzo il controllo WebBrowser e chiamo il metodo di navigazione lo scroller si muove molto più lentamente.

Cosa causa questo problema?

    A quanto ho capito, il problema con cui ci si confronta è un problema di versione con il rendering del controllo WebBrowser in IE 7 Standard Mode e il WebBrowser effettivo che si sta utilizzando in IE è IE 8 o IE 9, e funziona lì, eppure il tuo JQuery / JavaScript o inclusioni CSS non funzionano in IE 7.

    Lascia che ti dica questo dritto. Il motore di rendering predefinito sul controllo webbrowser è fisso per garantire la compatibilità su tutte le piattaforms.

    In sostanza, se il browser installato è IE 7 – IE 9, il motore di rendering utilizzato è solo IE 7.0 (per impostazione predefinita).

    Se, tuttavia, la versione di IE installata è IE 6 o inferiore, il motore di rendering utilizzato è IE 4.0 (non scherzando), a meno che, ovviamente, non lo si imposti diversamente.

    C’è un equivoco sul fatto che il controllo di WebBrowser usi qualunque cosa sia attualmente installata (versione IE corrente), ma questo non è vero, poiché lo fanno per ridurre i problemi di compatibilità con le versioni precedenti. Puoi vedere (come prova) che questo è davvero il tuo problema andando su http://www.whatsmyuseragent.com nel tuo browser normale, e poi andando a quel sito web di nuovo nel tuo controllo WebBrowser, vedrai che dice MSIE 7.0 :).

    È ansible impostarlo per utilizzare la versione corrente di Internet Explorer, utilizzando un tag META in-page o modificando il Registro di sistema sulla macchina su cui verrà eseguito il controllo del browser Web (la modifica per Current_User e Local_Machine funzioneranno entrambi).

    Il controllo WebBrowser utilizzerà (normalmente) qualsiasi versione di IE installata, ma per ragioni di compatibilità renderà le pagine nella modalità Standard IE7 per impostazione predefinita.

    Se vuoi sfruttare le nuove funzionalità di IE9, dovresti aggiungere il meta tag all’interno del tag della tua pagina HTML.

    Questo meta tag deve essere aggiunto prima di qualsiasi link a CSS, JavaScript ecc. Che siano anche nel per funzionare correttamente (solo altri tag o possono venire prima di esso).

    Un’alternativa è aggiungere una voce di registro a:

    HKLM> SOFTWARE> Microsoft> Internet Explorer> Principale> FeatureControl> FEATURE_BROWSER_EMULATION

    E lì aggiungi “YourCompiledApplicationName.exe” con valore “9000” per forzare il controllo WebBrowser a visualizzare le pagine in modalità IE9. Sebbene ci siano altri valori che puoi usare anche tu, nota che questi documenti non sono del tutto accurati in quanto non sembra ansible ottenere una pagina per il rendering in modalità IE 8 indipendentemente dal valore che usi. (Nota: YourCompiledApplicationName.exe deve essere il nome del file EXE da compilare che contiene il controllo WebBrowser, funzionerà solo con il nome del file che hai incluso nel registro). Inoltre, non sarebbe male aggiungere vshost.exe e YourCompiledApplicationName.exe.svchost in modo che funzioni quando si esegue l’IDE e inoltre, se l’app è in esecuzione con Windows a 64 bit, è probabile che si debba anche impostare il seguente comando DWORD nel seguente percorso di registro allo stesso valore (come per il percorso a 32 bit):

    HK [LM | CU] \ SOFTWARE \ Wow6432Node \ Microsoft \ Internet Explorer \ Main \ FeatureControl \ FEATURE_BROWSER_EMULATION

    L’aggiunta della chiave di registro allo stesso percorso in HKCU invece di HKLM funzionerà anche – questo è utile in quanto la scrittura in HKLM richiede i privilegi di amministratore dove non lo è HKCU.

    Non sono sicuro se quando IE 10.0 uscirà se il controllo WebBrowser controlla il motore predefinito andrà a 10.0 (se 10.0 è installato sul sistema ovviamente) o se rimarrà come IE 7.0 anche dopo il rilascio di IE 10.0, dovremo vedere una volta viene fuori. Tuttavia, se supponiamo basandoci su esperienze precedenti, sospetto che IE 10.0 sarà l’ultima versione che utilizza il motore di rendering di IE 7.0 e quando uscirà IE 11, il motore di rendering predefinito rimarrà come IE 11 per tutte le versioni di IE tra IE 11 & IE 14. Questa è solo una supposizione estrapolando ciò che hanno fatto in passato.

    Per ulteriori informazioni sui valori a cui è ansible impostare il registro, verificarlo: