我正在重写一个我们目前在 iOS 中工作的应用程序,它在使用 Windows 8 Metro 风格应用程序时遇到了问题。特别是我无法加载外部HTML 内容(以及相关的库,即 Css 和 JavaScript)。这样做时,我会收到大量警告和错误以及/或 JavaScript 文件未链接。
我相信我了解沙盒以及 ms-appx 与 ms-appx-web 上下文切换(在 JavaScript 项目类型中)并发现了以下内容。
使用 iFrame 从同一个项目中加载 html 可以工作,即渲染页面、执行链接的 javascript 等。(我相信这在从组件项目加载时也可以加载,即在同一个包中)
使用 iFrame 从 ApplicationData 加载(文件将在下载后解压缩)不适用于前面提到的任何一个上下文。出现类似的错误:
"The app can’t use script to load the file:///...AppData/Local/Packages/.../index.html because the url launches another app. Only direct user interaction can launch another app."
并且没有显示任何内容,即使这不是由脚本加载的。在 JavaScript 中使用
launchFileAsync('file:///...AppData/Local/Packages/.../index.html')
会加载并显示内容,但不会链接到外部 JavaScript 文件(或者更确切地说是阻止它们),并且非常类似于从桌面执行 html 文件并获取Internet Explorer restricts this page from running scripts or ActiveX controls
和Allow blocked content
按钮。
不幸的是,该内容必须远程传送到应用程序。但是应用程序的所有其他方面都可以更改。我正在关注的其他研究途径是;使用应用内购买机制下载其他内容。构建自定义浏览器控件。解析文件内容并将其合并到一个整体页面中。
如果有人有任何想法或自己遇到过这个问题,我将不胜感激。