【问题标题】:Javascript troubles with IE 9IE 9 的 Javascript 问题
【发布时间】:2012-03-06 15:09:21
【问题描述】:

在 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 似乎是空的,并且收到以下错误消息:

内容 » : null 对象或未定义

有什么想法吗?

感谢您的帮助。

【问题讨论】:

  • 不是答案,但考虑将您的 Javascript 代码放在外部 js 文件中,并使用 RegisterClientScriptInclude() 从您的页面引用它。这将提高您的代码的可读性和可维护性。也欢迎以同样的方式编辑您的问题,所有这些对ScriptBuilder.Append() 的电话都让我头晕目眩。
  • 嘿,你去,应该更具可读性:)

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


【解决方案1】:

我终于解决了这个问题:

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

我的 RefreshTimer 方法调用得太早了,无法尽快调用 PluginLoaded 方法来初始化 silverlightControl 对象!

因此,我通过这样做进行了更正:

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

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

【讨论】:

    猜你喜欢
    • 2011-07-18
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 2013-01-16
    相关资源
    最近更新 更多