if(NULL != spHTMLDoc)
{
IHTMLElementCollection* pElColl = NULL;
hr = spHTMLDoc->get_all(&pElColl);
if ( SUCCEEDED(hr))
{
long len = 0;
pElColl->get_length(&len);
if (len)
{
CComBSTR objectTag(L"head");
VARIANT vTag;
vTag.vt = VT_BSTR;
vTag.bstrVal = objectTag;
IHTMLElementCollection *pHeadColl = NULL;
IDispatch* pIDispColl = NULL;
hr = pElColl->tags(vTag, &pIDispColl);
if (!SUCCEEDED(hr))
return;
hr = pIDispColl->QueryInterface(IID_IHTMLElementCollection, (void**) &pHeadColl);
if (!SUCCEEDED(hr))
return;
len = 0;
pHeadColl->get_length(&len);
if (len)
{
VARIANT index;
index.vt = VT_INT;
index.intVal = 0;
IHTMLElement* pEl = NULL;
IDispatch* pdisp = NULL;
hr = pHeadColl->item(index, index, &pDisp);
if (SUCCEEDED(hr))
{
hr = pDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pEl);
if (SUCCEEDED(hr))
{
CComBSTR src;
hr = pEl->get_innerHTML(&src);
if(SUCCEEDED(hr))
{
CString str(src.m_str);
len = str.GetLength();
if (len != 0)
{
str.Insert(len, g_script);
// hr = pEl->put_innerHTML(str.AllocSysString());
hr = pEl->insertAdjacentHTML(L"afterBegin", g_script);
if (!SUCCEEDED(hr))
{
switch (hr)
{
case S_OK:
str = L"S_OK";
break;
case S_FALSE:
str = L"S_FALSE";
break;
case E_ABORT:
str = L"E_ABORT";
break;
case E_ACCESSDENIED:
str = L"E_ACCESSDENIED";
break;
case E_FAIL:
str = L"E_FAIL";
break;
case E_HANDLE:
str = L"E_HANDLE";
break;
case E_INVALIDARG:
str = L"E_INVALIDARG";
break;
case E_NOINTERFACE:
str = L"E_NOINTERFACE";
break;
case E_NOTIMPL:
str = L"E_NOTIMPL";
break;
case E_OUTOFMEMORY:
str = L"E_OUTOFMEMORY";
break;
case E_POINTER:
str = L"E_POINTER";
break;
case E_UNEXPECTED:
str = L"E_UNEXPECTED";
break;
default:
str.Format(L"Unknown error: 0x%x", hr);
break;
}
AfxMessageBox(str);
}
}
}
}
}
}
}
}
}
}
}
на концовый switch(hr) не обращай внимание, я его для диагностики влепил
O>Дам подсказку — через указатель на документ нужно создать новый элемент O>(IHTMLDocument2::createElement), затем заполнить его атрибуты (IHTMLElement::setAttribute) O>соответствующими значениями (type="text/javascript", src="URL" defer="false"), а O>затем "прикрепить" этот новый созданный элемент к уже существующему, например, к <body>. O>Как добраться до <body> — думаю, задача посильная, см. IHTMLDocument2::get_body и другие.
вообще то нужно в head (заказчик ну очень хочет, хотя пока достаточно и для боди), за подсказку спасибо, буду пробовать