【发布时间】:2009-09-16 15:25:33
【问题描述】:
我有一个 ActiveX 对象(主)并希望在其上动态调用函数。为此,我使用 apply() 函数。但遗憾的是,InternetExplorer 告诉我一些类似的东西:“这个对象不支持这个方法”。有人能告诉我我能做什么吗?
(要对此进行测试,您还可以使用一个小的 flash 对象作为 Master 并调用“doSomething”而不是我的特定“Initialize”。)
function invoke(object, fnName, args)
{
return object[fnName].apply(object, args);
}
function test_it()
{
try{
Master = window.document["Master"];
}
catch(e){alert(e);}
var param = [1,"VC2"];
var ret = invoke(Master, "Initialize", param);
alert("got: "+ret);
}
作为比较,这是 apply() 函数的作用:
function Obj()
{
this.msg = function(a, b, c)
{
alert("msg: \n a: "+a+"\n b: "+b+"\n c: "+c);
return "hi";
}
return this;
}
function invoke(object, fnName, args)
{
return object[fnName].apply(object, args);
}
function test_it()
{
var obj = new Obj();
var ret = invoke(obj, "msg", [1, 2, 3]);
alert("got: "+ret);
}
【问题讨论】:
标签: javascript internet-explorer activex apply