Silverlight 2在IE6 SP2上虚线边框问题

开发 后端
本文将为大家介绍如何解决Silverlight 2在IE6 SP2上虚线边框问题。本文适合检查和处理Silverlight在不同版本浏览器上兼容性的问题。

在Silverlight嵌入到HTML之windowless属性及运用AjaxControlToolKit时出现虚线边框的问题里谈一些Silverlight在浏览器上运行时会出现虚线边框的问题,当时主要考虑了IE7和FireFox,却没想到在IE6 sp2上还是会出现虚线边框,必须鼠标点击一次让其获得焦点虚线边框才消失。

经过测试,发现如果用<asp:Silverlight />引入silverlight来取代直接使用<object>可以避免虚线边框的出现。实际上直接使用<object>的代码可以完全移植到<asp:Silverlight />里,<asp:Silverlight />是动态生成了object标签的,只不过其中的很多js我还没有看得很明白。

需要注意的一点,直接使用<object>对应的代码可以写成这样:

<div id="silverlightHost" style="width:275px;
height:324px;background-color:transparent;float:left">
<object data="data:application/x-silverlight-2,"
type="application/x-silverlight-2" style="width:100%;height:100%;position:absolute">
            <param name="source" value="../ClientBin/Silverlight.xap"/>
            <param name="onerror" value="onSilverlightError" />
            <param name="onload" value="onSilverlightLoaded" />
            <param name="background" value="transparent" />
            <param name="windowless" value="true" />
            <param name="minRuntimeVersion" value="2.0.31005.0" />
            <param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;">
<img src=http://go.microsoft.com/fwlink/?LinkId=108181
alt="Get Microsoft Silverlight" style="border-style: none"/>
            </a>
        </object>
        <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe>
    </div>

在对应的onSilverlightLoaded事件中可以获得<object>元素及包含他的<div>:

function onSilverlightHomePeoplePickerLoaded(sender, args) {            
      var objElement = sender.getHost();
      var divHost = objElement.parentNode;
}

使用<asp:Silverlight />控件实际上生成的也是<object>,只不过在<object>标签外面加了一个<span>,大致等价于:

<span>
  <object>
    .
  </object>
</span>
     
所以如果将上面的<object>改成用<asp:Silverlight />控件:

<div id="silverlightHost"  style="height:100%;">        
     <asp:Silverlight ID="Xaml1" runat="server" Source="~/ClientBin/SilverlightApplication1.xap"
MinimumVersion="2.0.31005.0" Width="100%" Height="100%" OnPluginLoaded="onSilverlightLoaded" />
</div>
    

对应的javascript代码要稍做修改:

function onSilverlightHomePeoplePickerLoaded(sender, args) {            
      var objElement = sender.get_element();
      var divHost = objElement.parentNode.parentNode;
}

【编辑推荐】

  1. VS 2010 Beta1和Silverlight不得不说的事
  2. Flash与Silverlight多领域实测对比
  3. 浅谈Silverlight 3中在线与离线状态检测
责任编辑:彭凡 来源: cnblogs
相关推荐

2010-03-19 09:16:45

IE9系统支持

2010-03-05 13:09:17

WSUS 3.0 SPWindows Ser

2010-09-08 11:01:28

2010-01-28 09:13:49

Windows 7SP1SP2

2010-01-21 09:15:17

Windows 7 S开发计划

2009-06-01 21:29:03

Java升级Vista

2010-08-19 09:29:26

hoverIE6

2011-05-05 16:22:23

Windows 7 S

2011-07-26 14:17:55

2011-10-14 10:14:05

SP2R2

2009-08-14 09:20:40

抵制IE6

2009-05-26 16:04:17

2010-08-19 10:13:25

marginFFIE6

2009-02-06 10:03:08

Vista SP1Vista SP2RC

2009-03-05 09:54:34

WindowsVistWindowsServ发布

2010-09-30 09:52:13

SQL Server

2010-02-01 08:41:23

GoogleIE6

2010-08-19 14:43:49

IE6IE7IE8

2010-08-19 10:40:36

position:fiIE6

2010-08-19 15:24:52

IE6IE7IE8
点赞
收藏

51CTO技术栈公众号