2012-03-22 63 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