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

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

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

我现在需要询问的是一些关于我应该如何从 JavaScript 访问文件的信息。我知道 Windows RT 支持来自 JS 的文件访问 API,但我猜测这更适用于整个 JS 应用程序,因为它似乎无法在 WebView* 内部工作。我也更喜欢跨平台的东西,因为这也需要适用于 Windows 桌面、iOS、Android,可能还需要适用于 Mac 和 Linux,那么我的最佳选择是什么?

*我已经尝试过 JS http://msdn.microsoft.com/en-us/library/windows/apps/windows.storage.pickers.fileopenpicker.aspx在我的 WP 8.1 应用程序中,但没有出现文件选择器。我的 WebView 似乎确实卡住了,但我也没有遇到任何异常或因此弹出。

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

最佳答案

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

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

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

关于c# - Windows 运行时从 WebView 中的 JavaScript 访问文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24861756/

相关文章:

android - 在 webview 中打开 url - phonegap

c# - 如何更改起始位置组合框 C# mysql

c# - 使用 AutoFixture 为字符串属性生成匿名数字

javascript - 如何只获取字符串的特定部分?

Android - 滚动或平移谷歌地图等网站时刷新 WebView

objective-c - NSTextField 像 safari 地址栏

c# - 如何用Thread移动PictureBox?

c# - ScrollViewer 不使用 UWP Windows 10 Phone 滚动

javascript - 如何使用 jquery 将类添加到元素的特定同级元素?

javascript - 如何使用 JavaScript 激活链接