积极答复者
FF3不支持Silverlight2.0?

问题
-
本人用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,而且安装失败。且确定非本机问题,因为在许多电脑上测试过均同样情况,请问何解?谢谢!
答案
-
经过测试,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>
- 已标记为答案 李庆_八爪熊Moderator 2009年4月27日 3: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>
- 已标记为答案 李庆_八爪熊Moderator 2009年4月27日 3:43
-
这个问题我昨天晚上刚刚发布解决办法,其原理就是使用最原始的判断运行时环境然后javascript设置innerHTML来解决:
解决Silverlight3部署的时候实际上反复下载2.0甚至是IE8和chrome假死的情况
梁逸晨 -
另外,八爪熊版主,您的办法在您所写的完整代码中不会有问题,但是如果是放置于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值相同所以造成了冲突. -
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&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加载也可以