我刚开始使用 HTML/JS 进行 Windows 8 开发。在过去的几个月里,我一直沉浸在针对汽车音响主机和电视的应用程序的 jQuery 开发中。
跳进去,我认为过渡会很简单。我的网站的设计和结构大部分都已弄清楚,并希望遵循我在以前的工作中使用的一些做法。
也就是说,我想基本上创建一个单页应用程序。主要的 default.html 文件将包含顶部导航/标题和另一个 div。另一个 div 将用于加载所有其他页面,项目中所有单独的 HTML 文件。
所有全局函数和主要功能都将驻留在 javascript 文件 application.js 中。然后任何特定于页面的 javascript 将驻留在每个 HTML 文件的顶部。
我很快意识到这是一个问题。使用 jQuery.load() 加载我的页面会导致我的应用程序出现安全错误。
JavaScript 运行时错误:无法添加动态内容。脚本试图注入可能不安全的动态内容或先前动态修改的元素。例如,使用 innerHTML 属性添加脚本或格式错误的 HTML 将生成此异常。使用 toStaticHTML 方法过滤动态内容,或使用 createElement 等方法显式创建元素和属性。
我真的希望避免学习一堆微软特有的东西。我认为他们提供了很多工具而没有提供很多工具很棒,也许我只是没有足够地使用它们,但是对于我以及我正在尝试做或已经可以完成的事情来说,一切都感觉太僵硬了用 jQuery。我喜欢确切地知道正在发生的事情并完全控制它。
还翻阅了模板和示例项目,我真的不喜欢所有重复的代码。例如,每个 HTML 文件都声明了所有相同的引用。我只想写一次我的引用和标题栏之类的部分,而不必在我的项目中复制/粘贴该代码。
有没有办法按照我希望的方式做事,并创建一个单页应用程序?他们有自己的 jQuery 的 .load() 替代品吗?
任何为我指明正确方向的帮助将不胜感激!
编辑 2012 年 8 月 14 日:
我已经尝试使用这个问题的修复: Using jQuery with Windows 8 Metro JavaScript App会导致安全错误
这消除了安全警告,我可以使用 jQuery.load() 加载 HTML。但是,查看 DOM 资源管理器,我的 HTML 被剥离了我的脚本。
我还尝试将我的 .load() 调用包装在 MSApp.execUnsafeLocalFunction() 中,但我的文件仍然被剥离了所有脚本。是什么赋予了?