3

页面加载时没有任何图像仅在 IE11 上显示,但是当我们间歇性地调整浏览器大小(1/3 加载)时会相应地刷新它们。我们无法使用任何其他浏览器复制此内容。srcset 本身可以很好地处理静态内容。

这是一个在 IE11 中不起作用的 Plunker 示例

或者快速简单,我们正在使用的实际 img html:

<img data-ng-srcset="{{::image.url}}, {{::image.url2x}}" alt="{{::image.name}}"/>

图像或周围的 div没有应用任何过渡、阴影或不透明度。

html 可以很好地通过角度传递并正确重写 srcset 属性。图像只是没有出现,只有 alt 标签。想知道这是否可能是由于它的间歇性而导致的调用堆栈问题,可能是在 Angular 完成摘要或其他内容之前加载 Picturefill 的竞争条件。

提前干杯!

4

2 回答 2

1

如果您在循环中使用 PictureFill 并且在特定情况下(不是在应用程序的所有图像上),解决方法是在加载最后一个项目后调用直接从 HTML 启动 PictureFill 的函数(这不是最佳做法,但修复IE11问题):

<picture><!-- Your image --></picture>
<span ng-if="$last">
    {{ controllerAlias.launchPictureFill() }}
</span>
于 2015-11-04T10:13:59.507 回答
0

遇到了这个作为解决方案: http: //tech.endeepak.com/blog/2014/05/03/waiting-for-angularjs-digest-cycle/

var waitForRenderAndDoSomething = function() {
    if($http.pendingRequests.length > 0) {
        $timeout(waitForRenderAndDoSomething); // Wait for all templates to be loaded
    } else {
        $window.picturefill();
    }
}

$timeout(waitForRenderAndDoSomething);

博客文章描述的唯一问题是在这里,所以如果有人有更好的,请告诉我:

$http.pendingRequests 应该仅用于调试目的。如果 Angular 团队决定删除它,您可以使用此链接中建议的 http 拦截器来实现相同的功能。

于 2015-10-19T06:09:08.097 回答