ng-srcset 图像最初不间歇性地在 IE11 中显示

ng-srcset images initially not displaying in IE11 intermittently

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

Here is a Plunker example 在 IE11 中不工作。

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

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

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

html 渲染良好,angular 传递并正确重写 srcset 属性。图片只是不出现,只有 alt 标签。想知道这是否可能是由于它的间歇性导致的调用堆栈问题,也许是在 angular 完成摘要或其他内容之前加载 Picturefill 的竞争条件。

提前干杯!

遇到这个作为解决方案: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);

博客 post 描述的唯一问题就在这里,所以如果有人有更好的地方请告诉我:

The $http.pendingRequests supposed to be used for debugging purpose only. If angular team decides to remove this, you can implement the same using http interceptors as suggested in this link.

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

<picture><!-- Your image --></picture>
<span ng-if="$last">
    {{ controllerAlias.launchPictureFill() }}
</span>