在Firefox中扩展Div,将Xap加载到其中两次

时间:2009-10-08 10:03:19

标签: css silverlight firefox

我有一个包含Silverlight对象标记的div。从一些用户操作的代码(单击按钮)我将Div扩展到浏览器总窗口。我是通过Jquery addClass和Remove类来完成的。在这些类中,差异是位置绝对,高度宽度100%和增加的z指数。

在Ie7和IE8中运行良好。但是在运行FF时,它正在重新加载Xap。可能是什么原因?和任何解决方案?

感谢。

编辑:经过一番调查后,似乎原因是因为位置:绝对。从相对位置改变到绝对位置是一个问题所在。此外,一旦我从正常模式进入全屏模式,然后是正常模式。然后扩展它不会加载它两次。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    SilverlightApplication1

<style type="text/css">
    .slhost
    {
        width: 642px;
        height: 500px;
        position: relative;
    }
    .bigsl
    {
        width: 100%;
        height: 100%;
        position: absolute;
    }
</style>

<script src="jquery-1.3.2.min.js" type="text/javascript"></script>

<script type="text/javascript">
    function openOverlay() {
        $("#silverlightControlHost").addClass("bigsl");
        $("#silverlightControlHost").removeClass("slhost");
    }
    function closeOverlay() {
        $("#silverlightControlHost").removeClass("bigsl");
        $("#silverlightControlHost").addClass("slhost");
    }
</script>

                                                                                                                                                          

<UserControl x:Class="SilverlightApplication1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">


< Grid x:Name="LayoutRoot" Background="Red" MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown">



</Grid>

using System.Windows;

使用System.Windows.Controls; 使用System.Windows.Input; 使用System.Windows.Browser;

命名空间SilverlightApplication1 {     public partial class MainPage:UserControl     {         公共MainPage()         {             的InitializeComponent();             Deployment.Current.Dispatcher.BeginInvoke(()=&gt; HtmlPage.Window.Alert(“Application Loaded”));         }

    private bool _flip;
    private void LayoutRoot_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
    {
        if (_flip)
        {
            Deployment.Current.Dispatcher.BeginInvoke(() => HtmlPage.Window.Invoke("closeOverlay", null));
        }
        else
        {
            Deployment.Current.Dispatcher.BeginInvoke(() => HtmlPage.Window.Invoke("openOverlay", null));
        }
        _flip = !_flip;
    }
}

}

1 个答案:

答案 0 :(得分:0)

在firefox中,当您隐藏包含SL应用程序的DOM元素时,SL应用程序将重新初始化。我们使用jQuery删除对象标签,然后隐藏元素:

$(“#element object”)。remove(); $( “#元件”)隐藏();

...在执行show()之前,您必须重新创建SL对象标记。当使用$ .ajax加载的内容替换DOM元素时,上面也适用。

如果我不正确理解你的问题,请纠正我。 看一个问题here ......我猜它是相同的/相关的......