【问题标题】:Windowsless property is not working in Firefox ONLYWindowsless 属性仅在 Firefox 中不起作用
【发布时间】:2010-04-14 13:31:18
【问题描述】:

我创建了一个简单的silverlight 应用程序来实时显示来自xml 的一些文本。使用 HTML DIV 标签显示的文本。我添加了插件属性 windowless=true, enablehtmlaccess=true,background=transparent。

在 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

工作示例:只需将上述 URL 中的“.zip”替换为“TestPage.html”即可。

请告诉我如何解决?

提前致谢, 乳糜泻

【问题讨论】:

  • 欢迎来到 SO,请花几分钟时间阅读常见问题解答和 Markdown 文档(编辑问题时右侧空白处提供了有用的概要)。

标签: silverlight windowless


【解决方案1】:

我查看了您的代码,因为我怀疑问题似乎不是 Silverlight,而是更多不同浏览器中 CSS 的实现。

要使这在两种浏览器中都能正常工作,您需要删除以下代码行:

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

或者修改代码,让 Firefox 忽略 position 样式属性:

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

我已经在我的机器上使用 IE8 和 FF3.6.12 进行了尝试,当此代码行更改时,Continue 按钮都可见。

【讨论】:

    猜你喜欢
    • 2011-11-02
    • 1970-01-01
    • 2015-01-22
    • 2019-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-24
    • 2013-10-17
    相关资源
    最近更新 更多