【问题标题】:Windows Runtime access file from JavaScript in WebView从 WebView 中的 JavaScript 访问 Windows 运行时文件
【发布时间】:2014-10-10 06:43:12
【问题描述】:

我正在使用 Three.js 来尝试实现一个跨平台的 3D 模型查看器。目前我已经让它工作并嵌入到我的 XAML 和 C# 应用程序中,用于 Win 8.1 和带有 WebView 的 Windows Phone 8.1。目前,我正在使用 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 才使用它...

【问题讨论】:

  • 你找到解决办法了吗?

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


【解决方案1】:

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

您不能使用 Three.js 格式的文档加载您的几何图形吗?它看起来在这里可用:https://github.com/mrdoob/three.js/wiki/JSON-Geometry-format-4

这样您就可以代理整个几何图形与每个单独的三角形。

【讨论】:

  • 不幸的是,这不是我想做的研究,因为模型可能非常大,我不想为整个事情移动一个字符串,因为内存会受到限制。
猜你喜欢
  • 1970-01-01
  • 2015-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-19
相关资源
最近更新 更多