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

时间:2017-04-19 16:00:43

标签: html asp.net angularjs iframe angular-controller

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

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

Iframe loads page twice - is this really an issue?

解释图像上的点

  1. 第一次加载iframe页面的页面加载得很好(在这种情况下是一个ASP页面,但非ASP页面会出现这种情况)。
  2. 在F5页面刷新这是我的问题;页面加载但看起来它已中止。我试图找出原因。这甚至是个问题吗?它会导致在客户端/服务器上使用额外的资源吗?
  3. 然后页面加载正常。
  4. 我的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重新加载吗?

1 个答案:

答案 0 :(得分:-1)

修复是改变我们使用的角度JS(版本1.4.9)文件。在20365行附近,我们更换了以下内容

RewriteEngine On
RewriteRule ^(.*).html$ /content/themes/MrOSX/pages/(.*).php [L]

(增加10毫秒延迟)

attr.$set(name, value);

我们也改变了

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

<强>与

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

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

似乎问题在这里解决了:https://github.com/angular/angular.js/issues/9843但修复程序没有到位IMO。