为什么我的 Iframe 加载它的页面两次?

Why does my Iframe load its page twice?

当我第一次登陆主页时,fiddler 显示 iframe 站点加载一次。当我 F5 或单击返回页面时,它似乎加载了两次站点。

Fiddler 显示第一次有一个符号表示它已中止。

解释图片上的点

  1. 页面第一次加载时 iframe 页面加载正常(在本例中它是一个 ASP 页面,但它发生在非 ASP 页面上)。
  2. F5 页面刷新,这是我的问题;页面已加载,但看起来已中止。我想弄清楚为什么。这甚至是一个问题吗?它会导致在 client/server 上使用额外的资源吗?
  3. 然后页面加载正常。

我的 IFrame 如下所示:

<div class="IframeContainer">
    <iframe class="IframeContent" ng-src="{{::trustSrc(ActiveLink)}}" iframe-onload="iframeLoadedCallBack()" frameborder="0" scrolling="no"></iframe>
</div>

我在 ActiveLink 上有一个观察者,它只从未定义变为已定义一次。 但是,我已将日志记录添加到函数 trustSrc 中,它似乎被调用了 3 次。我还不知道为什么。

Iframe 作为模板 URL 添加到 app.js 中,如下所示:

.state('Retrieved', {
      url: '/Retrieved',
      templateUrl: 'Scripts/AngularJs/Views/_GenericIframeContainer.html'
  })

我认为因为 iframe 使用 ng-src,所以变量会经过摘要循环并被评估。会不会是这个评估导致 iframe 重新加载?

解决方法是更改​​我们使用的 angular JS(版本 1.4.9)文件。在第 20365 行左右,我们替换了以下内容

attr.$set(name, value);

with(增加了 10 毫秒的延迟)

setTimeout(function () {
   attr.$set(name, value);
}, 10);

我们也改变了

if (msie && propName) element.prop(propName, attr[name]);

if (msie && propName && element[0].tagName !== 'IFRAME') element.prop(propName, attr[name]);

所以这可能只是 IE 的问题。相同的代码在 AngularJS 1.6.4

问题似乎已在此处解决:https://github.com/angular/angular.js/issues/9843 但 IMO 没有修复。