【问题标题】:Changing pages on Cordova app (with jQuery Mobile) giving security issues on Windows更改 Cordova 应用程序(使用 jQuery Mobile)上的页面会在 Windows 上产生安全问题
【发布时间】: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 版本,似乎我遇到了无法通过innerHtmlouterHtml 添加内容的问题。

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

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


    【解决方案1】:

    好吧,我自己想通了,这真的很愚蠢。好了,到此为止。

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

    我的问题是我编辑了错误的 jquery 文件。因为我在 Visual Studio 中导入了现有项目,所以 jQuery 文件被添加到我的 /www/js/lib/jquery-mobile/ 中,而我正在查看 /www/jquery-mobile/

    但补丁确实有效,对我来说太好了!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多