2012-03-22 65 views
5

在ASP.NET面板中托管的My Silverlight 5应用程序未在Firefox(版本11)中显示。然而,它在Chrome,IE和Safari中运行得非常好。我正在动态加载Silverlight对象,如下所示。这是为了传递初始参数。 (我去除了测试)。我正在使用一个小的白色空白Silverlight区域来代替Firefox中的Silverlight应用程序。Firefox不显示动态添加的Silverlight 5控件

HtmlGenericControl myHtmlObject = new HtmlGenericControl("object"); 
myHtmlObject.Attributes["data"] = "data:application/x-silverlight"; 
myHtmlObject.Attributes["type"] = "application/x-silverlight"; 
HtmlGenericControl mySourceParam = new HtmlGenericControl("param"); 
mySourceParam.Attributes["name"] = "source"; 
mySourceParam.Attributes["value"] = "ClientBin/SilverlightApp.xap"; 
myHtmlObject.Controls.Add(mySourceParam); 
HtmlGenericControl myOnErrorParam = new HtmlGenericControl("param"); 
myOnErrorParam.Attributes["name"] = "onError"; 
myOnErrorParam.Attributes["value"] = "onSilverlightError"; 
myHtmlObject.Controls.Add(myOnErrorParam); 
myHtmlObject.Attributes["width"] = "100%"; 
myHtmlObject.Attributes["height"] = "100%"; 
panelSilverlightHost.Controls.Add(myHtmlObject); 

然而,来自各种浏览器的HTML源代码看起来是一样的。从Firefox

页面的html:

<object data="data:application/x-silverlight" 
    type="application/x-silverlight" width="100%" 
height="100%"> 
    <param name="source" value="ClientBin/SilverlightApp.xap"></param> 
    <param name="onError" value="onSilverlightError"></param> 
</object> 

这是在Chrome,IE和Safari完全一样。

我已经尝试过其他示例SL 5应用程序(不是动态加载虽然),这些工作在Firefox上很好。

我在不同的机器上尝试过不同版本的Firefox。这没有帮助。 任何关于这里可能出错的建议都会非常有帮助。

+0

该代码似乎很好。这似乎是Firefox的一个问题。 – blitzkriegz 2012-03-22 21:00:54

+0

通过对封闭div应用高度和宽度,我已经解决了Firefox不显示我的Silverlight对象的每个问题。 (不是100%,但数字值) – bperreault 2012-03-22 23:59:48

回答

4

data属性有一个无效的数据:URI,所以没有被加载。是否使用有效的URI(在类型后至少需要一个逗号)帮助?

+0

我相信那里的数据属性是正确的。 OP已经提到它在其他浏览器中运行良好。 – Nemo 2012-03-23 04:19:53

+2

data:URI的语法位于http://www.ietf.org/rfc/rfc2397.txt第3节中,并且在类型之后需要逗号。有些浏览器可能会接受它,即使它的格式不正确,但这并不能使其正确。 – 2012-03-23 05:49:46

+1

@Boris Zbarsky:+1。我还记得在某处阅读需要尾随逗号以支持Firefox兼容性的地方。 – 2012-03-23 10:33:20