2009-07-20 50 views
2

我在我的网站中有下一个代码。此代码是c#activex,函数警报(MyCC.GetID()。Fullname)有效,但事件不起作用。我做错了什么?ActiveX事件在javascript中不起作用

<object id="MyCC" codebase="http://localhost:3239/WebDAVCab.CAB" 
    classid="clsid:5F9A5DDB-0D35-4893-A9ED-1FAFFE94373A" width="80" height="120" VIEWASTEXT> 
</object> 

<script type="text/javascript"> 
     MyCC = document.getElementById("MyCC"); 
     alert(MyCC.GetID().Fullname); 

     MyCC.CardInserted = OnCardInserted; 
     MyCC.CardRemoved = OnCardRemoved; 

     function OnCardInserted() 
     { 
      alert("raised"); 
     } 
     function OnCardRemoved() 
     { 
      alert("raised2"); 
     } 
    </script> 

回答

1

的正确语法沉没在Javascript这些事件如下:

function MyCC::CardInserted() { } 

MyCC::CardInserted = function() { } 

当然,你不必指定一个匿名函数:

MyCC::CardInserted = OnCardInserted; 
+0

我测试过但在MyCC中返回错误::我得到一个ie错误预期; – pedrofernandes 2009-07-21 11:20:49

0
  1. 尝试使用MyCC.attachEvent('CardInserted', OnCardInserted);代替
  2. 您还需要实现IObjectSafety
+0

我试过但没有着火。在windows窗体中引入这个控件并且工作得很好,所有的事件都是在windows窗体中触发的,但是在html/javascript中没有。 – pedrofernandes 2009-07-20 12:59:43

1

为了将事件附加到ActiveX可以使用安迪e系统解决方案,但EVAL:

<object name="MyCC" id="MyCC" codebase="http://localhost:3239/WebDAVCab.CAB" 
    classid="clsid:5F9A5DDB-0D35-4893-A9ED-1FAFFE94373A" width="80" height="120" VIEWASTEXT> 
</object> 

<script type="text/javascript"> 

    eval("function MyCC::CardInserted() {return OnCardInserted();}"); 
    eval("function MyCC::CardRemoved() {return OnCardRemoved();}"); 

    function OnCardInserted() 
    { 
     alert("raised"); 
    } 
    function OnCardRemoved() 
    { 
     alert("raised2"); 
    } 
</script> 
相关问题