我有一个关于从本地存储在我的 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 应用程序?