在控件里添加了自定义的事件 OnSelectionChanged        public class SelectionChangedEventArgs : EventArgs
        {
            Range m_range;            public SelectionChangedEventArgs(Range axSht)
            {
                m_range = axSht;
            }            public Range Range
            {
                get { return m_range; }
            }
        }        public delegate void SelectionChangedHandler(Object sender, SelectionChangedEventArgs e);        //SelectionChanged事件   
        public event SelectionChangedHandler SelectionChanged;        protected virtual void OnSelectionChanged(Object sender, SelectionChangedEventArgs e)   
        {       
            if (SelectionChanged != null)        
            {              
                SelectionChanged( sender,e );
            }
        }        private void axSpreadsheet1_SelectionChange(object sender, EventArgs e)
        {
            AxSpreadsheet p = (AxSpreadsheet)sender;
            Range r = p.Selection;
            SelectionChangedEventArgs s = new SelectionChangedEventArgs(r);
            if (p != null)            
            {
                OnSelectionChanged(p, s);
            }
        }对JavaScript不是很熟,在JavaScript里如何触发这个事件呢。。
<body bgcolor='#223344'> 
<object id="ss" 
   classid="clsid:9551B223-6188-4387-B293-C7D9D8173E3A" OnSelectionChanged="SelectChange(这里怎么写?)"> 
</object> 
</body> 
</HTML><SCRIPT LANGUAGE="JavaScript">
<!--
function SelectChange(???)
{
alert("aaaa");
}
//-->
</SCRIPT>

解决方案 »

  1.   

    1、首先要加载这个Activex控件,例如
    <object id="helloworld" 
       classid="clsid:9551B223-6188-4387-B293-C7D9D8173E3E" codebase="Self.cab#version=1,3,0"

    </object> 2、这样调用:
    <input type="button" onclick="alert(helloworld.GetDefaultPrintStatus())" value="GetDefaultPrinterStatus"> 
      

  2.   

    回1楼:这样是通过BUTTON来读取控件的属性,不是控件触发的事件。。
      

  3.   

    button里面不就是用了javascript调用的?
      

  4.   

    嗯,在JS里用ID调用COM控件里函数就行了
      

  5.   

    我知道楼主的意思,你是想触发JS定义的自定义函数,而且要传写参数给这个函数,对吧。
    我以前也做过,但我后来改用了vbs,由于VBS对于函数并不需要注册,所以直接定义个函数就完了。JS你可以考虑看看!
    VBS中:
    比如你的事件是SelectionChange(args)
    那么VBS直接定义个 SelectionChange(args)的函数就可以了。对于OBJECT标签那里也不需要写这样的OnSelectionChanged="SelectChange()"的代码!当ACTIVEX触发SELECTIONcHANGE事件,就自动执行到你定义的函数里去了,参数也有哈!
      

  6.   

    我仔细回忆了下,JS我也做过一次,嘿嘿。
    貌似是用的<SCRIPT FOR="">那种方式,然后下面就直接定义事件函数就完了。我当时也是网上找的。之所以后来改用了VBS主要是因为JS中的变量都是指,而VBS的变量是引用,引用可以用来返回值。而我那OCX有些方法需要返回值,所以后来改了。
      

  7.   

    <script language="javascript" for="ID" event="SelectChange(args)">
    xxxx
    </script>
      

  8.   

    嗯,这种方法我知道,现在的问题是,这个控件是.NET开发的。
    .NET的事件里有2个参数: object sender, EnventArgs e
    (第一个sender是控件本身,第二个e是事件参数)我不明白的是对于JS来说,如何使用自定义的事件?
      

  9.   

    其实我用的OCX都是用VC开发的,开发COM有一定的标准,要想JS能够访问,需要实现一些接口。至于用C#来开发,以前有人说过。但我不是很了解了。不知道你是否研究过这问题。
    你可以就按照一般的方式来处理试下。
      

  10.   

    <script language="javascript" for="ID" event="SelectChange(args)">
    alert("触发了xx事件");
    </script>