aspx页如何响应客户端Active控件的自定义事件,Js 或 Vbs的实现方式均可

Smartdoggie 2008-03-12 01:15:57
工作中需要用到一个客户端已注册的Active控件进行Ic卡的信息读取
页面需要调用该控件的方法,将该控件设置为连续工作模式,然后该控件读取Ic卡信息后将触发事件CardChanged,页面需要响应事件进行信息的显示和保存工作
现在问题是如何使用Js或Vbs实现对事件的响应,或者有没有其他的实现方式?

我现在试用了两种方法:
方法一:
在Body标签里面定义
<object classid='clsid:526EF549-DA20-490B-8FC5-02F3AB8E87EB' id='CardReader' ></object>

但是在通过document.getElementById 调用控件的方法时失败了……总是提示对象未实现该方法
var reader= document.getElementById ("CardReader");
reader.StartRead();

而且这种方式的事件响应又应该如何写?是写成下面这种吗?

JS:
<SCRIPT LANGUAGE=javascript FOR=CardReader EVENT=CardChanged> //for 和 event标签好像已经得不到支持
//事件处理
</SCRIPT>

或者在Vbs里直接:
Sub idCardReader_CardChanged()
MsgBox "OK"
End Sub

方法二:
直接声明控件(因为控件是没有界面的,所有没有关系)
var CardReader = new ActiveXObject("CardCommon.IcCard.1");

这里能够调用控件的方法
CardReader.StartRead();

但是如何响应控件的事件 + +b

我现在因为Ajax的关系刚刚接触Js,这方面的事情还有很多不了解
大家帮帮忙

...全文
317 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Smartdoggie 2008-05-23
  • 打赏
  • 举报
回复
解决了...
IE情况
document.getElementById("控件ID").attachEvent("事件名",函数名);
Firefox情况
document.getElementById("控件ID").addEventListener("事件名",函数名,false);
Smartdoggie 2008-03-14
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 WO_YOU_XIE_SHANG_XIN 的回复:]
用var reader= document.all('CardReader)试试 效果一样的
有时候用getElementById确实取不到自定义控件的对象
[/Quote]

这种方法也是取不到……

这是我的实验代码:
<body>
<object classid='clsid:526EF549-DA20-490B-8FC5-02F3AB8E87EB' id='CardReader'></object>
<script language="javascript" type="text/javascript">
function BeginRead()
{
var reader = document.all('CardReader');
if(reader!=null)
{
reader.Read();
alert("调用成功");
}
else
{
alert("调用失败");
}
}
</script>

<input id="btnRead" type="button" value="Read" onclick="BeginRead();" />


<SCRIPT LANGUAGE=javascript FOR=CardReader EVENT=CardChanged>
alert('I was called');
</SCRIPT>
</body>
Smartdoggie 2008-03-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 cpp2017 的回复:]
这种方法就可
<SCRIPT LANGUAGE=javascript FOR=CardReader EVENT=CardChanged>


document.getElementById 调用控件的方法时失败了……总是提示对象未实现该方法
============
你的控件未注册或浏览器的安全设置过高,请检查。
[/Quote]

控件已经通过regsvr32注册,IE7 Intranet安全设置已经降到最低,包括启用对未标记为可安全执行ActiveX控件的初始化并执行脚本

通过object标签启动控件,控件能出现在网页上
<object classid='clsid:526EF549-DA20-490B-8FC5-02F3AB8E87EB' id='CardReader' > </object>
JavaScript在执行到下面的时候仍然提示对象不支持该属性或者方法
var reader= document.getElementById ("CardReader");
reader.StartRead();

请问这可能是什么问题引起的?
1)浏览器版本?是不是IE7不支持使用object标签调用控件的方法这种方式
2)控件是用VB6开发的,这会不会造成一些问题 //虽然不太可能……

使用方式一就没法调用控件方法
方式二则不知道怎么响应事件,按照网上说的试过使用function CardReader::CardChanged()则JavaScript直接解释出错
ph0507 2008-03-13
  • 打赏
  • 举报
回复
学习啊
地下室小红叔 2008-03-13
  • 打赏
  • 举报
回复
用var reader= document.all('CardReader)试试 效果一样的
有时候用getElementById确实取不到自定义控件的对象
fcxxfcxx 2008-03-12
  • 打赏
  • 举报
回复
up
cpp2017 2008-03-12
  • 打赏
  • 举报
回复
这种方法就可
<SCRIPT LANGUAGE=javascript FOR=CardReader EVENT=CardChanged>


document.getElementById 调用控件的方法时失败了……总是提示对象未实现该方法
============
你的控件未注册或浏览器的安全设置过高,请检查。
myvicy 2008-03-12
  • 打赏
  • 举报
回复
mark
kings2015 2008-03-12
  • 打赏
  • 举报
回复
学习 帮顶

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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