ActiveX控件可以用连接点创建事件,此事件可以在DHTML网页中被javascript函数处理,在js中响应ActiveX控件事件的方法如下:
1. 静态创建方法
<script>
function OnEvent1()
{
}
</script>
<OBJECT id="myControl"
codeBase="myControl.cab"
classid="clsid:1ACA02DF-AF52-4371-89B9-B9245BD21831"
></OBJECT>
<script language=javascript
FOR="myControl"
EVENT="event1()">
OnEvent1();
</script>
2. 动态创建方法
function onBodyLoad()
{
myControl = document.createElement("OBJECT");
document.body.appendChild(myControl);
myControl.codeBase = "myControl.cab";
myControl.classid = "clsid:1ACA02DF-AF52-4371-89B9-B9245BD21831";
myControl.attachEvent("event1", OnEvent1);
}
<body οnlοad="onBodyLoad()">
...
3. 错误的动态创建方法
function onBodyLoad()
{
myControl = new ActiveXObject(myControl.Test);
myControl.attachEvent("event1", OnEvent1);
~~~~~~~~~~~~~~~~~~此时会报告“无此方法”,这是因为
用new ActiveXObject创建的对象并非一个DOM对象,因此不能
调用attachEvent方法。而用document.createElement("OBJECT")
创建的才是一个DOM对象。
}
<body οnlοad="onBodyLoad()">
...
1. 静态创建方法
<script>
function OnEvent1()
{
}
</script>
<OBJECT id="myControl"
codeBase="myControl.cab"
classid="clsid:1ACA02DF-AF52-4371-89B9-B9245BD21831"
></OBJECT>
<script language=javascript
FOR="myControl"
EVENT="event1()">
OnEvent1();
</script>
2. 动态创建方法
function onBodyLoad()
{
myControl = document.createElement("OBJECT");
document.body.appendChild(myControl);
myControl.codeBase = "myControl.cab";
myControl.classid = "clsid:1ACA02DF-AF52-4371-89B9-B9245BD21831";
myControl.attachEvent("event1", OnEvent1);
}
<body οnlοad="onBodyLoad()">
...
3. 错误的动态创建方法
function onBodyLoad()
{
myControl = new ActiveXObject(myControl.Test);
myControl.attachEvent("event1", OnEvent1);
~~~~~~~~~~~~~~~~~~此时会报告“无此方法”,这是因为
用new ActiveXObject创建的对象并非一个DOM对象,因此不能
调用attachEvent方法。而用document.createElement("OBJECT")
创建的才是一个DOM对象。
}
<body οnlοad="onBodyLoad()">
...