2010-04-14 3 views
2

Я создал простую приложение silverlight для отображения некоторого текста в реальном времени из xml. Текстовый дисплей с использованием тега HTML DIV. Я добавил свойство plugin 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 Plugin увеличить размер кода:

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

Все это код работает отлично в Internet Explorer, CROME & Safari, но "Continue" не видимый только в FIREFOX.

В чем проблема с этим кодом?

Пример кода: http://lm-bucket-for-forum-post.s3.amazonaws.com/HtMLViewerSilverLight.zip

работает образец: Просто замените ".zip" с "TestPage.html" в URL выше.

Пожалуйста, дайте мне знать, как я могу его решить?

Спасибо заранее, Laxmilal Menaria

+0

Добро пожаловать в SO, пожалуйста, уделите несколько минут, чтобы прочитать FAQ и документацию Markdown (полезный synposis, который доступен в правом поле при редактировании вопроса). – AnthonyWJones

ответ

0

Я принял взглянуть на код и как я подозревал его не Silverlight, что, кажется, вопрос, но более реализация CSS в различных браузерах.

Чтобы сделать эту работу в обоих браузерах вам необходимо либо удалить следующую строку кода:

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

Или изменить код так, чтобы атрибут позиции стиль игнорируется Firefox:

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

Я пробовал это на своей машине с помощью IE8 и FF3.6.12, а кнопки Continue видны и в том случае, когда эта строка кода изменяется.

Смежные вопросы