none
FF3不支持Silverlight2.0? RRS feed

  • 问题

  • 本人用vs2008开发,操作系统XP,FF版本
    Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)
    在调试过程中IE,FF可正常显示。
    在HTML页面中使用
    Silverlight.createObject("123.xap", document.getElementById("DIV1"), "Xaml1", { width: "500", height: "500", background: "Transparent", isWindowless: "true", vision: "2.0" }, {}, {}, null)
    IE可正常显示,FF3总是提示下载Silverlight,而且安装失败。且确定非本机问题,因为在许多电脑上测试过均同样情况,请问何解?谢谢!
    2009年4月24日 11:43

答案

  • 经过测试,ff是支持且可以动态创建Silverlight插件的,我的版本是Firefox/3.0.9,提示下载Silverlight插件,可能在ff上指定版本号问题,指定具体版本号再试试2.0.31005.0
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>
    	SL3BMap
    </title>
    </head>
    <body>
    <form name="form1" method="post" action="SL3BMapTestPage.aspx" id="form1" style="height:100%;">
    <script type="text/javascript" src="Silverlight.js"></script>
    <script type="text/javascript">
    var conText = "context_2";
    function createSilverlightByPluginID(pluginID) {
        Silverlight.createObject(
    "ClientBin/SL3BMap.xap",                  // 源属性值.
            document.getElementById("Silverlight1_parent"),                   // Div标签宿主引用.
            pluginID,                           // 唯一插件ID值, 当页面调用被设置.
            {                               // 插件属性,此处属性设置优先于xaml中的设置
            width: '400',
            height: '200',
            version: '3.0.40307.0',
            isWindowless: 'true',
            background: 'aliceblue',
            framerate: '24',
        },
        {
           
        },
        
    "pluginID=" + pluginID,        // 初始化参数,可设置为 null 或 {}  
            conText);
    }
    
    </script>
    
            <div  style="height:100%;">
                <span id="Silverlight1_parent"></span>
    <script type="text/javascript">
        createSilverlightByPluginID('Xaml1');
    </script>
    
            </div>    
    
    
    </form>
    </body>
    </html>
    2009年4月24日 14:38
    版主

全部回复

  • 经过测试,ff是支持且可以动态创建Silverlight插件的,我的版本是Firefox/3.0.9,提示下载Silverlight插件,可能在ff上指定版本号问题,指定具体版本号再试试2.0.31005.0
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head><title>
    	SL3BMap
    </title>
    </head>
    <body>
    <form name="form1" method="post" action="SL3BMapTestPage.aspx" id="form1" style="height:100%;">
    <script type="text/javascript" src="Silverlight.js"></script>
    <script type="text/javascript">
    var conText = "context_2";
    function createSilverlightByPluginID(pluginID) {
        Silverlight.createObject(
    "ClientBin/SL3BMap.xap",                  // 源属性值.
            document.getElementById("Silverlight1_parent"),                   // Div标签宿主引用.
            pluginID,                           // 唯一插件ID值, 当页面调用被设置.
            {                               // 插件属性,此处属性设置优先于xaml中的设置
            width: '400',
            height: '200',
            version: '3.0.40307.0',
            isWindowless: 'true',
            background: 'aliceblue',
            framerate: '24',
        },
        {
           
        },
        
    "pluginID=" + pluginID,        // 初始化参数,可设置为 null 或 {}  
            conText);
    }
    
    </script>
    
            <div  style="height:100%;">
                <span id="Silverlight1_parent"></span>
    <script type="text/javascript">
        createSilverlightByPluginID('Xaml1');
    </script>
    
            </div>    
    
    
    </form>
    </body>
    </html>
    2009年4月24日 14:38
    版主
  • 这个问题我昨天晚上刚刚发布解决办法,其原理就是使用最原始的判断运行时环境然后javascript设置innerHTML来解决:

    解决Silverlight3部署的时候实际上反复下载2.0甚至是IE8和chrome假死的情况
    梁逸晨
    2009年4月25日 11:54
  • 另外,八爪熊版主,您的办法在您所写的完整代码中不会有问题,但是如果是放置于ASP.NET3.5环境下,有可能就会出现即使安装了SL3,火狐也仍然提示尚未安装。
    最有可能的情况就是Silverlight.js在加载SL3的时候,某些算法和asp.net的axd文件动态生成的js代码有冲突。


    梁逸晨
    2009年4月25日 12:00
  • 另外,八爪熊版主,您的办法在您所写的完整代码中不会有问题,但是如果是放置于ASP.NET3.5环境下,有可能就会出现即使安装了SL3,火狐也仍然提示尚未安装。
    最有可能的情况就是Silverlight.js在加载SL3的时候,某些算法和asp.net的axd文件动态生成的js代码有冲突。


    梁逸晨

    我的是在asp.net 3.5环境下,用ie8跟ff进行测试的.innerHTML也可以,asp.net环境下不能跟跟
    <asp:Silverlight ID="Silverlight1" runat="server" Source="~/ClientBin/SL3BMap.xap" MinimumVersion="3.0.40307.0" Width="100%" Height="100%" />

    这个一起应用,一起用的话把createSilverlightByPluginID('Xaml1');改成其他PluginID就没有问题了,是两个插件ID值相同所以造成了冲突.
    2009年4月25日 13:19
    版主
  • axd会自动往下生成 Xaml1 Xaml2....这样的PluginID

    楼上的那个asp.net控件生成时解释为下面的js语句

    <script type="text/javascript">
    //<![CDATA[
    Sys.UI.Silverlight.Control.createObject('Silverlight1_parent', '\u003cobject type="application/x-silverlight-2" id="Silverlight1" style="height:100%;width:100%;">\r\n\t\u003cparam name="MinRuntimeVersion" value="3.0.40307.0">\r\n\r\n\t\u003c/param>\u003ca href="http://go2.microsoft.com/fwlink/?LinkID=141884&amp;v=3.0">\u003cimg src="http://go2.microsoft.com/fwlink/?LinkID=108181" alt="获取 Microsoft Silverlight" style="border-width:0;" />\u003c/a>\r\n\u003c/object>');
    //]]>
    </script>


    其实直接把这个语句跟ScriptResource.axd这个文件一起加载过去,用Sys.UI.Silverlight.Control.createObject加载也可以
    2009年4月25日 13:30
    版主