Свойство без окон не работает только в Firefox - PullRequest
2 голосов
/ 14 апреля 2010

Я создал простое приложение Silverlight для отображения текста в реальном времени из XML. Отображение текста с использованием тега HTML DIV. Я добавил свойство плагина windowless = true, enablehtmlaccess = true, background = прозрачный.

В 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, Crome и Safari, но « Продолжить » не отображается ТОЛЬКО в FIREFOX.

Так есть ли проблемы с этим кодом?

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

рабочий пример: просто замените «.zip» на «TestPage.html» в приведенном выше URL.

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

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

1 Ответ

0 голосов
/ 10 декабря 2010

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

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

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

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

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

Я пытался сделать это на своей машине, используя IE8 и FF3.6.12, и кнопки Продолжить видны в обеих при изменении этой строки кода.

...