0

我有一个关于从本地存储在我的 C:/ 驱动器上的 HTML 页面访问在线 Silverlight XAP 文件的问题。我将需要 Silverlight 应用程序来访问我希望存储在客户端计算机上的大文件,以加快整个过程。我想做的是在客户端的硬盘驱动器上写入 HTML 文件,其中嵌入了所需的内容,这反过来将触发 Silverlight 应用程序,该应用程序将能够访问 DOM 中的数据。

这在 Visual Studio 中有效,但是当我在本地创建 HTML 页面并打开它时,Silverlight 应用程序没有运行。要么应用程序未运行且页面为空,要么通知我需要安装 Silverlight,即使它已经安装。

我知道将 Silverlight 应用程序作为受信任的应用程序运行将允许访问硬盘驱动器,但我正在探索在此过程中不需要任何用户输入的选项。

我曾尝试使用 JavaScript 将 Silverlight 部分动态添加到网页,但这没有奏效。我遇到同样的问题。JavaScript 代码如下,我已经从在线位置对其进行了测试,并且 Silverlight 正在那里启动。

    function applyChanges(){ 
  var theDiv = document.getElementById("silverlightControlHost");
  theDiv.innerHTML = '<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%"><param name="source" value="http://online.company.net/ClientBin/company_xap.xap"/><param name="onError" value="onSilverlightError" /><param name="background" value="white" /><param name="minRuntimeVersion" value="4.0.60310.0" /><param name="autoUpgrade" value="true" /><param name="enableHtmlAccess" value="true" /><a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=4.0.60310.0" style="text-decoration:none"><img src="http://go.microsoft.com/fwlink/?LinkId=161376" alt="Get Microsoft Silverlight" style="border-style:none"/></a></object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe>';
}

我已经能够使用嵌入在本地 HTML 文件中的 iframe 连接到应用程序,但这限制了我需要访问 DOM 以提取所需内容。

我还尝试将 HTML 内容从 Windows 窗体应用程序的内存中加载到 WebBrowser 控件中,但是在显示 HTML 的其余部分时,Silverlight 应用程序仍然丢失。

有什么方法可以从本地 HTML 文件访问在线 Silverlight 应用程序?

4

1 回答 1

0

好吧,我不确定为什么它不是从本地 html 加载,但这里有一些解决方法可以帮助你

  • 如果适用的话,将您的 html 托管在您的客户端 iis 中,这似乎工作得很好。

或者如果这是不可能的,试试这个

  • 首先创建一个 html 页面,该页面将在您托管 xap 文件的服务器上加载您的 xap 文件

在本地 html 文件中,只需在 iframe 中加载 html 页面,如下所示

   <iframe **id="xapHost"** src="http://astrocoder.com/BlogFiles/Silverlight/test.html?id=5" 
    frameborder="0" 
    style="width:500px;height:500px">

要使用自定义参数加载 xap 文件,您可以将查询字符串参数添加到您的 iframe src url,如上面的 url,在您的 JavaScript 中,您可以检索这些值并使用新参数构建您的对象。

要在 JavaScript 中读取查询字符串值,请检查此问题并动态更改 iframe src,您可以这样做

document.getElementById('xapHost').src = "http://astrocoder.com/BlogFiles/Silverlight/test.html?id=6&anyparam=anything";

我希望这会有所帮助

于 2013-06-10T10:31:19.427 回答