【问题标题】:Why iframe is not loaded for same url as page为什么没有为与页面相同的 url 加载 iframe
【发布时间】:2014-04-03 06:52:57
【问题描述】:

我只是在测试一些东西,遇到了有趣的iframe 行为。 在页面上我有以下iframe

<iframe src="/Wizard/Start"></iframe>

现在,如果iframesrc(.../Wizard/Start) 页面的url 相同,则iframe 不会加载内容,只是保持空白,并且没有错误、警告或任何报告。

我可以看到这是设计使然,在所有浏览器中的行为都相同。

为什么?关于这种行为的任何官方文档?

【问题讨论】:

  • 尝试使用某种网络分析器,并检查实际加载的 URL(按 F12 进入调试控制台)
  • 没有加载url,看来如果浏览器遇到带有url=pageurl的iframe就忽略进一步处理
  • 可能,这样做的原因是为了防止无限递归,但我找不到关于这个主题的任何官方信息
  • 老兄!我查了一下,任何浏览器都没有请求,你懂英文吗?
  • 我认为这是一个公平的假设(阻塞递归)

标签: html iframe


【解决方案1】:

这确实是指定的行为。您的问题的答案在此文档中:

http://www.w3.org/TR/WD-frames-970331

在“无限递归”部分它说:

防止无限递归。任何试图将其任何祖先使用的 URL 分配为其 SRC 的框架都被视为具有 根本没有 SRC URL(基本上是一个空白框架)。这并不能阻止所有 恶意文档,但它消除了其中的一类麻烦。

据我所知,该文件可追溯到 1997 年,但尚未被取代。

【讨论】:

  • Chrome 39 允许我使用具有相同 url 的 src,但 IE11 和 Firefox 33 不允许。
  • 这种设计是否只在Firefox和IE上实现?
  • @David,对,但是 Chrome 不允许在 iframe 中使用它。换句话说,在 Chrome 中,只允许一级递归。
【解决方案2】:

你的意思是你正在加载abc页面的“abc”页面的iframe??

_____________________
|                    |
|      IFrame        |
---------------------|
|                    |
|       Page         |
|                    |
_____________________

这里 iframe 再次指向同一个页面,对吗?看到它不会工作,因为它变成了无限循环..

您正在尝试在 iframe 中加载相同的页面.. 意味着 iframe 的内容再次包含另一个 iframe,该 iframe 再次指向相同的页面,该页面再次具有 iframe.. 所以它将是无限循环,这就是为什么它不会工作..

页面"xyz"可以包含"abc"的iframe,不会有问题

【讨论】:

  • 是的,这正是我正在做的。
  • 关于这个主题的任何官方信息,W3C,......比如“你不能将 src 放在与原始 url 相同的 iframe 上”,或者类似的东西?
  • 我不知道..但我得到了你的情况,这就是为什么告诉你..并告诉你它不显示的原因..我找到另一个stackoverflow示例供你检查stackoverflow.com/questions/14223628/…这是我告诉你的..
猜你喜欢
  • 2020-10-11
  • 1970-01-01
  • 2016-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-15
  • 2020-10-01
  • 1970-01-01
相关资源
最近更新 更多