昨天有个问题,具体见链接http://topic.csdn.net/u/20091111/21/d5175b98-88f8-4059-b4e7-f11eddc7105e.html但是经过测试发现
var act = new ActiveXObject()
得到的对象和用
<object classid="..." id="oo">
var obj = document.getElementById("oo")
得到的对象似乎不太一样我的activeX中有个attachEvent(eventName, func)方法用于回调JS的函数,在obj对象中可用,但是act就报"对象不支持此属性或方法"
但是activeX中的其它方法却是2者都可以正常调用
这是怎么回事呢?
var act = new ActiveXObject()
得到的对象和用
<object classid="..." id="oo">
var obj = document.getElementById("oo")
得到的对象似乎不太一样我的activeX中有个attachEvent(eventName, func)方法用于回调JS的函数,在obj对象中可用,但是act就报"对象不支持此属性或方法"
但是activeX中的其它方法却是2者都可以正常调用
这是怎么回事呢?
解决方案 »
- ajax异步查询别人写的例子我没怎么看懂
- Ajax 提交问题...
- 一个div上放置了一个checkbox,重叠在一起,如何处理单击事件
- 问一个关于编码方式的问题
- 请问dom如何取到js用document.write打出来的结点
- javascript控制<li>的样式
- excel问题,高手请进.............
- 关于div动态控制大小问题?????????????
- 赋值----怎么办----------急 在线等
- 我想在我的页面打开以后,本来是在一个按牛下运行的东西,直接在打开时候运行。如何实现。
- 使用 jquery mobile 点击超链接提示“error loading page”,求解!
- 网上复制的js交互代码 怎么在同一个页面 重复使用呢
在web中使用ActiveX组件有两种方法,一是如下
<HTML>
<HEAD>
<TITLE>rep_print_medcan.CAB</TITLE>
</HEAD>
<BODY>
<OBJECT ID="Rep_Print_MedCan21"
CLASSID="CLSID:C0558D51-6AFD-11D5-BF5C-005070024001"
CODEBASE="rep_print_medcan.CAB#version=1,0,0,25">
</OBJECT>
</BODY>
</HTML>
OBJECT标签中,通过ID指点了对象的ID号,javascript可以使用该ID号来引用该对象,而classid用于标识这个组件,每个ActiveX组件都有唯一一个用于表示他的ID号。而codebase指定的程序下载到本地(在系统目录的“Downloaded Program Files”子目录下),然后调用组件程序的自注册入口函数注册到当前系统中,以后的创建都在本地进行,不再涉及codebase属性
使用以上的方法来创建ActiveX对象,有些参数设置需要手抖的填写,麻烦,另外可以使用javascript的ActiveXObject对象来创建,一般过程是var act=new ActiveXObject(proid),proid为该ActiveX的标识号,是Classid的另一种表示方法
您说的是调用activeX的2种方法,我现在classid和progid都是对的,而且2种方式获得的对象也可以用,但似乎只是在回调函数上有所区别,用new ActiveXObject(...)得到的对象无法调用ocx的回调函数,而用<object ...>得到的对象却可以,我想问下这是什么原因.这是不是和ocx的实现有所关联?
那个回调函数attachEvent(eventName, func)用VS的activeX Control Test Container工具是看不见的,所以我在想,其中是不是会有其他原因感谢
attachEvent(...)方法并不是ocx的方法,而是DOM的方法,在这里也就是<object>的方法,当用<object..>加载ocx的时候,ocx被<object..>包装了一下,当ocx中抛出某个事件的时候,<object>就收到了这个事件,而你又通过attectEvent(...)为<object>绑定了事件的调用函数,所以....而用new ActiveXObject()的时候得到的对象并不是一个DOM对象,所以本身不具有attachEvent(...)方法
此时就需要ocx自己去实现这个方法,那是另外一个问题了.不知道是否正确,请指正感谢