【发布时间】:2010-10-30 02:18:57
【问题描述】:
我面临一个挑战,不知道如何在 jQuery 中解决这个问题。
我的目的是写一个扩展函数来代替 Facebook callSWF 函数。
Facebook callSWF run like that: **domObj.callSWF("myFunctionName", param1, param2 ... paramx);**
现在,我需要替换该函数。对于 jQuery,我可以像这样通过 JS 调用 Flash:
if($('#swfObj')[0])
{
$('#swfObj')[0].myFunctionName(param1, param2 ...);
}
else
{
$('#swfObj').myFunctionName(param1,param2 ...);
}
但是,这意味着我必须更改之前调用“callSWF”的 50 多个不同的地方,并用这个具有不同函数名称的代码块替换。这不好。
所以,我决定写一个扩展。理想情况下,我可以这样调用:
$('#swfObj').callSWF("myFunctionName", param1, param2 ...);
我开始编写函数并卡住了....这是我到目前为止的代码:
(function( $ ){
$.fn.callSWF = function(swfFuncName, param1) {
if($(this)[0])
{
$(this)[0].**swfFuncName**(param1);
}
else
{
$(this).**swfFuncName**(param1);
}
return this;
};
})( jQuery );
我不知道该怎么做的部分是...动态传入函数名(即 swf 函数名)。因此,swfFuncName 将根据我要与之通信的 flash 函数而有所不同。
例如我可以这样做:
**$('#swfObj').callSWF("showMyName", 'whatever');**
**$('#swfObj').callSWF("anotherFunction", 1234);**
**$('#swfObj').callSWF("yetAnotherFunction", 'kbieure');**
有什么想法吗?谢谢。
【问题讨论】: