У меня есть следующий код на моем сайте. Этот код представляет собой c # activex, функция оповещения (MyCC.GetID (). Fullname) работает, но события не работают. Что я делаю не так?
<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>
Правильный синтаксис для погружения этих событий в Javascript следующий:
function MyCC::CardInserted () { }
или
MyCC::CardInserted = function () { }
Естественно, вам не нужно указывать анонимную функцию:
MyCC::CardInserted = OnCardInserted;
Чтобы прикрепить событие к ActiveX, вы можете использовать решение Andy 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>
MyCC.attachEvent('CardInserted', OnCardInserted);