繁体   English   中英

在 WPF 中嵌入 Three.js 查看器

[英]Embed Three.js viewer in WPF

我正在尝试使用 Three.js 创建一个跨平台的 3D 渲染器,只需在本机应用程序中使用“WebView”/“WebBrowser”类型元素即可在几乎任何平台上使用该渲染器。 到目前为止,我已经让它在 Windows 8.1(商店)和 Windows Phone 8.1 应用程序上运行,并且查看器在 Internet Explorer 11 桌面浏览器中运行良好。 我的问题是我无法让它在同一台台式计算机上的 WPF 应用程序中工作。

目前我正在使用以下代码加载我的页面:

            private const string MainUri = "file:///{0}/Html/stlviewer.html";
            string curDir = Directory.GetCurrentDirectory();
            webView.Navigate(new Uri(String.Format(MainUri, curDir)));

然后发生的情况是,一旦我首先启动我的应用程序,我会收到一个对话框,询问我是否要运行 ActiveX(这是不可接受的),当我说是时,我在 Three.min.js 中的第 22 行第 190 行出现错误“预期的 ':' 和代码 0。这最终会导致对其他 JavaScript 文件中的三个以及我的 html 文件中的主脚本的未定义引用。

我尝试添加 MARK OF THE WEB 标签:

<!-- saved from url=(0016)http://localhost -->

这确实消除了 ActiveX 对话框,但它似乎使我的 JavaScript 问题变得更糟,因为现在我仍然在同一个文件中遇到 JavaScript 错误,但是突然之间除了我的 html 文件之外的所有文件中都没有关于错误的信息了,它只在所有字段中说 0,除了错误 1 ​​只说“脚本错误”。

到底是什么导致了这个,或者至少我做错了什么,因为这在正常的 IE、商店应用程序和 WP 中都有效,但现在突然 WPF 决定三个.min.js 文件有问题?

附注。 我的three.min.js 文件是标准的r66 文件,我知道r67 存在但WP 8.1 尚不兼容。

编辑:以防万一你们想知道,使用以下标签也不起作用:

<!-- saved from url=(0014)about:internet -->

编辑:好的,我发现问题可能在于 WPF 中的 WebBrowser 使用 IE7(或至少处于其行为类似的模式)而不是 IE11,但我不知道这是否可以修复。

编辑:好的 WebGL 现在至少在遵循http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version来设置 WebBrowser 之后工作IE11 模式,但是当我使用 Web 标签的标记禁用 ActiveX 对话框时,突然我无法再加载任何 JavaScript 文件。 使用此设置,虽然触摸无法像在桌面 IE 上那样工作。 我正在使用 Hammer.js 进行触摸,但它似乎没有向 Hammer 发送多点触控信息,它只是尝试实现捏合来缩放自身。 有任何想法吗?

尝试使用CefSharp代替随 WinForms 和 WPF 一起开箱即用的WebBrowser组件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM