2011-04-26 72 views
3

我有TWebBrowser組件(德爾福7),我從內存流加載HTML。頁面的HTML代碼加載正常,頁面顯示正確。但是,當我嘗試點擊任何帶有地址(href屬性值)的超鏈接時,如「file:/// C:/dir/page.html」,則不會發生任何事情。沒有錯誤消息,並且瀏覽器不會嘗試轉到其他頁面。該URL是100%正確的 - 當我加載相同的網頁到同一TWebBrowser實例,但從硬盤上的文件,而不是從內存流,正是這個鏈​​接工作正常。 任何想法可能是錯的?德爾福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所有的時間)。我必須說組件實際上是TEmbeddedWB(它有SecurityManager屬性),儘管TWebBrowser的行爲方式相同 - 我只是重新檢查它。

我考慮訴諸在臨時目錄中使用文件。


感謝所有,我最終通過使用臨時目錄中的文件解決了這個問題。

+0

您是否嘗試過更換'文件:///'鏈接與普通'HTTP://'鏈接? – 2011-04-26 20:18:34

+0

我剛試過。與「http://」協議的鏈接確實有效。 「file://」鏈接不。 – GreyWolf 2011-04-26 20:46:04

+0

點擊「file:///」鏈接時似乎沒有任何反應。我檢查了我定義的所有事件處理程序,並且它們都沒有被調用。 – GreyWolf 2011-04-26 20:49:01

回答

1

你的問題:互聯網瀏覽器本身就是錯的

也就是說,它不可能從加載從其他地方比文件的網站訪問本地文件://位置,而因爲IE 7.改變你的安全設置正如您已經提到的最簡單的解決方法是從本地驅動器的file://位置打開網站,然後您將獲得此訪問權限。

以下是關於一些含淚文章:

File URI link to local folder in IE7 not working
http://blogs.msdn.com/b/freeassociations/archive/2005/05/19/420059.aspx
http://blogs.msdn.com/b/ie/archive/2005/08/15/452006.aspx