代码之家  ›  专栏  ›  技术社区  ›  Jason Kleban

在HTML对象中传递Silverlight或嵌入标记base64编码数据

  •  0
  • Jason Kleban  · 技术社区  · 16 年前

    可以对图像进行base64编码,并使用 <img src="data:image/gif;base64,UEsDBBQAAAgIALp9...MTs9Snj3==">

    我注意到Silverlight的对象标记应该类似于:

    <object type="application/x-silverlight"  
        data="data:application/x-silverlight;base64,"   
        width="300" height="300">  
        <param name="source" value="myApp.xap"/>  
    <object>
    

    我似乎可以用和图片相同的技术来表达这一点:

    <object type="application/x-silverlight"  
        data="data:application/x-silverlight;base64,SOFIjoije3r8...WMDioaAAA=="   
        width="300" height="300">   
    <object>
    

    并让它在数据参数中从base64编码中加载xap文件数据。但这不起作用——它加载Silverlight插件,并且在IE或火狐中没有错误,但是xap模块没有运行。

    我知道浏览器对这类事情的语法非常挑剔,所以我问你们。

    目的是在ASP.NET服务器控件中嵌入Silverlight,而不需要开发人员在某处托管Xap和解析Xap的URI等额外的复杂性。我主要对从嵌入的base64编码字符串加载Xap感兴趣,但如果不能做到这一点,则是简化T的使用的好解决方案。他对Silverlight应用程序的一行代码将不得不做。

    谢谢!

    2 回复  |  直到 16 年前
        1
  •  2
  •   Michael S. Scherotter    16 年前

    即使你想让它发挥作用,我还是建议不要使用这种方法,原因如下:

    1. 加载整个页面所需的时间很长
    2. 这并没有利用Xap的任何浏览器缓存,因此每次加载页面时,都必须读取Xap。
        2
  •  0
  •   Jason Kleban    16 年前

    我很感激你们花时间来看我的问题。我发现“更好的解决方案”是webresource.axd——它提供了我们仅仅通过一个经过适当修饰的程序集的存在就可以直接加载资源的能力。这是完美的。我认为我必须要求消费者为定制的httphandlers或其他东西向web.config添加各种垃圾,但事实证明,出于这个目的,从ASP.NET 2.0开始就包含了webresource.axd。

    这是我找到的解释这一切的文章:

    http://www.4guysfromrolla.com/articles/080906-1.aspx

    推荐文章