首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE 10不渲染

IE 10不渲染
EN

Stack Overflow用户
提问于 2015-06-02 18:35:14
回答 1查看 1.2K关注 0票数 0

这是在一个角度应用程序,但我相信错误只存在于IE,因为与iframe和src属性有关。它在Chrome中渲染得很好。这是一个很大的应用程序,所以很难在弹琴中将错误竖起。这是相关的部分。

html/角标记:

代码语言:javascript
复制
  <div ng-repeat="form in formsToPrint">
     <h5>{{ form.FormName }} - {{ form.PageStatus }}</h5>
     <iframe ng-if="form.FormId != '9' && form.FormId != '10'"
           ng-src="{{ form.PageSrcUrl }}"
           print-iframe seamless="seamless"></iframe>
      <div ng-if="form.FormId == '9'" ng-repeat="srp in srpsToPrint">
          <h5>{{ srp.SrpCode }} - {{ srp.PageStatus }}</h5>
          <iframe ng-src="{{ srp.PageSrcUrl }}"
                    print-iframe seamless="seamless"></iframe>
      </div>
      <div ng-if="form.FormId == '10'" ng-repeat="srp in localPackagesToPrint">
          <h5>{{ srp.SrpCode }} - {{ srp.PageStatus }}</h5>
          <iframe ng-src="{{ srp.PageSrcUrl }}"
                    print-iframe seamless="seamless"></iframe>
      </div>
    </div>

角打印-iframe指令:

代码语言:javascript
复制
  .directive("printIframe", function() {
    return {
        link: function(scope, element, attr) {
            element.on("load", function() {
                var self = this,
                    timeout = 8000;
                if (self.src.indexOf("#/forms/8") !== -1
                    || self.src.indexOf("#/forms/5") !== -1
                    || self.src.indexOf("#/forms/36") !== -1
                    || self.src.indexOf("#/forms/9") !== -1
                    || self.src.indexOf("#/forms/10") !== -1
                    || self.src.indexOf("#/forms/19") !== -1
                    || self.src.indexOf("#/forms/37") !== -1
                    || self.src.indexOf("#/forms/38") !== -1) {
                    timeout = 8000;
                }

                setTimeout(function() {
                    $(element).contents().find("div.navbar").hide();
                    $(element).contents().find("div.binder-menu").hide();
                      $(element).contents().find("div.commonButtonBarContainer").hide();
                    $(element).contents().find("textarea.notes").closest("fieldset").hide();
                    $(".formContainer.print").height("100%");
                    $(".formContainer.print").width("100%");

                    var height = $(element).contents().outerHeight();
                    var width = $(element).contents().outerWidth();

                    if (height !== 0) {
                        $(element).height(height + 100);
                        $(element).width(width + 100);
                    }

                    $(element).contents().find(".formContainer").css({ "margin-left": "25px" });

                    $(element).show();

                    scope.showPrintWindow();
                    console.dir(scope);
                }, timeout);
            });
        }
      }
  })      

我无法检查控制台中的PageSrcUrl属性,但我认为它是正确的,因为它在Chrome中工作。DOCTYPE是正确声明的。

我发现的其他堆叠溢出问题并没有解决这个问题。

EN

回答 1

Stack Overflow用户

发布于 2015-06-02 18:40:44

帧和角总是产生一些搭扣。我发现的问题可以很容易地描述出来:

如果您在某个地方获得了一个iframe,并且使用角来设置源,那么浏览器将在iframe添加到DOM之后立即开始获取src。

这会导致问题,不仅仅是在IE中。我在我们的项目中找到的解决方案是添加一个专门的lazyiframe指令,它只在所有必需的属性都得到评估(而不是定义)之后才会将iframe添加到dom。

在您的示例中,这个问题很可能与ng-src有关,这可能导致以下情况:

  • 如果不使用src属性,则向dom添加iframe。
  • ie注册iframe并抓取源。
  • 失败的iframe并停止
  • src被更改,但由于IE错误,iframe没有重新加载。

如果你需要帮助制作懒虫指令,我可以提供更多的细节。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30603912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档