【发布时间】:2016-08-10 09:32:51
【问题描述】:
相关文章:Using jQuery with Windows 8 Metro JavaScript App causes security error
使用 jQuery 1.8.2 和 jQuery Mobile 1.3.0
我目前正在为 IOS、Android 和 Windows 开发 Cordova 应用程序。我目前正在使用 Windows 版本,似乎我遇到了无法通过innerHtml 或outerHtml 添加内容的问题。
至于错误,我得到了这个:
HTML1701:无法添加动态内容“a”一个脚本试图 注入动态内容或先前动态修改的元素, 那可能不安全。例如,使用 innerHTML 属性添加 脚本或格式错误的 HTML 将生成此异常。使用 toStaticHTML 方法过滤动态内容,或显式创建 使用 createElement 等方法的元素和属性。更多 信息,请参阅http://go.microsoft.com/fwlink/?LinkID=247104。
我已经找到了一些解决这个问题的方法,问题似乎是 Windows 不喜欢你通过 innerHtml 或 outerHtml 调整内容,而是希望你以不同的方式来做。
这里的第一个问题是我有如下代码:
$.mobile.changePage(
"#loginPage", {
changeHash: "false"
}
);
基本上这会将我的页面更改为 id loginPage。 changePage 将使用 innerHtml,因此我无法访问它。
我尝试的一个解决方案是用一条规则包装我的代码:你必须知道你在做什么,所以我会为你忽略这个错误!
MSApp.execUnsafeLocalFunction(function () {
$.mobile.changePage(
"#loginPage", {
changeHash: "false"
}
);
});
这行得通,耶!还是不行?
似乎有超过 35 个页面更改,并且应用程序会在每一个页面上崩溃,除非我将 MSApp.execUnsafeLocalFunction() 包裹在它们周围。但我不会那样做。
另一个应该可行的解决方案是调整 jQuery 库文件。此处解释了完整的详细信息:Windows 8 using jquery for app development。这里的问题是它根本不起作用。我调整了每一条规则(断言块、assertUsableName 函数和 jQuery.support 函数),但它似乎不起作用。
所以目前,我没有花招。希望任何人都可以帮助我。
如果需要,我会提供更多代码。
【问题讨论】:
标签: jquery cordova jquery-mobile