我有一個ActiveX對象(主),並想動態地調用它的功能。爲此,我使用apply()函數。但不幸的是,InternetExplorer告訴我一些大致的內容:「這個對象不支持這種方法」。有人能給我一個暗示我能做些什麼嗎?JavaScript:有ActiveX對象的問題和apply() - 函數
(爲了測試這個你也可以使用一個小的flash對象爲主機,稱之爲「DoSomething的」,而不是我的具體的「初始化」。)
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);
}
對於comparsion,這是適用於()函數動作:
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);
}
好的。很高興它有幫助:) – kangax 2009-09-17 13:08:24
@hobotron我認爲,如果你嘗試用我的編輯Kangax的答案,它應該工作! – 2012-06-12 17:18:40