【问题标题】:Cordova iOS blank iframeCordova iOS 空白 iframe
【发布时间】:2016-04-12 11:53:55
【问题描述】:

在我正在开发的 Cordova 应用程序中,有一个 iframe。问题是在测试应用程序(模拟器和设备上)时,iframe 是空白的。但是,在 Android 上,iframe 可以完美运行。

iframe 在 Angular 指令中动态加载。

在指令链接函数中,以下代码用于加载 iframe 并将其附加到指令的元素:

var iframe = angular.element('<iframe class="widget" width="' + widgetWidth + '" height="' + widgetHeight + '"></iframe>');
iframe.attr('src', url);
element.append(iframe);

我也尝试过在以下几行中使用一些东西:

var iframe = document.createElement('iframe');
iframe.src = url;

这会导致类似以下内容(使用 Safari 网络检查器):

<iframe class="widget" width="384" height="505" src="http://hostname/correct/uri"></iframe>

在我的 index.html 文件中,我有以下设置:

<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-eval'; connect-src * 'unsafe-eval'; object-src 'self'; style-src * 'unsafe-inline';">

我的 cordova config.xml 中还有以下几行:

<access origin="*" subdomains="true" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />

Safari Web Inspector 中也没有错误或警告。

所以我的问题是,是否有一些技巧可以让 iFrame 在我缺少的 Cordova iOS 应用程序中工作。或者我当前的配置/代码有什么问题?

我正在使用 angularjs 1.5.3 并有 jquery 2.2.1(在 angularjs 之前加载)以防万一。

【问题讨论】:

  • 经过进一步测试,我还注意到 iframe 的 onload 事件从未被触发。以防万一有人对此有所了解。

标签: ios angularjs cordova iframe


【解决方案1】:

问题出在允许导航标签上。所以为了解决这个问题,我只需要将&lt;allow-navigation href="*" /&gt; 标签放入项目的 config.xml 文件中。

我在模拟器运行时通过 xcode 中的输出框找到了解决方案。有一条消息包含相关 iframe 的 url 以及有关“内部导航被拒绝”的内容。

【讨论】:

  • 不走运,问题是一样的。
  • 我必须 cordova platform rm ios, cordova platform add ios 才能使这个改变生效。 cordova cleancordova build 也可能有用。
  • 它对我有用。我只是想知道为什么他们没有开箱即用。
【解决方案2】:

您是否尝试过在 Content-Security-Policy 元标记中设置 child-src 和/或 frame-ancestors?这些可能还需要设置为 * 或更具限制性的内容,例如您正在使用的 iframe 源 URL。

content-security-policy.com 有相关信息

基于您的内容安全策略的示例:

<meta http-equiv="Content-Security-Policy" content="script-src * 'unsafe-eval'; child-src *; connect-src * 'unsafe-eval'; object-src 'self'; style-src * 'unsafe-inline';">

【讨论】:

  • 感谢您的链接。从链接中的信息来看,Safari 似乎不支持 child-src 和 frame-ancestors。无论如何我都试过了,但没有运气。
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 1970-01-01
  • 2021-12-30
  • 2021-09-15
  • 2015-10-17
  • 2023-03-30
相关资源
最近更新 更多