在C#,Asp.net中,我正在通过后台代码创建Javascript代码:
var silverlightControl = null;
function PluginLoaded(sender, args)
{
silverlightControl = sender.getHost();
silverlightControl.Content.SilverlightScriptableObject.PerformRfidRead(); //**1**
}
function CallSilverlight()
{
silverlightControl.Content.SilverlightScriptableObject.PerformRfidRead(); //**2**
}
var tid = setInterval(RefreshTimer, 2000);
function RefreshTimer()
{
CallSilverlight();
}
它可以在Firefox和Chrome上完美运行,但似乎无法在IE 9上运行!始终正确调用PluginLoaded方法。但是似乎我的“ silverlightControl”变量在方法调用之间失去了它的值。
在sender.getHost()之后直接调用我的方法“ PerformRfidRead()”(参见1),一切正常。当让计时器每2秒进行一次调用(参见2)时,似乎我的var为空,并且收到以下错误消息:
内容»:空对象或未定义
任何想法 ?
谢谢你的帮助。
最佳答案
我终于把手指放在这个问题上:
Firefox,Chrome和IE9在计时器方面有不同的行为!
我的RefreshTimer方法被调用为时过早,而PluginLoaded方法无法被尽快调用以初始化silverlightControl对象!
因此,我通过执行以下操作进行了更正:
function CallSilverlight()
{
if(silverlightControl != null)
{
silverlightControl.Content.SilverlightScriptableObject.PerformRfidRead(); //**2**
}
}
希望这可以帮助某人...