2010-04-14 78 views
2

我已經創建了一個簡單的Silverlight應用程序來從XML實時顯示一些文本。文本顯示使用HTML DIV標籤。我已經添加了插件屬性windowless = true,enablehtmlaccess = true,background = transparent。Windowsless屬性不適用於Firefox只有

在Silverlight上我添加了一個按鈕「繼續」在頂部&底部,它顯示了該點擊的一些消息。

Silverlight插件基於XML內容調整大小。

我的代碼:

MainPage.xaml中:

<Grid x:Name="LayoutRoot"> 
     <StackPanel HorizontalAlignment="Right" VerticalAlignment="Top"> 
      <Button x:Name="topContinue" Content="Continue" Margin="0,30,30,0" Click="Continue_Click"></Button> 
     </StackPanel> 
     <StackPanel HorizontalAlignment="Right" VerticalAlignment="Bottom"> 
      <Button x:Name="bottomContinue" Content="Continue" Margin="0,0,30,30" Click="Continue_Click"></Button> 
     </StackPanel> 
</Grid> 

MainPage.xaml.cs中:

使用在應用程序啓動創建HTML DIV:

HtmlDocument _document = HtmlPage.Document; 
HtmlElement iDIV = _document.CreateElement("DIV"); 
iDIV.SetAttribute("id", "divHTMLViewer"); 
iDIV.SetStyleAttribute("position", "absolute"); 
iDIV.SetStyleAttribute("z-index", "1"); 
iDIV.SetStyleAttribute("display", "INLINE"); 
iDIV.SetStyleAttribute("top", "100px"); 
iDIV.SetStyleAttribute("height", "0px"); 
iDIV.SetStyleAttribute("width", "96%"); 
iDIV.SetStyleAttribute("left", "15px"); 
iDIV.SetStyleAttribute("text-align", "justify"); 

HtmlElement body = _document.GetElementsByTagName("BODY")[0] as HtmlElement; 
body.RemoveChild(iDIV); 
body.AppendChild(iDIV); 

將XML文本:

HtmlElement divHTMLViewer = HtmlPage.Document.GetElementById("divHTMLViewer"); 
sText = sText.Replace("&lt;", "<").Replace("&gt;", ">"); 
divHTMLViewer.SetStyleAttribute("display", "none"); 
divHTMLViewer.SetStyleAttribute("width", "96%"); 
divHTMLViewer.SetStyleAttribute("top", "100px"); 
divHTMLViewer.SetStyleAttribute("left", "15px"); 
divHTMLViewer.RemoveStyleAttribute("color"); 
divHTMLViewer.RemoveStyleAttribute("fontSize"); 
divHTMLViewer.SetProperty("innerHTML", sText); 
divHTMLViewer.SetStyleAttribute("display", "INLINE"); 
setSilverlightControlHeight(UILAYOUT.INSTRUCTIONS); 

的Silverlight插件大小的增加代碼:

isilverlightControlHost.SetStyleAttribute("height", HtmlPage.Window.Eval("document.documentElement.scrollHeight").ToString() + "px"); 
isilverlightControlHost.SetStyleAttribute("position", "absolute"); 

所有這些代碼工作正常在Internet Explorer中,克羅姆& Safari瀏覽器,但 「繼續」 不僅在FIREFOX中可見。

那麼這段代碼有什麼問題嗎?

代碼示例:http://lm-bucket-for-forum-post.s3.amazonaws.com/HtMLViewerSilverLight.zip

工作示例:只要在上述網址 「TestPage.html」 替換 「.ZIP」。

請讓我知道我該如何解決它?

由於提前, Laxmilal Menaria

+0

歡迎來到SO,請花幾分鐘時間閱讀常見問題和Markdown文檔(在編輯問題時可以在右邊找到一個有用的synposis)。 – AnthonyWJones 2010-04-14 14:16:43

回答

0

我已經採取了看看你的代碼和我懷疑它不是Silverlight的,這似乎是這個問題,但更多的不同的瀏覽器中的CSS實現。

要在這兩種瀏覽器這個工作你需要取出下面的代碼行:

isilverlightControlHost.SetStyleAttribute("position", "absolute"); 

或者修改代碼,使得位置樣式屬性是Firefox忽略:

isilverlightControlHost.SetStyleAttribute("position", "absolute !important"); 

我已經在我的機器上使用過IE8和FF3.6.12以及繼續使用此代碼行更改時都可以看到這兩個按鈕。

相關問題