在 IE5 怪癖模式下更改 iframe 的 src 会导致整页更改

Changing src of iframe in IE5 quirks mode cause full page change

我有加载到标准框架中的内容。我无法控制迫使浏览器进入 IE5 Quirks 模式的父框架。现在在我自己的内容中,我试图更改 iframe 的 src。我正在使用以下代码:

function loadIframe(iframeName, url) {
  var $iframe = $('#' + iframeName);
  if ( $iframe.length ) {
    $iframe.attr('src',url);   
    return false;
  }
  return true;
}
loadIframe('frameID', '../myhtmlpage.html');

问题是当我尝试将新的 src 加载到 iframe 时,整个 window 重新加载。我很确定这与 IE5Quirks 模式有关,因为如果我打开 IE Developer 工具并更改为标准模式,iframe 会按预期加载。如何才能顺利加载 iframe?

来自您的评论:

I don't have any control over the page that is being rendered in quirks mode; however, my content must be loaded into a standard frame on that page.

我不敢告诉你,你运气不好。

IE 不支持同一页面上各帧之间的混合渲染模式。如果主页处于 quirks 模式,则该页面中的所有框架或 iframe 也将处于 quirks 模式,即使它们被编写为符合标准。

这就是它的工作原理,您不能覆盖它。

我认为你的选择:

  1. 想办法升级父页面,让它不再需要 Quirks 模式。 (我明白这个选项可能不对你开放,但坦率地说,令人震惊的是任何人在 2015 年仍在使用怪癖模式;那些认为他们通过不升级任何过时的系统来省钱的经理需要被唤醒-向上调用)

  2. 降级您的页面,使其可以在怪异模式下工作。请注意,如果您使用任何现代浏览器功能,则可能无法使用此选项,因为 Quirks 模式将以与 IE5 兼容的名义禁用这些功能。

  3. 在弹出窗口 window 而不是框架中打开您的内容。这似乎是最实用的选择。几乎可以肯定,这将是最少的工作量(一个数量级或数量级)。它可能看起来不像在 iframe 中那样好,但至少它会起作用。