【问题标题】:Iframe not loaded on Safari - jQueryiframe 未在 Safari 上加载 - jQuery
【发布时间】:2017-06-28 22:28:59
【问题描述】:

我在 Safari 上加载 iFrame 时遇到问题。

我有一个简单的 iFrame,它正在从 behance.net 加载资源。 iframe 在每个浏览器上都可以正常工作,除了 Safari 上的两个:macOS 和 iOS。

奇怪的是,如果您尝试点击几次刷新,一段时间后它开始工作,并显示 iframe,但再过一段时间,如果您继续点击刷新,它又会停止。显然它在下载 js 文件时遇到问题。环顾四周,似乎可能存在仅与 Safari 相关的缓存问题,但我并不完全确定。

这里有一个例子:https://codepen.io/rolfo85/pen/JJMvwo

<iframe src="https://www.behance.net/gallery/52836321/Wild-Thing-T-shirt-design?iframe=1" scrolling="yes" width="500" height="500"></iframe>

单击链接,如果您看到 iframe 正常工作,请清除 Safari 缓存并再次尝试。理论上它应该在你刷新缓存后停止工作。

你们知道如何解决这个问题吗?

提前致谢。

【问题讨论】:

标签: jquery ios iframe safari


【解决方案1】:

这是因为默认情况下,Safari 现在确实允许写入跨域 Cookie,因此如果 iFrame src 页面需要某种会话或 cookie 来加载页面,它将不会加载

因此,一种方法可以测试这是否也是您的问题。是复制 iframe 的 url 并在单独的选项卡中打开它,然后在上一个选项卡中重新加载代码笔,内容现在将按预期显示。

safari 论坛上对此进行了一些讨论

【讨论】:

    【解决方案2】:

    在我的例子中,为框架来自的域添加一个Content-Security-Policy(使用frame-src)允许框架加载:

      <meta http-equiv="Content-Security-Policy" 
         content="frame-src https://docs.google.com;">
    

    【讨论】:

      猜你喜欢
      • 2020-03-27
      • 2021-06-16
      • 2019-10-04
      • 1970-01-01
      • 2016-11-19
      • 1970-01-01
      • 2020-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多