Windows运行时从WebView中的JavaScript访问文件

时间:2014-07-21 09:30:39

标签: c# javascript webview windows-8.1 windows-phone-8.1

我正在使用Three.js来尝试实现跨平台3D模型查看器。目前,我已将其工作并嵌入到我的带有WebView的Win 8.1和Windows Phone 8.1的XAML和C#应用程序中。目前我正在使用C#代码从设备上的文件加载模型(三角形网格)以及捆绑文件。问题是,这意味着我必须从C#调用我想要添加的每个三角形的JavaScript函数,这会使UI暂时无响应。我试图运行脚本异步并运行加载器异步,但它并没有真正帮助,因为所有的JS函数调用需要由Core Dispatcher处理,否则我得到一个无效的线程访问异常。一开始我没有意识到这一点,并认为在C#中加载会更简单,性能更高。我现在可能要在JS中重做加载程序......

我现在需要问的是有关如何从JavaScript访问文件的一些信息。我知道Windows RT支持JS的文件访问API,但我猜这更适用于整个JS应用程序,因为它似乎不适用于WebView *。我也喜欢更多跨平台的东西,因为这也需要适用于Windows桌面,iOS,Android以及Mac和Linux,所以对我来说最好的选择是什么?

*我在WP 8.1应用程序的http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.pickers.fileopenpicker.aspx尝试了JS,但没有出现文件选择器。我的WebView似乎确实冻结了,但我也没有任何例外或者如此突然出现。

PS。我有一种感觉,可能归结为我不得不将文件复制到JS可以访问的临时文件夹。这不太理想,因为复制会浪费时间,但如果这是我唯一的选择,那么我可能不得不去做。如果这是我唯一的选择,我会很感激帮助实现它,因为JavaScript实际上不是我的语言而且我只是因为Three.JS而使用它......

1 个答案:

答案 0 :(得分:0)

一旦你正在使用WebView,你最终会遇到需要在主机应用程序(C#代码,假设你没有重写它)和你的网站之间来回发送消息的情况。在WebView中托管。这两者基本上是相互隔离的。

您是否可以使用Three.js格式的文档加载几何体?它似乎可以在这里找到:https://github.com/mrdoob/three.js/wiki/JSON-Geometry-format-4

通过这种方式,您可以代替整个几何体与每个单独的三角形。