【问题标题】:IOS 11.1 SecurityError (DOM Exception 18): Blocked attempt to use history.replaceState() to change session history URLIOS 11.1 SecurityError (DOM Exception 18): 阻止尝试使用 history.replaceState() 更改会话历史 URL
【发布时间】:2018-04-19 02:16:13
【问题描述】:

我正在使用 Cordova 和 jQuery Mobile 开发一个移动应用程序。我的应用程序在 iOS 11.0.3 上运行良好,然后当 iOS 11.1 发布时,我收到一个错误,无法点击任何链接。我在 safari 错误控制台中得到的错误是“SecurityError (DOM Exception 18): Blocked attempt to use history.replaceState() to change session history URL。”我添加了<meta http-equiv="Content-Security-Policy" content="default-src * data: blob: ws: wss: gap://ready file://*; style-src * 'unsafe-inline'; script-src * 'unsafe-inline' 'unsafe-eval'; connect-src * ws: wss:;">,因为我认为它可能是内容安全策略的一部分,但我仍然收到同样的错误。我正在使用 jQuery Mobile 1.4.5 和 jQuery 2.1.1。

【问题讨论】:

  • 我们在使用 Cordova 的 Angular 1.7 应用程序上遇到了同样的问题。引入 11.1 后,我们的应用程序已停止工作。我们在阅读这篇文章之前添加了描述的元标记,但它并没有解决问题。

标签: javascript jquery ios cordova jquery-mobile


【解决方案1】:

请更新 angular.js 文件中的以下值。

旧值:

this.$$absUrl = appBaseNoFile + this.$$url.substr(1); 

新价值:

this.$$absUrl = appBaseNoFile + this.$$url;

ios11 会因此报错:file:/// != file://

【讨论】:

  • 我没有使用 AngularJS。我为此使用 jQuery Mobile。您还有什么其他建议可以使用吗?
  • 有没有比修改核心角度更好的解决方案来解决这个问题?
【解决方案2】:

我也有同样的问题。

禁用 html5 模式对我有用(因为我没有使用路由或状态提供程序)

【讨论】:

  • 你是如何禁用 html5 模式的?
  • 我认为它对你不起作用,因为它只适用于 angular.js;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-14
  • 2015-10-09
  • 2014-05-12
  • 2012-02-10
  • 1970-01-01
相关资源
最近更新 更多