我正在尝试使用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(这是不可接受的),当我说是的时候,我在第22行中的three.min.js中收到错误错误“预期':'和代码0.这最终导致其他JavaScript文件中的THREE未定义引用以及我的html文件中的主脚本。
我尝试添加MARK OF THE WEB标记:
<!-- saved from url=(0016)http://localhost -->
这确实剥夺了ActiveX对话框,但它似乎使我的JavaScript问题更加严重,因为现在我仍然在相同的文件中得到JavaScript错误但突然在除了我的html文件之外的所有文件中没有关于错误的信息它只是在所有字段中都显示0,除了错误之一,只是说“脚本错误”。
究竟是什么造成了这个或者至少我做错了什么因为这适用于普通的IE,Store Apps和WP,但现在突然WPF决定three.min.js文件有问题?
PS。我的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在IE11模式下设置WebBrowser后工作,但是当我使用web标记的标记来禁用ActiveX对话框时,我突然无法加载任何JavaScript文件。使用此设置虽然触摸不像在桌面IE上那样工作。我正在使用Hammer.js进行触摸,但它似乎没有向Hammer发送多点触控信息,它只是尝试实现捏缩放本身。有什么想法吗?
答案 0 :(得分:1)
尝试使用CefSharp
代替WinForms和WPF附带的WebBrowser
组件。