我使用IHTMLDocument2::write()
,如here所述,以便將HTML從內存加載到IWebBrowser2
實例中。代碼如下所示:如何爲使用IWebBrowser2從內存加載的HTML文檔設置「基本URL」?
#include <MsHTML.h>
void CMyDlg::WriteHTML(const wchar_t* html)
{
IDispatch* pHtmlDoc = m_explorer.get_Document();
if (!pHtmlDoc)
return;
CComPtr<IHTMLDocument2> doc2;
doc2.Attach((IHTMLDocument2*)pHtmlDoc);
if (!doc2)
return;
SAFEARRAY* psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if (!psaStrings)
return;
BSTR bstr = SysAllocString(html);
if (bstr)
{
VARIANT* param;
HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m);
if (SUCCEEDED(hr))
{
param->vt = VT_BSTR;
param->bstrVal = bstr;
hr = SafeArrayUnaccessData(psaStrings);
if (SUCCEEDED(hr))
{
doc2->write(psaStrings);
doc2->close();
}
}
}
if (psaStrings)
SafeArrayDestroy(psaStrings);
}
這可以像我期望的那樣工作(HTML被加載)。然而,沒有任何鏈接的資源(圖片等)可以找到,因爲沒有「base URL」來加載它們。
如何設置文檔的基本URL,以便如果在「http://bar.com/baz/foo.png」處有圖像foo.png,則可以通過加載文檔中的「baz/foo.png」href找到該圖像?
謝謝。我不知道 標記,並插入 解決了我的問題。 –
如果您正在從根目錄運行網站,則可能需要嘗試「/」而不是絕對路徑。它應該可以工作,並且是推薦的方式。 –
這對我不起作用。我認爲,因爲我的代碼在本地運行,並且鏈接位於遠程服務器上,所以基礎需要成爲遠程服務器。 –