javascript调用ActiveX函数的方法
Q:
页面上的javascript如何调用ActiveX中的函数?
A:
ActiveX需要公布方法给javascript调用。
在ClassWizard中Automation页,添加Method。
手动添加Method:
ODL文件中添加
//{{AFX_ODL_METHOD(CTestCtrl)
[id(3)] void ShowDialog();
//}}AFX_ODL_METHOD
CTestCtrl.h中添加:
//{{AFX_DISPATCH(CTestCtrl)
afx_msg void OnShowDialog();
//}}AFX_DISPATCH
//{{AFX_DISP_ID(CTestCtrl)
dispidShowDialog = 3L,
//}}AFX_DISP_ID
CTestCtrl.cpp中添加:
//{{AFX_DISPATCH_MAP(CTestCtrl)
DISP_FUNCTION(CTestCtrl, "ShowDialog", OnShowDialog, VT_EMPTY, VTS_NONE)
//}}AFX_DISPATCH_MAP
然后实现OnShowDialog:
void CTestCtrl::OnShowDialog() {
// ... blahblah
}
最后,在javascript中调用:
<script type="text/javascript">
function ShowDialog(){
if(window.ActiveXObject){
try{
document.getElementById("objTest").ShowDialog();
}catch(e){}
}
}
</script>
<OBJECT WIDTH="300" HEIGHT="300" CLASSID="clsid:12342234-3234-4234-5234-623472348234" ID="objTest"></OBJECT>