1

winformsアプリケーションでWebBrowserコントロールとSmoothDivScrollを使用て、htmlマーキーをレンダリングします。サンプルをダウンロードして追加しました

autoScrollingInterval: 3

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

それをより速く動かすために。IEでサンプルを開くと問題なく動作しますが、WebBrowserコントロールを使用してnavigateメソッドを呼び出すと、スクローラーの移動が非常に遅くなります。

この問題の原因は何ですか?

4

1 に答える 1

11

私が理解しているように、あなたが扱っている問題は、IE7標準モードでのWebBrowserControlレンダリングのバージョン管理の問題であり、IEで使用している実際のWebBrowserはIE8またはIE9のいずれかであり、そこでは機能しますが、JQuery /JavaScriptまたはCSSインクルージョンはIE7では機能しません。

これをまっすぐに話させてください。Webブラウザコントロールのデフォルトのレンダリングエンジンは、すべてのプラットフォーム間での互換性を確保するために修正されています。

基本的に、ブラウザがIE 7〜IE 9でインストールされている場合、使用されるレンダリングエンジンはIE 7.0のみです(デフォルト)。

ただし、インストールされているIEのバージョンがIE 6以下の場合、もちろん別の方法で設定しない限り、使用されるレンダリングエンジンはIE 4.0(冗談ではありません)です。

WebBrowserコントロールが現在インストールされているもの(現在のIEバージョン)を使用するという誤解がありますが、下位互換性の問題を減らすためにこれを行うため、これは当てはまりません。通常のブラウザでwww.whatsmyuseragent.comにアクセスし、WebBrowserコントロールでそのWebサイトに再度アクセスすると、これが本当に問題であることが(証拠として)わかります。MSIE7.0と表示されていることがわかります:)。

ページ内のMETAタグを使用するか、Webブラウザコントロールが実行されるマシンでレジストリを編集することにより、現在インストールされているバージョンのInternet Explorerを使用するように設定できます(Current_UserとLocal_Machineの編集は両方とも機能します)。

WebBrowserコントロールは、(通常)インストールしたIEのバージョンを使用しますが、互換性の理由から、デフォルトでIE7標準モードでページをレンダリングします。

IE9の新機能を利用したい場合は、HTMLページのタグ<meta http-equiv="X-UA-Compatible" content="IE=9" > 内にメタタグを追加する必要があります。<head>

このメタタグは、CSS、JavaScriptファイルなどへのリンクの前に追加する必要がありますが、これらも<head>正しく機能します(他の<meta>タグまたはタグのみがその<title>前に来ることができます)。

別の方法は、レジストリエントリを次の場所に追加することです。

HKLM>ソフトウェア>Microsoft>InternetExplorer>メイン>FeatureControl>FEATURE_BROWSER_EMULATION

そして、そこに値「9000」の「YourCompiledApplicationName.exe」を追加して、WebBrowserコントロールにIE9モードでページを表示させるようにします。他にも使用できる値がありますが、どの値を使用してもIE 8モードでページをレンダリングすることはできないように思われるため、これらのドキュメントは完全に正確ではないことに注意してください。(注:YourCompiledApplicationName.exeは、WebBrowserコントロールを含むコンパイルするEXEファイル名である必要があります。これは、レジストリに含めたファイル名に対してのみ機能します)。また、vshost.exeとYourCompiledApplicationName.exe.svchostを追加しても問題はないので、IDEで実行したときに機能します。また、アプリが64ビットWindowsで実行されている場合は、次のレジストリパスで次のDWORDも設定する必要があります。同じ値に(32ビットパスに従って):

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

HKLMの代わりにHKCUの同じパスにレジストリキーを追加することもできます。これは、HKCUへの書き込みには管理者権限が必要ですが、HKCUには必要ないため便利です。

WebBrowserコントロールのデフォルトエンジンが10.0になるか(もちろんシステムに10.0がインストールされている場合)、IE 10.0がリリースされたときに、IE10.0がリリースされた後もIE7.0のままであるかどうかはわかりませんが、一度確認する必要があります。出てくる。ただし、以前の経験に基づいて推測すると、IE10.0がIE7.0レンダリングエンジンを使用する最後のバージョンであり、IE 11がリリースされた場合、デフォルトのレンダリングエンジンはIE11間のすべてのバージョンのIEでIE11のままになります。 &IE 14.これは、彼らが過去に行ったことを推定することによる単なる推測です。

レジストリを設定できる値の詳細については、以下を確認してください。

于 2012-09-22T22:01:03.193 に答える