<script language="JavaScript">
var testActiveX1 = null; //对象1
var res1;var testActiveX2 = null; //对象2
var res2; function DetectActiveX()
{
  try
  {
    testActiveX1 = new ActiveXObject("test.Objecttest");
    res1 = testActiveX1.InitInfo("tt1");    if(res1 == 0)
    {
      alert("初始化tt1失败!");
    }    testActiveX2 = new ActiveXObject("test.Objecttest");
    res2 = testActiveX2.InitInfo("tt2");    if(res == 0)
    {
      alert("初始化tt2失败!");
    }   
  }
  catch(e)
  {
    alert("有问题!");
  }
}
 function PrintMsg()
{
  try
  {
    comActiveX1.PrintInfo("111");
    comActiveX2.PrintInfo("222");
  }
  catch(e)
  {
    alert("有问题了!");
    return false;
  }
}
</script>在InitInfo函数中,日志格式是:  init对象为:对象名
在这个PrintInfo函数中,是打印出来的信息格式为:   对象名  字符串上面的js运行日志是:
init对象为:tt1
init对象为:tt2
tt2 111
tt2 222这结果明显不是我所想要的,我想要的结果应该是
init对象为:tt1
init对象为:tt2
tt1 111
tt2 222请问大家,这是上面原因呢。

解决方案 »

  1.   

    testActiveX1 == comActiveX1 ?,testActiveX2 == comActiveX2 ?
    代码不全,且乱七八糟的,不明真想,日志,是由test.Objecttest这个组件打印的?
      

  2.   

    看你的意思,应该是comActiveX1的对象名被comActiveX2的对象名覆盖了。
    其他的看不懂
      

  3.   


    就是这个意思日志是由test.Objecttest这个组件打印的
      

  4.   

    我重复一下问题吧我有一个ActiveX dll的控件,里面有两个函数:
    String obj;
    InitInfo(String s)
    {
      obj = s;
      //输出信息为:  init对象为:s
    }
    PrintInfo(String s)
    {
      //输出信息为:  obj s
    }然后我在js里new了两个ActiveXObject对象testActiveX1和testActiveX2,再调用控件里的函数,顺序如下:
    testActiveX1 = new ActiveXObject("test.Objecttest");
    testActiveX1.InitInfo("tt1");testActiveX2 = new ActiveXObject("test.Objecttest");
    testActiveX2.InitInfo("tt2");
    再调用PrintInfo()函数
    testActiveX1.PrintInfo("test1");
    testActiveX2.PrintInfo("test2");根据我的想法的话打印出的日志为
    init对象为:tt1
    init对象为:tt2
    tt1 test1
    tt2 test2但是实际上打印出的为:
    init对象为:tt1
    init对象为:tt2
    tt2 test1
    tt2 test2也就是testActiveX2把testActiveX1给覆盖掉了,这是什么原因呢,该如何做呢
      

  5.   

    试试这样
    testActiveX1 = new ActiveXObject("test.Objecttest");
    testActiveX1.InitInfo("tt1");
    testActiveX1.PrintInfo("test1");
    testActiveX1 = null;
    testActiveX2 = new ActiveXObject("test.Objecttest");
    testActiveX2.InitInfo("tt2");
    testActiveX2.PrintInfo("test2");
      

  6.   


    如果这样的话就不符合我的想法了啊
    我的想法是怎么能实现testActiveX1和testActiveX2的共存呢
      

  7.   

    代码太复杂了,建议你学一些ext吧,这个可以简化代码,而且容易学。只要有一点Javascript的基础就学的会的。
      

  8.   

    应该是控件给限制了,或者有其他的设置什么的,test.Objecttest这个看不到,什么判断不了
      

  9.   

    把你的test.Objecttest代码完整贴出来看看,好像不是JS这边的问题
      

  10.   

    test.Objecttest这里面就是两个函数InitInfo和PrintInfo 以及一个全局字符串变量obj,就没有其他的功能了
      

  11.   

    String obj;是个全局变量吧!你的输出明显说明,是第二个new ActiveXObject 更改了 obj的值,也就是说, obj 不是私有的。是你的所谓的ActiveX dll控件的问题
      

  12.   

    如过这样行的通的话,可以肯定不是JS这边的问题你说的全局字符串变量obj也不知道是怎么定义的?你可以贴出来让大家帮你看看