IE 9的Javascript麻烦

时间:2012-03-06 15:09:22

标签: c# javascript asp.net internet-explorer-9

在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”var在方法调用之间失去了它的价值......

在sender.getHost()之后直接调用我的方法“PerformRfidRead()”(参见 1 )时,一切正常。让计时器每隔2秒进行一次调用(参见 2 ),似乎我的var为空,我收到以下错误消息:

内容»:null对象或未定义

有什么想法吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我终于指出了这个问题:

Firefox,Chrome和IE9在计时器方面有不同的行为!

我的RefreshTimer方法调用太早,并且不能很快调用PluginLoaded方法来初始化silverlightControl对象!

因此,我通过这样做纠正了:

function CallSilverlight() 
{
  if(silverlightControl != null)
  {
    silverlightControl.Content.SilverlightScriptableObject.PerformRfidRead(); //**2**  
  }
}

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