相关文章: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:无法添加动态内容'一个'一个脚本试图 注入动态内容或以前动态修改的元素, 这可能不安全。例如,使用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函数),但它似乎没有用。
所以目前,我没有伎俩。希望有人能帮助我 如果需要,我会提供更多代码。
答案 0 :(得分:0)
好吧我自己弄清楚了,这真的很愚蠢。好的就在这里。
我做了一切正确的事,并通过在jQuery中的每个MSApp.execUnsafeLocalFunction()
周围包裹innerHtml
来修补jQuery文件。由于我正在使用jQuery Mobile,我还修补了jquery.mobile.js文件。
我的问题是我正在编辑错误的jquery文件。由于我在Visual Studio中导入了现有项目,因此我在/www/js/lib/jquery-mobile/
内部添加了jQuery文件,而我正在查看/www/jquery-mobile/
内部。
但补丁确实有效,对我有好处!