【问题标题】:Why are iFrames not being loaded in Safari on some pages?为什么 iFrame 在某些页面上没有加载到 Safari 中?
【发布时间】:2016-08-12 04:28:36
【问题描述】:

我们在其中一个 Intranet 页面上遇到了一个问题,其中 iFrame 没有加载 head 或 html 代码。

该问题仅发生在 Safari(El Capitan、Yosemite 和 iPhone)中,并且仅发生在一个特定页面上。检查 html 时,我们可以看到 iframe 代码,但是当我们展开 #document 部分时,html 标记为空。

在控制台中没有显示错误。我们唯一注意到的是加载的数据明显减少,调用次数减少了大约 15 次。

谁能告诉我们什么可能导致 iframe 无法正确加载?这似乎是一个时间问题,因为我们可以在文档准备好之后使用 javascript 将 iframe 标签插入到一个空的 div 中。

谢谢!

编辑: 示例 iFrame 代码:

<iframe allowfullscreen="true" src="https://www.youtube.com/embed/[YOUTUBEID]?rel=0&wmode=opaque" frameborder="0"></iframe>

【问题讨论】:

  • iframe 中的内容是从您的域加载的吗?还是不同的?
  • @JohnConde iframe 实际上只是 youtube 嵌入代码。我们使用哪个视频似乎并不重要,它们似乎都失败了。我在问题中放置了一个 iframe 代码示例。

标签: html ios macos iframe safari


【解决方案1】:

我知道问题很老,但您是否尝试添加 setTimeout 来附加 iframe 代码或添加 onload 事件?

setTimeout(function() {
    div.innerHTML = '<iframe allowfullscreen="true" src="https://www.youtube.com/embed/[YOUTUBEID]?rel=0&wmode=opaque" frameborder="0"></iframe>';

    div.querySelector("iframe").addEventListener("load", function() {
      console.warn("Video loaded");
      div.querySelector("iframe").focus();
    });
}, 100);

【讨论】:

  • 您在发布之前尝试过代码吗?双引号是不正确的,会导致错误。
  • 你是对的,这是固定的!我有一个类似的问题,即 Youtube 和 Vimeo 嵌入没有正确加载 Safari(版本 10.1)并添加此代码修复它。
【解决方案2】:

是父域http://???目前我有一个类似的问题,我在 iFrame 中有一个 https url,但父站点使用的是不安全的 http 协议。尝试将 src="https://www.youtube.com/embed 更改为 src="http://www.youtube.com/embed 你有同样的问题吗?

【讨论】:

  • 不幸的是,这最终破坏了所有浏览器的 iframe。
猜你喜欢
  • 1970-01-01
  • 2021-09-28
  • 2014-04-03
  • 2016-01-31
  • 2010-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
相关资源
最近更新 更多