c++调用javascript的问题

graydream 2006-03-24 11:04:03
我要再浏览器中加一个http服务插件,假定使用8080端口,程序发送soap包到8080 的时候,这个服务接受数据并放到当前的浏览器里,并调用调用页面中的 javascript使用soap包中的数据。

现在遇到很郁闷的问题,总是找不到javascript函数的id。

我在类里重载了SetClientSite(IOleClientSite *pClientSite)
得到pClientSite指针,

做如下处理:
STDMETHODIMP ChttpKeeper::SetClientSite(IOleClientSite *pClientSite)
{
// TODO: Add your implementation code here
IOleObjectImpl<ChttpKeeper>::SetClientSite(pClientSite);

if(!loaded)
{
loaded=1;
HRESULT hr = S_OK;
pClientSite->GetContainer(&spIE);
//CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> spDoc;
spDoc=spIE;
}
return S_OK;
}

其中spDoc这样声明:
CComQIPtr<IHTMLDocument2,&IID_IHTMLDocument2> spDoc;

我在这个函数里似乎得到了指向DOM树的指针

然后再update函数里这么写:

bool ChttpKeeper::update(const char* date)
{
HRESULT hr = S_OK;
CComPtr<IDispatch> pScript;
hr = spDoc->get_Script(&pScript);
DISPID dispid;
CComBSTR bstrMember("testcom");
//CComBSTR bstrMember("test1");
hr=pScript->GetIDsOfNames(IID_NULL,&bstrMember,1,LOCALE_USER_DEFAULT, &dispid);
return 1;
}

testcom是javascript函数,我无法通过GetIDsOfNames找到这个函数id。
但是却可以通过GetIDsOfNames这一步可以找到test1的id,test1是一个table

html代码这么写的:


<HTML>
<HEAD>
<TITLE>ATL 3.0 test page for object httpKeeper</TITLE>
</HEAD>
<BODY>
<OBJECT ID="httpKeeper" CLASSID="CLSID:92CE5A72-A500-454B-80D4-5823E53351C2"></OBJECT>

<table id="test1">
</table>
</BODY>

<script LANGUAGE="JavaScript">
function testcom()
{
alert("nothing");
}

</script>
</HTML>

附件里有完整代码。

我也参考了这3个例子:也没有结果
http://www.pconline.com.cn/pcedu/empolder/gj/vc/0312/259928.html
http://support.microsoft.com/kb/318426
http://www.codeproject.com/com/jscalls.asp

其中第3个例子可以执行,但他使用了mfc的函数
HtmlView::GetHtmlDocument()来获得一个CComPtr<IDispatch> spDisp
我不能使用mfc,也没找到能够替代这个函数的东东。
...全文
627 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
firmbird 2006-03-28
  • 打赏
  • 举报
回复
Document->get_Script()返回是的脚本引擎对象,而不是脚本集合。GetIDsOfNames()应该使用的是Script标签的ID而不是脚本函数名称
graydream 2006-03-25
  • 打赏
  • 举报
回复
更新一下这个问题的新发现,我在页面中增加了一个控件,利用点击事件调用javascript能够成功,但是使用8080端口的事件却不能调用成功,我怀疑这是安全限制的问题。那位高手能解释一下?
graydream 2006-03-24
  • 打赏
  • 举报
回复
不能上传附件,哎,另外我用的vc6,不知道是不是vc6不支持?

http://graydream.googlepages.com/httpin.rar

3,056

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧