更改Cordova应用程序(使用jQuery Mobile)上的页面,在Windows

时间:2016-04-18 14:53:56

标签: jquery cordova jquery-mobile

相关文章: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版本,似乎我遇到了无法通过innerHtmlouterHtml添加内容的问题。

至于错误,我得到了这个:

  

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函数),但它似乎没有用。

所以目前,我没有伎俩。希望有人能帮助我 如果需要,我会提供更多代码。

1 个答案:

答案 0 :(得分:0)

好吧我自己弄清楚了,这真的很愚蠢。好的就在这里。

我做了一切正确的事,并通过在jQuery中的每个MSApp.execUnsafeLocalFunction()周围包裹innerHtml来修补jQuery文件。由于我正在使用jQuery Mobile,我还修补了jquery.mobile.js文件。

我的问题是我正在编辑错误的jquery文件。由于我在Visual Studio中导入了现有项目,因此我在/www/js/lib/jquery-mobile/内部添加了jQuery文件,而我正在查看/www/jquery-mobile/内部。

但补丁确实有效,对我有好处!