【问题标题】:internet explorer 8 truncates iframe contentsInternet Explorer 8 截断 iframe 内容
【发布时间】:2011-06-17 08:17:37
【问题描述】:

the demo is here
(无法在 jsfiddle 上重现它,因为它们不允许 ajax 达到足够的程度)

想象一下,你的页面上有 iframe

<iframe id="if1" src="/some/url">  </iframe>

/some/url 返回简单文本:&lt;form&gt;text&lt;/form&gt;&lt;br/&gt;

而且,一旦 iframe 被加载,您就可以从 Javascript 访问它的内容。

var io = document.getElementById('if1');
alert(io.contentWindow.document.body.innerHTML);

显然,普通浏览器会完全按原样返回内容。但是 internet explorer 8 返回了一些有趣的东西

text</FORM><BR>

即使 iframe 上的右键单击/查看源代码显示正确的内容:&lt;form&gt;text&lt;/form&gt;&lt;br/&gt;

我没有尝试其他 IE 版本。

你以前见过这个问题吗?这是我在将 webapp 适应 IE 时遇到的问题的一个非常简化的版本。基本上,我通过iframe(不是xhr,我需要上传文件)进行ajax请求,并返回html片段。
非常感谢!

【问题讨论】:

  • 嗯。您是否尝试过为内部框架提供完整、有效的结构 (&lt;html&gt;&lt;head&gt;....)?
  • 另外,我注意到您没有将content-type 与内部文档一起发送。这不应该有什么不同,因为 .html 会自动被解释为 HTML,但发送它仍然是一件好事
  • 同意@Pekka 的第一点——iframe 希望它的内容是一个完整的HTML 文档。
  • @Pekka 我正在发送 html 片段以响应 ajax 请求。但这是一个有趣的想法,我应该能够创建“假包装”。
  • @Pekka @Spudley 但是在 XHR 之前人们如何解决这个问题,当他们更频繁地使用 iframe 进行 ajax 时?

标签: javascript html internet-explorer iframe


【解决方案1】:

您是否尝试过使用 jQuery 来查看是否更好?

alert($('#if1').html());

【讨论】:

    【解决方案2】:

    在响应周围添加body 有效,有趣的是我没有马上想到。

    最好的是,无需更改前端:document.body.innerHTML 将返回没有body 标签的内容(自然)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多