TWebBrowser コンポーネント (Delphi 7) があり、メモリ ストリームから HTML をロードしました。ページの HTML コードが正常に読み込まれ、ページが正しく表示されます。しかし、「file:///C:/dir/page.html」のようなアドレス (href 属性値) を持つハイパーリンクをクリックしようとすると、何も起こりません。エラー メッセージは表示されず、ブラウザは別のページに移動しようとしません。URL は 100% 正しいです。同じ Web ページを同じ TWebBrowser インスタンスにロードすると、メモリ ストリームではなくハード ドライブ上のファイルから、まさにこのリンクが正常に機能します。何が間違っている可能性がありますか?
次のステートメントを実行しようとしました。
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_INTRANET, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_TRUSTED, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_INTERNET, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_UNTRUSTED, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_LOCAL_MACHINE, 'about:blank', SZM_DELETE));
OleCheck(WebBrowser.SecurityManager.SetZoneMapping(URLZONE_LOCAL_MACHINE, 'about:blank', SZM_CREATE));
、しかし、それらは何も変更しませんでした (エラーなしで正しく実行されました。つまり、常に HRESULT = S_OK です)。TWebBrowser は同じように動作しますが、コンポーネントは実際には TEmbeddedWB (SecurityManager プロパティを持っています) であると言わざるを得ません。
一時ディレクトリ内のファイルを使用することに頼ることを考えています。
おかげさまで、一時ディレクトリ内のファイルを使用して、最終的に問題を回避しました。