1

我想通过 vb-script 触发自定义事件。我可以通过 jscript 触发自定义事件

 function customEventFn()
 {
 //function body
 };
 var element = document.getElementById("elem id");
 customEventFn.call(element);

但是这种方法在 Vbscript 中不起作用。任何人都有任何想法在 Vbscript 中实现这一点

4

2 回答 2

0

如果我不熟悉 JS 术语并因此无法正确理解您的问题,请原谅,但是您所说的“自定义事件”是什么意思?两者(JS / VBS)都没有这样的功能。我们可以将函数绑定到SomeObjectWithEnets.ExistingEventName,例如:

// in JavaScript/JScript
function foo() {
    alert(typeof window.onload); // function
    alert(typeof this);          // object
}
window.onload = foo;

' in VBScript
Sub Foo()
    MsgBox TypeName(Window.OnLoad) 'Object
    MsgBox TypeName(Me)            'HTMLWindow2
End Sub
Set Window.OnLoad = GetRef("Foo")

从我对 JS 的贫乏知识中我所知道的是,它someFn.call(obj)只是“注入”(执行)someFnobj作用域中,而这一切都与事件无关。你能在 VBScript 中做到这一点吗?我不这么认为。

[编辑] 在您的第二篇文章之后,我明白您的意思,但怀疑在较旧的 IE 中是否可行。

' IE9+ -------------- -> IE8- --------------
' addEventListener    -> attachEvent (but deprecated)
' createEvent         -> createEventObject
' initCustomEvent     -> no alternative
' dispatchEvent       -> no alternative (fireEvent?)
' removeEventListener -> detachEvent (removed too)
于 2013-03-07T05:28:44.450 回答
0

我只想在 IE 中触发自定义事件。我可以使用以下代码在 iE9 中触发自定义事件,但它不适用于 IE8 或 IE7(小于 9)。

Function CustomFunction()
me.value ="samplevalue"
me.color = RED
End Function
set customFn = getRef("CustomFunction")
set element = document.getElementById("elemid");
element.addEventListener "OnSampleEvent", customFn
set Event = document.createEvent("sampleEvent")
Event.initCustomEvent "OnSampleEvent", false, false, nil
element.dispatchEvent(Event)
element.removeEventListener "OnSampleEvent", customFn

有什么方法可以在旧版本的 IE 中实现这一点。

于 2013-03-07T19:01:19.177 回答