在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**
  }
}


希望这可以帮助某人...

07-24 21:11